3 * vrrp_packet.h - vrrp protocol/packet definitions
5 * Copyright 2019-2020 Rubicon Communications, LLC (Netgate)
7 * SPDX-License-Identifier: Apache-2.0
10 #ifndef __included_vrrp_packet_h__
11 #define __included_vrrp_packet_h__
13 #include <vnet/vnet.h>
15 typedef CLIB_PACKED (struct
17 /* 4 bits for version (always 2 or 3), 4 bits for type (always 1) */
18 u8 vrrp_version_and_type;
21 /* priority of sender on this VR. value of 0 means a master is abdicating */
23 /* count of addresses being backed up by the VR */
25 /* max advertisement interval - first 4 bits are reserved and must be 0 */
26 u16 rsvd_and_max_adv_int;
31 typedef CLIB_PACKED (struct
33 ip4_header_t ip4; vrrp_header_t vrrp;
34 }) ip4_and_vrrp_header_t;
36 typedef CLIB_PACKED (struct
38 ip6_header_t ip6; vrrp_header_t vrrp;
39 }) ip6_and_vrrp_header_t;
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.
45 vrrp_adv_int_from_packet (vrrp_header_t * pkt)
47 return clib_net_to_host_u16 (pkt->rsvd_and_max_adv_int) & ((u16) 0x0fff);
50 #endif /* __included_vrrp_packet_h__ */
53 * fd.io coding-style-patch-verification: ON
56 * eval: (c-set-style "gnu")