]> git.puffer.fish Git - matthieu/frr.git/commitdiff
Unable to remove route-map from quagga
authorDaniel Walton <dwalton@cumulusnetworks.com>
Fri, 9 Sep 2016 20:24:31 +0000 (20:24 +0000)
committerDaniel Walton <dwalton@cumulusnetworks.com>
Fri, 9 Sep 2016 20:24:31 +0000 (20:24 +0000)
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-12816

pim was missing route-map hooks

pimd/pim_routemap.c
pimd/pimd.c
pimd/pimd.h
vtysh/extract.pl.in

index ced7c8748444ab35b62bb823dcfe6627801ce90b..adfd4fd2c36b746139f2685475dcc08f8515a4c2 100644 (file)
 
 #include "pimd.h"
 
+
+static void
+pim_route_map_mark_update (const char *rmap_name)
+{
+  // placeholder
+  return;
+}
+
+static void
+pim_route_map_add (const char *rmap_name)
+{
+  if (route_map_mark_updated(rmap_name, 0) == 0)
+    pim_route_map_mark_update(rmap_name);
+
+  route_map_notify_dependencies(rmap_name, RMAP_EVENT_MATCH_ADDED);
+}
+
+static void
+pim_route_map_delete (const char *rmap_name)
+{
+  if (route_map_mark_updated(rmap_name, 1) == 0)
+    pim_route_map_mark_update(rmap_name);
+
+  route_map_notify_dependencies(rmap_name, RMAP_EVENT_MATCH_DELETED);
+}
+
+static void
+pim_route_map_event (route_map_event_t event, const char *rmap_name)
+{
+  if (route_map_mark_updated(rmap_name, 0) == 0)
+    pim_route_map_mark_update(rmap_name);
+
+  route_map_notify_dependencies(rmap_name, RMAP_EVENT_MATCH_ADDED);
+}
+
 void
 pim_route_map_init (void)
 {
   route_map_init ();
   route_map_init_vty ();
+  route_map_add_hook (pim_route_map_add);
+  route_map_delete_hook (pim_route_map_delete);
+  route_map_event_hook (pim_route_map_event);
+}
+
+void
+pim_route_map_terminate (void)
+{
+  route_map_add_hook (NULL);
+  route_map_delete_hook (NULL);
+  route_map_event_hook (NULL);
+  route_map_finish();
 }
index 5b6824da5850cbd35c2e85de324c90e7679fd508..91d8d56afc0d6188737e6c6879ddd97ddb72baef 100644 (file)
@@ -87,6 +87,8 @@ static void pim_free()
 
   if (qpim_static_route_list)
      list_free(qpim_static_route_list);
+
+  pim_route_map_terminate();
 }
 
 void pim_init()
index 0a376aa9053546ed4e2d988ac7e8709d01363d77..6d48d83621561f84d429c940008205fe41ce6c76 100644 (file)
@@ -177,5 +177,6 @@ void pim_init(void);
 void pim_terminate(void);
 
 extern void pim_route_map_init (void);
+extern void pim_route_map_terminate(void);
 
 #endif /* PIMD_H */
index 31ab3b3ad8796e9f4b28a8b859bad4188f952c9f..7563daa506c33ad732ff11da4dbe9d79bd6429dd 100755 (executable)
@@ -121,7 +121,7 @@ foreach (@ARGV) {
             $protocol = "VTYSH_RIPD";
         }
         elsif ($file =~ /lib\/routemap\.c$/) {
-            $protocol = "VTYSH_RIPD|VTYSH_RIPNGD|VTYSH_OSPFD|VTYSH_OSPF6D|VTYSH_BGPD|VTYSH_ZEBRA";
+            $protocol = "VTYSH_RIPD|VTYSH_RIPNGD|VTYSH_OSPFD|VTYSH_OSPF6D|VTYSH_BGPD|VTYSH_ZEBRA|VTYSH_PIMD";
         }
         elsif ($file =~ /lib\/vrf\.c$/) {
             $protocol = "VTYSH_RIPD|VTYSH_RIPNGD|VTYSH_OSPFD|VTYSH_OSPF6D|VTYSH_BGPD|VTYSH_ZEBRA";
@@ -136,7 +136,7 @@ foreach (@ARGV) {
             if ($defun_array[1] =~ m/ipv6/) {
                 $protocol = "VTYSH_RIPNGD|VTYSH_OSPF6D|VTYSH_BGPD|VTYSH_ZEBRA";
             } else {
-                $protocol = "VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD|VTYSH_ZEBRA";
+                $protocol = "VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD|VTYSH_ZEBRA|VTYSH_PIMD";
             }
         }
         elsif ($file =~ /lib\/distribute\.c$/) {