]> git.proxmox.com Git - mirror_frr.git/blobdiff - vrrpd/vrrp_packet.c
vrrpd: const vrrp_lookup()
[mirror_frr.git] / vrrpd / vrrp_packet.c
index c3f2afba4cbfed4d9882adcb33d224d926e03c98..e4fee2d792cec4b98ce0ea5facd30f48226119c5 100644 (file)
 
 #include "vrrp.h"
 #include "vrrp_debug.h"
-#include "vrrp_memory.h"
 #include "vrrp_packet.h"
 
+DEFINE_MTYPE_STATIC(VRRPD, VRRP_PKT, "VRRP packet")
+
 /* clang-format off */
-const char *vrrp_packet_names[16] = {
+static const char *const vrrp_packet_names[16] = {
        [0] = "Unknown",
        [VRRP_TYPE_ADVERTISEMENT] = "ADVERTISEMENT",
        [2] = "Unknown",
@@ -85,14 +86,14 @@ static uint16_t vrrp_pkt_checksum(struct vrrp_pkt *pkt, size_t pktsize,
                ph.src = src->ipaddr_v6;
                inet_pton(AF_INET6, VRRP_MCASTV6_GROUP_STR, &ph.dst);
                ph.ulpl = htons(pktsize);
-               ph.next_hdr = 112;
+               ph.next_hdr = IPPROTO_VRRP;
                chksum = in_cksum_with_ph6(&ph, pkt, pktsize);
        } else if (!v6 && ((pkt->hdr.vertype >> 4) == 3)) {
                struct ipv4_ph ph = {};
 
                ph.src = src->ipaddr_v4;
                inet_pton(AF_INET, VRRP_MCASTV4_GROUP_STR, &ph.dst);
-               ph.proto = 112;
+               ph.proto = IPPROTO_VRRP;
                ph.len = htons(pktsize);
                chksum = in_cksum_with_ph4(&ph, pkt, pktsize);
        } else if (!v6 && ((pkt->hdr.vertype >> 4) == 2)) {
@@ -151,6 +152,11 @@ ssize_t vrrp_pkt_adver_build(struct vrrp_pkt **pkt, struct ipaddr *src,
        return pktsize;
 }
 
+void vrrp_pkt_free(struct vrrp_pkt *pkt)
+{
+       XFREE(MTYPE_VRRP_PKT, pkt);
+}
+
 size_t vrrp_pkt_adver_dump(char *buf, size_t buflen, struct vrrp_pkt *pkt)
 {
        if (buflen < 1)