From c171d6d8c9a607d0f3525b515e75c3fc1b91577a Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Tue, 12 Jul 2016 15:16:53 -0400 Subject: [PATCH] pimd: Refactor pim_mroute_add and _del The struct mfcctl should not be passed around. Pass around the channel oil instead. Signed-off-by: Donald Sharp --- pimd/pim_cmd.c | 8 ++++---- pimd/pim_mroute.c | 18 +++++++++--------- pimd/pim_mroute.h | 4 ++-- pimd/pim_oil.c | 2 +- pimd/pim_static.c | 4 ++-- pimd/pim_zebra.c | 6 +++--- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index 3924758dd..4e168bda0 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -1600,7 +1600,7 @@ static void mroute_add_all() struct channel_oil *c_oil; for (ALL_LIST_ELEMENTS_RO(qpim_channel_oil_list, node, c_oil)) { - if (pim_mroute_add(&c_oil->oil)) { + if (pim_mroute_add(c_oil)) { /* just log warning */ char source_str[100]; char group_str[100]; @@ -1619,7 +1619,7 @@ static void mroute_del_all() struct channel_oil *c_oil; for (ALL_LIST_ELEMENTS_RO(qpim_channel_oil_list, node, c_oil)) { - if (pim_mroute_del(&c_oil->oil)) { + if (pim_mroute_del(c_oil)) { /* just log warning */ char source_str[100]; char group_str[100]; @@ -1638,7 +1638,7 @@ static void static_mroute_add_all() struct static_route *s_route; for (ALL_LIST_ELEMENTS_RO(qpim_static_route_list, node, s_route)) { - if (pim_mroute_add(&s_route->c_oil.oil)) { + if (pim_mroute_add(&s_route->c_oil)) { /* just log warning */ char source_str[100]; char group_str[100]; @@ -1657,7 +1657,7 @@ static void static_mroute_del_all() struct static_route *s_route; for (ALL_LIST_ELEMENTS_RO(qpim_static_route_list, node, s_route)) { - if (pim_mroute_del(&s_route->c_oil.oil)) { + if (pim_mroute_del(&s_route->c_oil)) { /* just log warning */ char source_str[100]; char group_str[100]; diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c index 8048d4b3c..1b13d9086 100644 --- a/pimd/pim_mroute.c +++ b/pimd/pim_mroute.c @@ -557,7 +557,7 @@ int pim_mroute_del_vif(int vif_index) return 0; } -int pim_mroute_add(struct mfcctl *mc) +int pim_mroute_add(struct channel_oil *c_oil) { int err; int orig = 0; @@ -575,17 +575,17 @@ int pim_mroute_add(struct mfcctl *mc) * vif to be part of the outgoing list * in the case of a (*,G). */ - if (mc->mfcc_origin.s_addr == INADDR_ANY) + if (c_oil->oil.mfcc_origin.s_addr == INADDR_ANY) { - orig = mc->mfcc_ttls[mc->mfcc_parent]; - mc->mfcc_ttls[mc->mfcc_parent] = 1; + orig = c_oil->oil.mfcc_ttls[c_oil->oil.mfcc_parent]; + c_oil->oil.mfcc_ttls[c_oil->oil.mfcc_parent] = 1; } err = setsockopt(qpim_mroute_socket_fd, IPPROTO_IP, MRT_ADD_MFC, - mc, sizeof(*mc)); + &c_oil->oil, sizeof(c_oil->oil)); - if (mc->mfcc_origin.s_addr == INADDR_ANY) - mc->mfcc_ttls[mc->mfcc_parent] = orig; + if (c_oil->oil.mfcc_origin.s_addr == INADDR_ANY) + c_oil->oil.mfcc_ttls[c_oil->oil.mfcc_parent] = orig; if (err) { int e = errno; @@ -600,7 +600,7 @@ int pim_mroute_add(struct mfcctl *mc) return 0; } -int pim_mroute_del(struct mfcctl *mc) +int pim_mroute_del (struct channel_oil *c_oil) { int err; @@ -613,7 +613,7 @@ int pim_mroute_del(struct mfcctl *mc) return -1; } - err = setsockopt(qpim_mroute_socket_fd, IPPROTO_IP, MRT_DEL_MFC, mc, sizeof(*mc)); + err = setsockopt(qpim_mroute_socket_fd, IPPROTO_IP, MRT_DEL_MFC, &c_oil->oil, sizeof(c_oil->oil)); if (err) { int e = errno; zlog_warn("%s %s: failure: setsockopt(fd=%d,IPPROTO_IP,MRT_DEL_MFC): errno=%d: %s", diff --git a/pimd/pim_mroute.h b/pimd/pim_mroute.h index c1ce012e2..25532614a 100644 --- a/pimd/pim_mroute.h +++ b/pimd/pim_mroute.h @@ -169,8 +169,8 @@ int pim_mroute_socket_disable(void); int pim_mroute_add_vif(struct interface *ifp, struct in_addr ifaddr, unsigned char flags); int pim_mroute_del_vif(int vif_index); -int pim_mroute_add(struct mfcctl *mc); -int pim_mroute_del(struct mfcctl *mc); +int pim_mroute_add(struct channel_oil *c_oil); +int pim_mroute_del(struct channel_oil *c_oil); int pim_mroute_msg(int fd, const char *buf, int buf_size); diff --git a/pimd/pim_oil.c b/pimd/pim_oil.c index 8755818c0..3d9b7d11f 100644 --- a/pimd/pim_oil.c +++ b/pimd/pim_oil.c @@ -253,7 +253,7 @@ int pim_channel_add_oif(struct channel_oil *channel_oil, channel_oil->oil.mfcc_ttls[pim_ifp->mroute_vif_index] = PIM_MROUTE_MIN_TTL; - if (pim_mroute_add(&channel_oil->oil)) { + if (pim_mroute_add(channel_oil)) { if (PIM_DEBUG_MROUTE) { char group_str[100]; diff --git a/pimd/pim_static.c b/pimd/pim_static.c index 84b026be1..1931f1ee6 100644 --- a/pimd/pim_static.c +++ b/pimd/pim_static.c @@ -176,7 +176,7 @@ int pim_static_add(struct interface *iif, struct interface *oif, struct in_addr listnode_add(qpim_static_route_list, s_route); } - if (pim_mroute_add(&s_route->c_oil.oil)) + if (pim_mroute_add(&s_route->c_oil)) { char gifaddr_str[100]; char sifaddr_str[100]; @@ -251,7 +251,7 @@ int pim_static_del(struct interface *iif, struct interface *oif, struct in_addr /* If there are no more outputs then delete the whole route, otherwise set the route with the new outputs */ if (s_route->c_oil.oil_ref_count <= 0 ? - pim_mroute_del(&s_route->c_oil.oil) : pim_mroute_add(&s_route->c_oil.oil)) { + pim_mroute_del(&s_route->c_oil) : pim_mroute_add(&s_route->c_oil)) { char gifaddr_str[100]; char sifaddr_str[100]; pim_inet4_dump("", group, gifaddr_str, sizeof(gifaddr_str)); diff --git a/pimd/pim_zebra.c b/pimd/pim_zebra.c index b19b3941b..47515bcbc 100644 --- a/pimd/pim_zebra.c +++ b/pimd/pim_zebra.c @@ -448,7 +448,7 @@ pim_scan_individual_oil (struct channel_oil *c_oil) zlog_debug ("FF"); /* update kernel multicast forwarding cache (MFC) */ - if (pim_mroute_add(&c_oil->oil)) + if (pim_mroute_add(c_oil)) { /* just log warning */ struct interface *old_iif = pim_if_find_by_vif_index(old_vif_index); @@ -900,7 +900,7 @@ static int del_oif(struct channel_oil *channel_oil, channel_oil->oil.mfcc_ttls[pim_ifp->mroute_vif_index] = 0; - if (pim_mroute_add(&channel_oil->oil)) { + if (pim_mroute_add(channel_oil)) { char group_str[100]; char source_str[100]; pim_inet4_dump("", channel_oil->oil.mfcc_mcastgrp, group_str, sizeof(group_str)); @@ -917,7 +917,7 @@ static int del_oif(struct channel_oil *channel_oil, --channel_oil->oil_size; if (channel_oil->oil_size < 1) { - if (pim_mroute_del(&channel_oil->oil)) { + if (pim_mroute_del(channel_oil)) { /* just log a warning in case of failure */ char group_str[100]; char source_str[100]; -- 2.39.2