FD.io VPP  v21.06-3-gbb25fbf28
Vector Packet Processing
vrrp_packet.h
Go to the documentation of this file.
1 
2 /*
3  * vrrp_packet.h - vrrp protocol/packet definitions
4  *
5  * Copyright 2019-2020 Rubicon Communications, LLC (Netgate)
6  *
7  * SPDX-License-Identifier: Apache-2.0
8  *
9  */
10 #ifndef __included_vrrp_packet_h__
11 #define __included_vrrp_packet_h__
12 
13 #include <vnet/vnet.h>
14 
15 typedef CLIB_PACKED (struct
16  {
17  /* 4 bits for version (always 2 or 3), 4 bits for type (always 1) */
18  u8 vrrp_version_and_type;
19  /* VR ID */
20  u8 vr_id;
21  /* priority of sender on this VR. value of 0 means a master is abdicating */
22  u8 priority;
23  /* count of addresses being backed up by the VR */
24  u8 n_addrs;
25  /* max advertisement interval - first 4 bits are reserved and must be 0 */
26  u16 rsvd_and_max_adv_int;
27  /* checksum */
28  u16 checksum;
29  }) vrrp_header_t;
30 
31 typedef CLIB_PACKED (struct
32  {
33  ip4_header_t ip4; vrrp_header_t vrrp;
34  }) ip4_and_vrrp_header_t;
35 
36 typedef CLIB_PACKED (struct
37  {
38  ip6_header_t ip6; vrrp_header_t vrrp;
39  }) ip6_and_vrrp_header_t;
40 
41 /* the high 4 bits of the advertisement interval are "reserved" and
42  * should be ignored on reception. swap byte order and mask out those bits.
43  */
45 vrrp_adv_int_from_packet (vrrp_header_t * pkt)
46 {
47  return clib_net_to_host_u16 (pkt->rsvd_and_max_adv_int) & ((u16) 0x0fff);
48 }
49 
50 #endif /* __included_vrrp_packet_h__ */
51 
52 /*
53  * fd.io coding-style-patch-verification: ON
54  *
55  * Local Variables:
56  * eval: (c-set-style "gnu")
57  * End:
58  */
CLIB_PACKED
typedef CLIB_PACKED(struct { u8 vrrp_version_and_type;u8 vr_id;u8 priority;u8 n_addrs;u16 rsvd_and_max_adv_int;u16 checksum;}) vrrp_header_t
ip4
vl_api_ip4_address_t ip4
Definition: one.api:376
u16
unsigned short u16
Definition: types.h:57
ip4_header_t
Definition: ip4_packet.h:87
vr_id
u8 vr_id
Definition: vrrp.api:17
vrrp_adv_int_from_packet
static u16 vrrp_adv_int_from_packet(vrrp_header_t *pkt)
Definition: vrrp_packet.h:45
priority
i32 priority
Definition: ipsec.api:95
always_inline
#define always_inline
Definition: rdma_mlx5dv.h:23
ip6
vl_api_ip6_address_t ip6
Definition: one.api:424
ip6_header_t
Definition: ip6_packet.h:294
u8
unsigned char u8
Definition: types.h:56
vnet.h