]> git.puffer.fish Git - mirror/frr.git/commitdiff
*: delete ZEBRA_FLAG_SEG6*_ROUTE and add ZAPI_NEXTHOP_FLAG_SEG6*
authorHiroki Shirokura <slank.dev@gmail.com>
Fri, 23 Apr 2021 12:46:07 +0000 (12:46 +0000)
committerMark Stapp <mjs@voltanet.io>
Wed, 2 Jun 2021 14:24:48 +0000 (10:24 -0400)
https://github.com/FRRouting/frr/pull/5865#discussion_r597670225

As this comment says. ZEBRA_FLAG_XXX should not have been used.
To communicate SRv6 Route Information. A simple Nexthop Flag would
have been sufficient for SRv6 information. And I fixed the whole
thing that way.

Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
bgpd/bgp_zebra.c
lib/zclient.c
lib/zclient.h
sharpd/sharp_vty.c
tests/topotests/bgp_srv6l3vpn_to_bgp_vrf/r1/vrf10_rib.json
tests/topotests/bgp_srv6l3vpn_to_bgp_vrf/r1/vrf20_rib.json
tests/topotests/bgp_srv6l3vpn_to_bgp_vrf/r2/vrf10_rib.json
tests/topotests/bgp_srv6l3vpn_to_bgp_vrf/r2/vrf20_rib.json
zebra/zapi_msg.c

index d4a4ed23054b2452e2f6195965cdfd5450fd0897..e3a795c6f15382cdf491038a1c2853c394819d1e 100644 (file)
@@ -1408,7 +1408,7 @@ void bgp_zebra_announce(struct bgp_dest *dest, const struct prefix *p,
        }
 
        if (has_valid_sid && !(CHECK_FLAG(api.flags, ZEBRA_FLAG_EVPN_ROUTE)))
-               SET_FLAG(api.flags, ZEBRA_FLAG_SEG6_ROUTE);
+               SET_FLAG(api_nh->flags, ZAPI_NEXTHOP_FLAG_SEG6);
 
        is_add = (valid_nh_count || nhg_id) ? true : false;
 
