From a7762e076597867bb75c8a60fb184f924035ed2e Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Mon, 7 Nov 2016 15:45:40 -0500 Subject: [PATCH] pimd: Modify pim_parse_addr_source to use 'struct prefix_sg' Modify the pim_parse_addr_source function to take a 'struct prefix_sg' and to fill in the src data. Signed-off-by: Donald Sharp --- pimd/pim_join.c | 9 ++++----- pimd/pim_tlv.c | 10 ++++------ pimd/pim_tlv.h | 2 +- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/pimd/pim_join.c b/pimd/pim_join.c index 15d73fd1bd..3185b60108 100644 --- a/pimd/pim_join.c +++ b/pimd/pim_join.c @@ -302,7 +302,6 @@ int pim_joinprune_recv(struct interface *ifp, /* Scan groups */ for (group = 0; group < msg_num_groups; ++group) { struct prefix_sg sg; - struct prefix msg_source_addr; uint8_t msg_source_flags; uint16_t msg_num_joined_sources; uint16_t msg_num_pruned_sources; @@ -348,7 +347,7 @@ int pim_joinprune_recv(struct interface *ifp, /* Scan joined sources */ for (source = 0; source < msg_num_joined_sources; ++source) { - addr_offset = pim_parse_addr_source (&msg_source_addr, + addr_offset = pim_parse_addr_source (&sg, &msg_source_flags, buf, pastend - buf); if (addr_offset < 1) { @@ -360,13 +359,13 @@ int pim_joinprune_recv(struct interface *ifp, recv_join(ifp, neigh, msg_holdtime, msg_upstream_addr.u.prefix4, sg.grp, - msg_source_addr.u.prefix4, + sg.src, msg_source_flags); } /* Scan pruned sources */ for (source = 0; source < msg_num_pruned_sources; ++source) { - addr_offset = pim_parse_addr_source (&msg_source_addr, + addr_offset = pim_parse_addr_source (&sg, &msg_source_flags, buf, pastend - buf); if (addr_offset < 1) { @@ -378,7 +377,7 @@ int pim_joinprune_recv(struct interface *ifp, recv_prune(ifp, neigh, msg_holdtime, msg_upstream_addr.u.prefix4, sg.grp, - msg_source_addr.u.prefix4, + sg.src, msg_source_flags); } diff --git a/pimd/pim_tlv.c b/pimd/pim_tlv.c index 3d48c05afc..dcded95035 100644 --- a/pimd/pim_tlv.c +++ b/pimd/pim_tlv.c @@ -568,7 +568,7 @@ pim_parse_addr_group (struct prefix_sg *sg, } int -pim_parse_addr_source(struct prefix *p, +pim_parse_addr_source(struct prefix_sg *sg, uint8_t *flags, const uint8_t *buf, int buf_size) @@ -612,9 +612,7 @@ pim_parse_addr_source(struct prefix *p, return -3; } - p->family = AF_INET; /* notice: AF_INET != PIM_MSG_ADDRESS_FAMILY_IPV4 */ - memcpy(&p->u.prefix4, addr, sizeof(struct in_addr)); - p->prefixlen = mask_len; + memcpy(&sg->src, addr, sizeof(struct in_addr)); /* RFC 4601: 4.9.1 Encoded Source and Group Address Formats @@ -626,9 +624,9 @@ pim_parse_addr_source(struct prefix *p, and 128 for IPv6 native). A router SHOULD ignore any messages received with any other mask length. */ - if (p->prefixlen != 32) { + if (mask_len != 32) { zlog_warn("%s: IPv4 bad source address mask: %d", - __PRETTY_FUNCTION__, p->prefixlen); + __PRETTY_FUNCTION__, mask_len); return -4; } diff --git a/pimd/pim_tlv.h b/pimd/pim_tlv.h index ee890d2895..ee7692ab80 100644 --- a/pimd/pim_tlv.h +++ b/pimd/pim_tlv.h @@ -119,7 +119,7 @@ int pim_parse_addr_ucast (struct prefix *p, int pim_parse_addr_group (struct prefix_sg *sg, const uint8_t *buf, int buf_size); -int pim_parse_addr_source(struct prefix *p, +int pim_parse_addr_source(struct prefix_sg *sg, uint8_t *flags, const uint8_t *buf, int buf_size); -- 2.39.5