]> git.puffer.fish Git - matthieu/frr.git/commitdiff
ospf6d: use `zclient->nexthop_update`
authorDavid Lamparter <equinox@opensourcerouting.org>
Tue, 29 Nov 2022 11:09:45 +0000 (12:09 +0100)
committerDavid Lamparter <equinox@opensourcerouting.org>
Mon, 20 Nov 2023 10:28:23 +0000 (11:28 +0100)
Same as before.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
ospf6d/ospf6_zebra.c

index 8bd0d8f0b58bc3232780dfacc9dbb324602aa35d..3245578b07f298b522e38e6680025bbcd49e83c2 100644 (file)
@@ -147,30 +147,22 @@ void ospf6_zebra_import_default_route(struct ospf6 *ospf6, bool unreg)
                         __func__);
 }
 
-static int ospf6_zebra_import_check_update(ZAPI_CALLBACK_ARGS)
+static void ospf6_zebra_import_check_update(struct vrf *vrf,
+                                           struct prefix *matched,
+                                           struct zapi_route *nhr)
 {
        struct ospf6 *ospf6;
-       struct zapi_route nhr;
-       struct prefix matched;
 
-       ospf6 = ospf6_lookup_by_vrf_id(vrf_id);
+       ospf6 = (struct ospf6 *)vrf->info;
        if (ospf6 == NULL || !IS_OSPF6_ASBR(ospf6))
-               return 0;
-
-       if (!zapi_nexthop_update_decode(zclient->ibuf, &matched, &nhr)) {
-               zlog_err("%s[%u]: Failure to decode route", __func__,
-                        ospf6->vrf_id);
-               return -1;
-       }
+               return;
 
-       if (matched.family != AF_INET6 || matched.prefixlen != 0 ||
-           nhr.type == ZEBRA_ROUTE_OSPF6)
-               return 0;
+       if (matched->family != AF_INET6 || matched->prefixlen != 0 ||
+           nhr->type == ZEBRA_ROUTE_OSPF6)
+               return;
 
-       ospf6->nssa_default_import_check.status = !!nhr.nexthop_num;
+       ospf6->nssa_default_import_check.status = !!nhr->nexthop_num;
        ospf6_abr_nssa_type_7_defaults(ospf6);
-
-       return 0;
 }
 
 static int ospf6_zebra_if_address_update_add(ZAPI_CALLBACK_ARGS)
@@ -763,7 +755,6 @@ static zclient_handler *const ospf6_handlers[] = {
        [ZEBRA_INTERFACE_ADDRESS_DELETE] = ospf6_zebra_if_address_update_delete,
        [ZEBRA_REDISTRIBUTE_ROUTE_ADD] = ospf6_zebra_read_route,
        [ZEBRA_REDISTRIBUTE_ROUTE_DEL] = ospf6_zebra_read_route,
-       [ZEBRA_NEXTHOP_UPDATE] = ospf6_zebra_import_check_update,
 };
 
 void ospf6_zebra_init(struct event_loop *master)
@@ -773,6 +764,7 @@ void ospf6_zebra_init(struct event_loop *master)
                              array_size(ospf6_handlers));
        zclient_init(zclient, ZEBRA_ROUTE_OSPF6, 0, &ospf6d_privs);
        zclient->zebra_connected = ospf6_zebra_connected;
+       zclient->nexthop_update = ospf6_zebra_import_check_update;
 
        /* Install command element for zebra node. */
        install_element(VIEW_NODE, &show_ospf6_zebra_cmd);