index 4eef55e46919bb6565774935fedbb09059049c17..10dda5ba0efce1872971c1289bf7f097f06d796a 100644 (file)
@@ -459,11 +459,11 @@ enum zclient_send_status zclient_send_localsid(struct zclient *zclient,
                return zclient_route_send(ZEBRA_ROUTE_DELETE, zclient, &api);
 
        SET_FLAG(api.flags, ZEBRA_FLAG_ALLOW_RECURSION);
-       SET_FLAG(api.flags, ZEBRA_FLAG_SEG6LOCAL_ROUTE);
        SET_FLAG(api.message, ZAPI_MESSAGE_NEXTHOP);
 
        nh.type = NEXTHOP_TYPE_IFINDEX;
        nh.ifindex = oif;
+       SET_FLAG(nh.flags, ZAPI_NEXTHOP_FLAG_SEG6LOCAL);
        nexthop_add_srv6_seg6local(&nh, action, context);
 
        zapi_nexthop_from_nexthop(&api.nexthops[0], &nh);
@@ -1053,13 +1053,13 @@ int zapi_nexthop_encode(struct stream *s, const struct zapi_nexthop *api_nh,
                        stream_putc(s, api_nh->backup_idx[i]);
        }
 
-       if (CHECK_FLAG(api_flags, ZEBRA_FLAG_SEG6LOCAL_ROUTE)) {
+       if (CHECK_FLAG(nh_flags, ZAPI_NEXTHOP_FLAG_SEG6LOCAL)) {
                stream_putl(s, api_nh->seg6local_action);
                stream_write(s, &api_nh->seg6local_ctx,
                             sizeof(struct seg6local_context));
        }
 
-       if (CHECK_FLAG(api_flags, ZEBRA_FLAG_SEG6_ROUTE))
+       if (CHECK_FLAG(nh_flags, ZAPI_NEXTHOP_FLAG_SEG6))
                stream_write(s, &api_nh->seg6_segs,
                             sizeof(struct in6_addr));
 
@@ -1382,13 +1382,13 @@ int zapi_nexthop_decode(struct stream *s, struct zapi_nexthop *api_nh,
                        STREAM_GETC(s, api_nh->backup_idx[i]);
        }
 
-       if (CHECK_FLAG(api_flags, ZEBRA_FLAG_SEG6LOCAL_ROUTE)) {
+       if (CHECK_FLAG(api_nh->flags, ZAPI_NEXTHOP_FLAG_SEG6LOCAL)) {
                STREAM_GETL(s, api_nh->seg6local_action);
                STREAM_GET(&api_nh->seg6local_ctx, s,
                           sizeof(struct seg6local_context));
        }
 
-       if (CHECK_FLAG(api_flags, ZEBRA_FLAG_SEG6_ROUTE))
+       if (CHECK_FLAG(api_nh->flags, ZAPI_NEXTHOP_FLAG_SEG6))
                STREAM_GET(&api_nh->seg6_segs, s,
                           sizeof(struct in6_addr));
 
@@ -1810,15 +1810,18 @@ int zapi_nexthop_from_nexthop(struct zapi_nexthop *znh,
        if (nh->nh_srv6) {
                if (nh->nh_srv6->seg6local_action !=
                    ZEBRA_SEG6_LOCAL_ACTION_UNSPEC) {
+                       SET_FLAG(znh->flags, ZAPI_NEXTHOP_FLAG_SEG6LOCAL);
                        znh->seg6local_action = nh->nh_srv6->seg6local_action;
                        memcpy(&znh->seg6local_ctx,
                               &nh->nh_srv6->seg6local_ctx,
                               sizeof(struct seg6local_context));
                }
 
-               if (!sid_zero(&nh->nh_srv6->seg6_segs))
+               if (!sid_zero(&nh->nh_srv6->seg6_segs)) {
+                       SET_FLAG(znh->flags, ZAPI_NEXTHOP_FLAG_SEG6);
                        memcpy(&znh->seg6_segs, &nh->nh_srv6->seg6_segs,
                               sizeof(struct in6_addr));
+               }
        }
 
        return 0;
index c41d25133dc45764a07d2210330c7eb51ba09dc0..48de3425be24808eaae30ebf3948c381517feee9 100644 (file)
@@ -488,6 +488,8 @@ struct zapi_nexthop {
 #define ZAPI_NEXTHOP_FLAG_LABEL                0x02
 #define ZAPI_NEXTHOP_FLAG_WEIGHT       0x04
 #define ZAPI_NEXTHOP_FLAG_HAS_BACKUP   0x08 /* Nexthop has a backup */
+#define ZAPI_NEXTHOP_FLAG_SEG6         0x10
+#define ZAPI_NEXTHOP_FLAG_SEG6LOCAL    0x20
 
 /*
  * ZAPI Nexthop Group. For use with protocol creation of nexthop groups.
@@ -572,16 +574,6 @@ struct zapi_route {
  * offload situation.
  */
 #define ZEBRA_FLAG_OFFLOAD_FAILED     0x200
-/*
- * This flag tells Zebra that the route is a seg6 route and should
- * be treated specially.
- */
-#define ZEBRA_FLAG_SEG6_ROUTE         0x400
-/*
- * This flag tells Zebra that the route is a seg6local route and
- * should be treated specially.
- */
-#define ZEBRA_FLAG_SEG6LOCAL_ROUTE    0x800
 
        /* The older XXX_MESSAGE flags live here */
        uint32_t message;
index 7482a6da684aed48bacbb6bcbfede5128bc470eb..1a3c5f45028ceb508fe9898402d71cb0c0bd3737 100644 (file)
@@ -406,9 +406,7 @@ DEFPY (install_seg6_routes,
        sg.r.nhop.gate.ipv6 = seg6_nh6;
        sg.r.nhop.vrf_id = vrf->vrf_id;
        sg.r.nhop_group.nexthop = &sg.r.nhop;
-
        nexthop_add_srv6_seg6(&sg.r.nhop, &seg6_seg);
-       SET_FLAG(route_flags, ZEBRA_FLAG_SEG6_ROUTE);
 
        sg.r.vrf_id = vrf->vrf_id;
        sharp_install_routes_helper(&prefix, sg.r.vrf_id, sg.r.inst, 0,
@@ -505,7 +503,6 @@ DEFPY (install_seg6local_routes,
        sg.r.nhop.vrf_id = vrf->vrf_id;
        sg.r.nhop_group.nexthop = &sg.r.nhop;
        nexthop_add_srv6_seg6local(&sg.r.nhop, action, &ctx);
-       SET_FLAG(route_flags, ZEBRA_FLAG_SEG6LOCAL_ROUTE);
 
        sg.r.vrf_id = vrf->vrf_id;
        sharp_install_routes_helper(&sg.r.orig_prefix, sg.r.vrf_id, sg.r.inst, 0,
index 9219d9ad380070c0f94cb862448facb2a46e8bcd..fa05972a35cb903de35385b6e8ec2142589306a4 100644 (file)
@@ -37,7 +37,7 @@
       "installed": true,
       "table": 10,
       "internalStatus": 16,
-      "internalFlags": 1032,
+      "internalFlags": 8,
       "internalNextHopNum": 1,
       "internalNextHopActiveNum": 1,
       "nexthops": [
index cd4c7d50390a62a4b667a278ad42afd461b3a3bd..0155557242c6a8c616c39a9209db45a67c7eaeae 100644 (file)
@@ -11,7 +11,7 @@
       "installed": true,
       "table": 20,
       "internalStatus": 16,
-      "internalFlags": 1032,
+      "internalFlags": 8,
       "internalNextHopNum": 1,
       "internalNextHopActiveNum": 1,
       "nexthops": [
@@ -72,7 +72,7 @@
       "installed": true,
       "table": 20,
       "internalStatus": 16,
-      "internalFlags": 1032,
+      "internalFlags": 8,
       "internalNextHopNum": 1,
       "internalNextHopActiveNum": 1,
       "nexthops": [
index 5ae377c3990acedebf797bb40db85ecbe96c17b3..887eb2438602009eaba48d126f253ef4cb234c3f 100644 (file)
@@ -11,7 +11,7 @@
       "installed": true,
       "table": 10,
       "internalStatus": 16,
-      "internalFlags": 1032,
+      "internalFlags": 8,
       "internalNextHopNum": 1,
       "internalNextHopActiveNum": 1,
       "nexthops": [
@@ -72,7 +72,7 @@
       "installed": true,
       "table": 10,
       "internalStatus": 16,
-      "internalFlags": 1032,
+      "internalFlags": 8,
       "internalNextHopNum": 1,
       "internalNextHopActiveNum": 1,
       "nexthops": [
index ea1fe4c2a9db4ac3fbd02a3e8caa2c618ae43d46..c1185184238f41fea0a441e56555f19bd26885a9 100644 (file)
@@ -37,7 +37,7 @@
       "installed": true,
       "table": 20,
       "internalStatus": 16,
-      "internalFlags": 1032,
+      "internalFlags": 8,
       "internalNextHopNum": 1,
       "internalNextHopActiveNum": 1,
       "nexthops": [
index f6151463ce02205e1de033aa10984a5527cc71e4..06aaa706dcdaa167175f755db8f2991aff861989 100644 (file)
@@ -1748,7 +1748,7 @@ static bool zapi_read_nexthops(struct zserv *client, struct prefix *p,
                                           &api_nh->labels[0]);
                }
 
-               if (CHECK_FLAG(flags, ZEBRA_FLAG_SEG6LOCAL_ROUTE)
+               if (CHECK_FLAG(api_nh->flags, ZAPI_NEXTHOP_FLAG_SEG6LOCAL)
                    && api_nh->type != NEXTHOP_TYPE_BLACKHOLE) {
                        if (IS_ZEBRA_DEBUG_RECV)
                                zlog_debug("%s: adding seg6local action %s",
@@ -1761,7 +1761,7 @@ static bool zapi_read_nexthops(struct zserv *client, struct prefix *p,
                                                   &api_nh->seg6local_ctx);
                }
 
-               if (CHECK_FLAG(flags, ZEBRA_FLAG_SEG6_ROUTE)
+               if (CHECK_FLAG(api_nh->flags, ZAPI_NEXTHOP_FLAG_SEG6)
                    && api_nh->type != NEXTHOP_TYPE_BLACKHOLE) {
                        if (IS_ZEBRA_DEBUG_RECV)
                                zlog_debug("%s: adding seg6", __func__);