]> git.proxmox.com Git - mirror_frr.git/blobdiff - ripngd/ripng_zebra.c
Merge pull request #3120 from opensourcerouting/remove-list-delete
[mirror_frr.git] / ripngd / ripng_zebra.c
index 283d8691a3db243ffc4596a4c243b545d03df8c6..a8cc9ee128b4977288fb71bf13c597b4455bb9b9 100644 (file)
@@ -23,7 +23,7 @@
 
 #include "command.h"
 #include "prefix.h"
-#include "table.h"
+#include "agg_table.h"
 #include "stream.h"
 #include "memory.h"
 #include "routemap.h"
@@ -37,7 +37,7 @@
 struct zclient *zclient = NULL;
 
 /* Send ECMP routes to zebra. */
-static void ripng_zebra_ipv6_send(struct route_node *rp, u_char cmd)
+static void ripng_zebra_ipv6_send(struct agg_node *rp, uint8_t cmd)
 {
        struct list *list = (struct list *)rp->info;
        struct zapi_route api;
@@ -54,7 +54,10 @@ static void ripng_zebra_ipv6_send(struct route_node *rp, u_char cmd)
 
        SET_FLAG(api.message, ZAPI_MESSAGE_NEXTHOP);
        for (ALL_LIST_ELEMENTS_RO(list, listnode, rinfo)) {
+               if (count >= MULTIPATH_NUM)
+                       break;
                api_nh = &api.nexthops[count];
+               api_nh->vrf_id = VRF_DEFAULT;
                api_nh->gate.ipv6 = rinfo->nexthop;
                api_nh->ifindex = rinfo->ifindex;
                api_nh->type = NEXTHOP_TYPE_IPV6_IFINDEX;
@@ -97,13 +100,13 @@ static void ripng_zebra_ipv6_send(struct route_node *rp, u_char cmd)
 }
 
 /* Add/update ECMP routes to zebra. */
-void ripng_zebra_ipv6_add(struct route_node *rp)
+void ripng_zebra_ipv6_add(struct agg_node *rp)
 {
        ripng_zebra_ipv6_send(rp, ZEBRA_ROUTE_ADD);
 }
 
 /* Delete ECMP routes from zebra. */
-void ripng_zebra_ipv6_delete(struct route_node *rp)
+void ripng_zebra_ipv6_delete(struct agg_node *rp)
 {
        ripng_zebra_ipv6_send(rp, ZEBRA_ROUTE_DELETE);
 }
@@ -411,8 +414,8 @@ static void ripng_zebra_connected(struct zclient *zclient)
 void zebra_init(struct thread_master *master)
 {
        /* Allocate zebra structure. */
-       zclient = zclient_new(master);
-       zclient_init(zclient, ZEBRA_ROUTE_RIPNG, 0);
+       zclient = zclient_new_notify(master, &zclient_options_default);
+       zclient_init(zclient, ZEBRA_ROUTE_RIPNG, 0, &ripngd_privs);
 
        zclient->zebra_connected = ripng_zebra_connected;
        zclient->interface_up = ripng_interface_up;