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
*/
44
always_inline
u16
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
src
plugins
vrrp
vrrp_packet.h
Generated on Sat Jan 8 2022 10:04:27 for FD.io VPP by
1.8.17