forked from Mirror/frr
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:
parent
bce0e64521
commit
a7762e0765
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue