]> git.puffer.fish Git - matthieu/frr.git/commitdiff
sharpd: Modify route install to allow v6 nexthops
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 5 Sep 2018 01:00:04 +0000 (21:00 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 6 Sep 2018 01:03:58 +0000 (21:03 -0400)
Allow the user to create a v4 route with a v6 nexthop.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
sharpd/sharp_vty.c
sharpd/sharp_zebra.c

index 956da9d4edd44baa4b13a4bcae40432346d0f987..9462eb575c602473cc48622264a917d27a1678dd 100644 (file)
@@ -81,13 +81,14 @@ DEFPY(watch_nexthop_v4, watch_nexthop_v4_cmd,
 
 DEFPY (install_routes,
        install_routes_cmd,
-       "sharp install routes A.B.C.D$start nexthop A.B.C.D$nexthop (1-1000000)$routes [instance (0-255)$instance]",
+       "sharp install routes A.B.C.D$start nexthop <A.B.C.D$nexthop4|X:X::X:X$nexthop6> (1-1000000)$routes [instance (0-255)$instance]",
        "Sharp routing Protocol\n"
        "install some routes\n"
        "Routes to install\n"
        "Address to start /32 generation at\n"
-       "Nexthop to use\n"
-       "Nexthop address\n"
+       "Nexthop to use(Can be an IPv4 or IPv6 address)\n"
+       "V4 Nexthop address to use\n"
+       "V6 Nexthop address to use\n"
        "How many to create\n"
        "Instance to use\n"
        "Instance\n")
@@ -107,8 +108,13 @@ DEFPY (install_routes,
        p.prefixlen = 32;
        p.u.prefix4 = start;
 
-       nhop.gate.ipv4 = nexthop;
-       nhop.type = NEXTHOP_TYPE_IPV4;
+       if (nexthop4.s_addr != INADDR_ANY) {
+               nhop.gate.ipv4 = nexthop4;
+               nhop.type = NEXTHOP_TYPE_IPV4;
+       } else {
+               memcpy(&nhop.gate.ipv6, &nexthop6, IPV6_MAX_BYTELEN);
+               nhop.type = NEXTHOP_TYPE_IPV6;
+       }
 
        zlog_debug("Inserting %ld routes", routes);
 
index fcb555170b8870d94c6422da6b370456d5a59db5..286f320874ca3a80727eec1770f0ad8593203348 100644 (file)
@@ -193,7 +193,7 @@ void route_add(struct prefix *p, uint8_t instance, struct nexthop *nh)
 
        api_nh = &api.nexthops[0];
        api_nh->vrf_id = VRF_DEFAULT;
-       api_nh->gate.ipv4 = nh->gate.ipv4;
+       api_nh->gate = nh->gate;
        api_nh->type = nh->type;
        api_nh->ifindex = nh->ifindex;
        api.nexthop_num = 1;