From: Donald Sharp Date: Mon, 7 Nov 2016 20:40:08 +0000 (-0500) Subject: pimd: Modify pim_parse_addr_group to use 'struct prefix_sg' X-Git-Tag: frr-3.0-branchpoint~64^2~10^2~122 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=bce0e645214306808047f3ffd321abaa844c3e97;p=matthieu%2Ffrr.git pimd: Modify pim_parse_addr_group to use 'struct prefix_sg' Modify the pim_parse_addr_group to use 'struct prefix_sg sg'. This is the first of 2 commits to clean up this parsing to be a bit better. Signed-off-by: Donald Sharp --- diff --git a/pimd/pim_assert.c b/pimd/pim_assert.c index fced5dcd47..ca21786aea 100644 --- a/pimd/pim_assert.c +++ b/pimd/pim_assert.c @@ -226,7 +226,7 @@ int pim_assert_recv(struct interface *ifp, struct in_addr src_addr, uint8_t *buf, int buf_size) { - struct prefix msg_group_addr; + struct prefix_sg sg; struct prefix msg_source_addr; struct pim_assert_metric msg_metric; int offset; @@ -241,7 +241,7 @@ int pim_assert_recv(struct interface *ifp, /* Parse assert group addr */ - offset = pim_parse_addr_group (&msg_group_addr, curr, curr_size); + offset = pim_parse_addr_group (&sg, curr, curr_size); if (offset < 1) { char src_str[INET_ADDRSTRLEN]; pim_inet4_dump("", src_addr, src_str, sizeof(src_str)); @@ -301,7 +301,7 @@ int pim_assert_recv(struct interface *ifp, char group_str[INET_ADDRSTRLEN]; pim_inet4_dump("", src_addr, neigh_str, sizeof(neigh_str)); pim_inet4_dump("", msg_source_addr.u.prefix4, source_str, sizeof(source_str)); - pim_inet4_dump("", msg_group_addr.u.prefix4, group_str, sizeof(group_str)); + pim_inet4_dump("", sg.grp, group_str, sizeof(group_str)); zlog_debug("%s: from %s on %s: (S,G)=(%s,%s) pref=%u metric=%u rpt_bit=%u", __PRETTY_FUNCTION__, neigh_str, ifp->name, source_str, group_str, @@ -314,7 +314,7 @@ int pim_assert_recv(struct interface *ifp, return dispatch_assert(ifp, msg_source_addr.u.prefix4, - msg_group_addr.u.prefix4, + sg.grp, msg_metric); } diff --git a/pimd/pim_join.c b/pimd/pim_join.c index 2dc9d91529..15d73fd1bd 100644 --- a/pimd/pim_join.c +++ b/pimd/pim_join.c @@ -301,14 +301,14 @@ int pim_joinprune_recv(struct interface *ifp, /* Scan groups */ for (group = 0; group < msg_num_groups; ++group) { - struct prefix msg_group_addr; + 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; int source; - addr_offset = pim_parse_addr_group (&msg_group_addr, + addr_offset = pim_parse_addr_group (&sg, buf, pastend - buf); if (addr_offset < 1) { return -5; @@ -337,11 +337,11 @@ int pim_joinprune_recv(struct interface *ifp, pim_inet4_dump("", src_addr, src_str, sizeof(src_str)); pim_inet4_dump("", msg_upstream_addr.u.prefix4, upstream_str, sizeof(upstream_str)); - pim_inet4_dump("", msg_group_addr.u.prefix4, + pim_inet4_dump("", sg.grp, group_str, sizeof(group_str)); - zlog_warn("%s: join/prune upstream=%s group=%s/%d join_src=%d prune_src=%d from %s on %s", + zlog_warn("%s: join/prune upstream=%s group=%s/32 join_src=%d prune_src=%d from %s on %s", __PRETTY_FUNCTION__, - upstream_str, group_str, msg_group_addr.prefixlen, + upstream_str, group_str, msg_num_joined_sources, msg_num_pruned_sources, src_str, ifp->name); } @@ -359,7 +359,7 @@ int pim_joinprune_recv(struct interface *ifp, recv_join(ifp, neigh, msg_holdtime, msg_upstream_addr.u.prefix4, - msg_group_addr.u.prefix4, + sg.grp, msg_source_addr.u.prefix4, msg_source_flags); } @@ -377,7 +377,7 @@ int pim_joinprune_recv(struct interface *ifp, recv_prune(ifp, neigh, msg_holdtime, msg_upstream_addr.u.prefix4, - msg_group_addr.u.prefix4, + sg.grp, msg_source_addr.u.prefix4, msg_source_flags); } diff --git a/pimd/pim_neighbor.h b/pimd/pim_neighbor.h index 3f5a121d4c..b5bd5f6244 100644 --- a/pimd/pim_neighbor.h +++ b/pimd/pim_neighbor.h @@ -26,6 +26,7 @@ #include "if.h" #include "linklist.h" +#include "prefix.h" #include "pim_tlv.h" diff --git a/pimd/pim_register.c b/pimd/pim_register.c index 017d21b1b7..229232fde4 100644 --- a/pimd/pim_register.c +++ b/pimd/pim_register.c @@ -102,17 +102,15 @@ pim_register_stop_recv (uint8_t *buf, int buf_size) { struct pim_upstream *upstream = NULL; struct prefix source; - struct prefix group; struct prefix_sg sg; int l; - l = pim_parse_addr_group (&group, buf, buf_size); + l = pim_parse_addr_group (&sg, buf, buf_size); buf += l; buf_size -= l; pim_parse_addr_ucast (&source, buf, buf_size); memset (&sg, 0, sizeof (struct prefix_sg)); sg.src = source.u.prefix4; - sg.grp = group.u.prefix4; if (PIM_DEBUG_PIM_REG) { diff --git a/pimd/pim_tlv.c b/pimd/pim_tlv.c index d083cd8f40..3d48c05afc 100644 --- a/pimd/pim_tlv.c +++ b/pimd/pim_tlv.c @@ -509,7 +509,7 @@ pim_parse_addr_ucast (struct prefix *p, } int -pim_parse_addr_group (struct prefix *p, +pim_parse_addr_group (struct prefix_sg *sg, const uint8_t *buf, int buf_size) { @@ -551,17 +551,15 @@ pim_parse_addr_group (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->grp.s_addr, addr, sizeof(struct in_addr)); addr += sizeof(struct in_addr); break; default: { - zlog_warn("%s: unknown group address encoding family=%d from", - __PRETTY_FUNCTION__, family); + zlog_warn("%s: unknown group address encoding family=%d mask_len=%d from", + __PRETTY_FUNCTION__, family, mask_len); return -4; } } diff --git a/pimd/pim_tlv.h b/pimd/pim_tlv.h index 3f1b7a34e7..ee890d2895 100644 --- a/pimd/pim_tlv.h +++ b/pimd/pim_tlv.h @@ -116,7 +116,7 @@ int pim_encode_addr_group (uint8_t *buf, afi_t afi, int bidir, int scope, struct int pim_parse_addr_ucast (struct prefix *p, const uint8_t *buf, int buf_size); -int pim_parse_addr_group (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,