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 <sharpd@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2016-11-07 15:45:40 -05:00
parent bce0e64521
commit a7762e0765
3 changed files with 9 additions and 12 deletions

View file

@ -302,7 +302,6 @@ int pim_joinprune_recv(struct interface *ifp,
/* Scan groups */ /* Scan groups */
for (group = 0; group < msg_num_groups; ++group) { for (group = 0; group < msg_num_groups; ++group) {
struct prefix_sg sg; struct prefix_sg sg;
struct prefix msg_source_addr;
uint8_t msg_source_flags; uint8_t msg_source_flags;
uint16_t msg_num_joined_sources; uint16_t msg_num_joined_sources;
uint16_t msg_num_pruned_sources; uint16_t msg_num_pruned_sources;
@ -348,7 +347,7 @@ int pim_joinprune_recv(struct interface *ifp,
/* Scan joined sources */ /* Scan joined sources */
for (source = 0; source < msg_num_joined_sources; ++source) { 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, &msg_source_flags,
buf, pastend - buf); buf, pastend - buf);
if (addr_offset < 1) { if (addr_offset < 1) {
@ -360,13 +359,13 @@ int pim_joinprune_recv(struct interface *ifp,
recv_join(ifp, neigh, msg_holdtime, recv_join(ifp, neigh, msg_holdtime,
msg_upstream_addr.u.prefix4, msg_upstream_addr.u.prefix4,
sg.grp, sg.grp,
msg_source_addr.u.prefix4, sg.src,
msg_source_flags); msg_source_flags);
} }
/* Scan pruned sources */ /* Scan pruned sources */
for (source = 0; source < msg_num_pruned_sources; ++source) { 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, &msg_source_flags,
buf, pastend - buf); buf, pastend - buf);
if (addr_offset < 1) { if (addr_offset < 1) {
@ -378,7 +377,7 @@ int pim_joinprune_recv(struct interface *ifp,
recv_prune(ifp, neigh, msg_holdtime, recv_prune(ifp, neigh, msg_holdtime,
msg_upstream_addr.u.prefix4, msg_upstream_addr.u.prefix4,
sg.grp, sg.grp,
msg_source_addr.u.prefix4, sg.src,
msg_source_flags); msg_source_flags);
} }

View file

@ -568,7 +568,7 @@ pim_parse_addr_group (struct prefix_sg *sg,
} }
int int
pim_parse_addr_source(struct prefix *p, pim_parse_addr_source(struct prefix_sg *sg,
uint8_t *flags, uint8_t *flags,
const uint8_t *buf, const uint8_t *buf,
int buf_size) int buf_size)
@ -612,9 +612,7 @@ pim_parse_addr_source(struct prefix *p,
return -3; return -3;
} }
p->family = AF_INET; /* notice: AF_INET != PIM_MSG_ADDRESS_FAMILY_IPV4 */ memcpy(&sg->src, addr, sizeof(struct in_addr));
memcpy(&p->u.prefix4, addr, sizeof(struct in_addr));
p->prefixlen = mask_len;
/* /*
RFC 4601: 4.9.1 Encoded Source and Group Address Formats 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 and 128 for IPv6 native). A router SHOULD ignore any messages
received with any other mask length. received with any other mask length.
*/ */
if (p->prefixlen != 32) { if (mask_len != 32) {
zlog_warn("%s: IPv4 bad source address mask: %d", zlog_warn("%s: IPv4 bad source address mask: %d",
__PRETTY_FUNCTION__, p->prefixlen); __PRETTY_FUNCTION__, mask_len);
return -4; return -4;
} }

View file

@ -119,7 +119,7 @@ int pim_parse_addr_ucast (struct prefix *p,
int pim_parse_addr_group (struct prefix_sg *sg, int pim_parse_addr_group (struct prefix_sg *sg,
const uint8_t *buf, const uint8_t *buf,
int buf_size); int buf_size);
int pim_parse_addr_source(struct prefix *p, int pim_parse_addr_source(struct prefix_sg *sg,
uint8_t *flags, uint8_t *flags,
const uint8_t *buf, const uint8_t *buf,
int buf_size); int buf_size);