]> git.proxmox.com Git - mirror_frr.git/commitdiff
pimd: Refactor pim_mroute_add and _del
authorDonald Sharp <sharpd@cumulusnetwroks.com>
Tue, 12 Jul 2016 19:16:53 +0000 (15:16 -0400)
committerDonald Sharp <sharpd@cumulusnetwroks.com>
Tue, 12 Jul 2016 19:16:53 +0000 (15:16 -0400)
The struct mfcctl should not be passed around.  Pass around
the channel oil instead.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_cmd.c
pimd/pim_mroute.c
pimd/pim_mroute.h
pimd/pim_oil.c
pimd/pim_static.c
pimd/pim_zebra.c

index 3924758ddb782c23045099666625f1b05ffab4ec..4e168bda0d0f5449cd98e8ac716cb85637d27e12 100644 (file)
@@ -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];
index 8048d4b3c70bd726953eb5b547cde5f7e4f319d3..1b13d90869c7f9fa42360d5eec538bc9d7a157cf 100644 (file)
@@ -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",
index c1ce012e2dfcd4c3d75ef6de3caa766ad3ac92b0..25532614ac9b9c52ef67e51bdfef6b9524cd7e2c 100644 (file)
@@ -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);
 
index 8755818c0f74e1eff68a4194f84b6e8eabc39b6e..3d9b7d11fe4859f280ab71231a376064473c0b02 100644 (file)
@@ -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];
index 84b026be11bdfa65a6353e96ccd3e7d33cea4dae..1931f1ee6c964290c316f6e8ed57d5b375410332 100644 (file)
@@ -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("<ifaddr?>", group, gifaddr_str, sizeof(gifaddr_str));
index b19b3941b12dd93748c1ec6eab77d84e6d4cc7ec..47515bcbca16b94139b6d0cbcda1fadd7f33f642 100644 (file)
@@ -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("<group?>", 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];