From ef4cc1ebfffaf74c303fd1b5c96d739f08766751 Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Thu, 6 Dec 2018 22:51:55 +0000 Subject: [PATCH] vrrpd: merge keepalived packet header Pick up some smartness from keepalived. Signed-off-by: Quentin Young --- vrrpd/vrrp_packet.c | 14 +++++++------- vrrpd/vrrp_packet.h | 27 ++++++++++++++++++++++----- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/vrrpd/vrrp_packet.c b/vrrpd/vrrp_packet.c index 4cbcd771f2..a5eb40fda8 100644 --- a/vrrpd/vrrp_packet.c +++ b/vrrpd/vrrp_packet.c @@ -35,16 +35,16 @@ struct vrrp_pkt *vrrp_pkt_build(uint8_t vrid, uint8_t prio, struct vrrp_pkt *pkt = XCALLOC(MTYPE_TMP, sizeof(struct vrrp_pkt) + addrsz * numip); - pkt->version = VRRP_VERSION; - pkt->type = VRRP_TYPE_ADVERTISEMENT; - pkt->vrid = vrid; - pkt->priority = prio; - pkt->rsvd = 0; - pkt->max_adver_int = max_adver_int; + pkt->hdr.version = VRRP_VERSION; + pkt->hdr.type = VRRP_TYPE_ADVERTISEMENT; + pkt->hdr.vrid = vrid; + pkt->hdr.priority = prio; + pkt->hdr.v3.rsvd = 0; + pkt->hdr.v3.adver_int = max_adver_int; for (uint8_t i = 0; i < numip; i++) memcpy(&pkt->addrs[i].v4, ips[i], addrsz); /* FIXME */ - pkt->cksum = 0; + pkt->hdr.chksum = 0; return pkt; } diff --git a/vrrpd/vrrp_packet.h b/vrrpd/vrrp_packet.h index 04116c6245..5ff08f95fe 100644 --- a/vrrpd/vrrp_packet.h +++ b/vrrpd/vrrp_packet.h @@ -26,15 +26,32 @@ #define VRRP_VERSION 3 #define VRRP_TYPE_ADVERTISEMENT 1 -struct vrrp_pkt { +/* + * Shared header for VRRPv2/v3 packets. + */ +struct vrrp_hdr { uint8_t version : 4; uint8_t type : 4; uint8_t vrid; uint8_t priority; - uint8_t num_ip; - uint16_t rsvd : 4; - uint16_t max_adver_int : 12; - uint16_t cksum; + uint8_t naddr; + union { + struct { + uint8_t auth_type; + /* advertisement interval (in sec) */ + uint8_t adver_int; + } v2; + struct { + /* advertisement interval (in centiseconds) */ + uint16_t rsvd : 4; + uint16_t adver_int : 12; + } v3; + }; + uint16_t chksum; +}; + +struct vrrp_pkt { + struct vrrp_hdr hdr; union { struct in_addr v4; struct in6_addr v6; -- 2.39.5