]> git.puffer.fish Git - mirror/frr.git/commitdiff
sharpd: install route supports nexthop-seg6 (step3)
authorHiroki Shirokura <slank.dev@gmail.com>
Fri, 18 Dec 2020 12:18:12 +0000 (21:18 +0900)
committerMark Stapp <mjs@voltanet.io>
Wed, 2 Jun 2021 14:24:48 +0000 (10:24 -0400)
We can install seg6 routes from shapd cli.
This is for the behaviour test(topotest) to ensure
SRv6 ZAPI is working fine.

NEW-CLI:
sharp install routes 1::1 nexthop-seg6 2001::1 encap a::

Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
sharpd/sharp_vty.c

index c580338f33aa01a8a0d78457d228353c7b07b806..5997e5e312bf28edd39d684f8ae97bfa0df24ca6 100644 (file)
@@ -197,7 +197,8 @@ DEFPY (install_routes,
              End_X$seg6l_endx X:X::X:X$seg6l_endx_nh6|\
              End_T$seg6l_endt (1-4294967295)$seg6l_endt_table|\
              End_DX4$seg6l_enddx4 A.B.C.D$seg6l_enddx4_nh4|\
-             End_DT6$seg6l_enddt6 (1-4294967295)$seg6l_enddt6_table>>\
+             End_DT6$seg6l_enddt6 (1-4294967295)$seg6l_enddt6_table>|\
+          nexthop-seg6$nh_seg6 X:X::X:X$seg6_nh6 encap X:X::X:X$seg6_seg>\
          [backup$backup <A.B.C.D$backup_nexthop4|X:X::X:X$backup_nexthop6>] \
          (1-1000000)$routes [instance (0-255)$instance] [repeat (2-1000)$rpt] [opaque WORD]",
        "Sharp routing Protocol\n"
@@ -223,6 +224,10 @@ DEFPY (install_routes,
        "V4 Nexthop address to use\n"
        "SRv6 End.DT6 function to use\n"
        "Redirect table id to use\n"
+       "Nexthop-seg6 to use\n"
+       "V6 Nexthop address to use\n"
+       "Encap mode\n"
+       "Segment List to use\n"
        "Backup nexthop to use(Can be an IPv4 or IPv6 address)\n"
        "Backup V4 Nexthop address to use\n"
        "Backup V6 Nexthop address to use\n"
@@ -336,6 +341,14 @@ DEFPY (install_routes,
                sg.r.nhop_group.nexthop = &sg.r.nhop;
                nexthop_add_seg6local(&sg.r.nhop, action, &ctx);
                SET_FLAG(route_flags, ZEBRA_FLAG_SEG6LOCAL_ROUTE);
+       } else if (nh_seg6) {
+               sg.r.nhop.type = NEXTHOP_TYPE_IPV6;
+               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_seg6(&sg.r.nhop, &seg6_seg);
+               SET_FLAG(route_flags, ZEBRA_FLAG_SEG6_ROUTE);
        } else {
                if (nexthop4.s_addr != INADDR_ANY) {
                        sg.r.nhop.gate.ipv4 = nexthop4;