summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pimd/pim_join.c9
-rw-r--r--pimd/pim_tlv.c10
-rw-r--r--pimd/pim_tlv.h2
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);