summaryrefslogtreecommitdiff
path: root/bgpd/rfapi/rfapi.c
diff options
context:
space:
mode:
Diffstat (limited to 'bgpd/rfapi/rfapi.c')
-rw-r--r--bgpd/rfapi/rfapi.c326
1 files changed, 190 insertions, 136 deletions
diff --git a/bgpd/rfapi/rfapi.c b/bgpd/rfapi/rfapi.c
index e32b407ba2..99d26cf13c 100644
--- a/bgpd/rfapi/rfapi.c
+++ b/bgpd/rfapi/rfapi.c
@@ -36,13 +36,13 @@
#include "bgpd/bgpd.h"
#include "bgpd/bgp_ecommunity.h"
#include "bgpd/bgp_attr.h"
-#include "bgpd/bgp_mplsvpn.h"
#include "bgpd/rfapi/bgp_rfapi_cfg.h"
#include "bgpd/rfapi/rfapi.h"
#include "bgpd/rfapi/rfapi_backend.h"
#include "bgpd/bgp_route.h"
+#include "bgpd/bgp_mplsvpn.h"
#include "bgpd/bgp_aspath.h"
#include "bgpd/bgp_advertise.h"
#include "bgpd/bgp_vnc_types.h"
@@ -335,6 +335,9 @@ is_valid_rfd (struct rfapi_descriptor *rfd)
if (!rfd || rfd->bgp == NULL)
return 0;
+ if (CHECK_FLAG(rfd->flags, RFAPI_HD_FLAG_IS_VRF)) /* assume VRF/internal are valid */
+ return 1;
+
if (rfapi_find_handle (rfd->bgp, &rfd->vn_addr, &rfd->un_addr, &hh))
return 0;
@@ -357,6 +360,9 @@ rfapi_check (void *handle)
if (!rfd || rfd->bgp == NULL)
return EINVAL;
+ if (CHECK_FLAG(rfd->flags, RFAPI_HD_FLAG_IS_VRF)) /* assume VRF/internal are valid */
+ return 0;
+
if ((rc = rfapi_find_handle (rfd->bgp, &rfd->vn_addr, &rfd->un_addr, &hh)))
return rc;
@@ -1349,7 +1355,6 @@ rfapi_rfp_set_cb_methods (void *rfp_start_val,
/***********************************************************************
* NVE Sessions
***********************************************************************/
-
/*
* Caller must supply an already-allocated rfd with the "caller"
* fields already set (vn_addr, un_addr, callback, cookie)
@@ -1446,7 +1451,7 @@ rfapi_open_inner (
#define RFD_RTINIT(rh, ary) do {\
RFD_RTINIT_AFI(rh, ary, AFI_IP);\
RFD_RTINIT_AFI(rh, ary, AFI_IP6);\
- RFD_RTINIT_AFI(rh, ary, AFI_ETHER);\
+ RFD_RTINIT_AFI(rh, ary, AFI_L2VPN);\
} while(0)
RFD_RTINIT(rfd, rfd->rib);
@@ -1476,6 +1481,57 @@ rfapi_open_inner (
return 0;
}
+/* moved from rfapi_register */
+int
+rfapi_init_and_open(
+ struct bgp *bgp,
+ struct rfapi_descriptor *rfd,
+ struct rfapi_nve_group_cfg *rfg)
+{
+ struct rfapi *h = bgp->rfapi;
+ char buf_vn[BUFSIZ];
+ char buf_un[BUFSIZ];
+ afi_t afi_vn, afi_un;
+ struct prefix pfx_un;
+ struct route_node *rn;
+
+
+ rfapi_time (&rfd->open_time);
+
+ if (rfg->type == RFAPI_GROUP_CFG_VRF)
+ SET_FLAG(rfd->flags, RFAPI_HD_FLAG_IS_VRF);
+
+ rfapiRfapiIpAddr2Str (&rfd->vn_addr, buf_vn, BUFSIZ);
+ rfapiRfapiIpAddr2Str (&rfd->un_addr, buf_un, BUFSIZ);
+
+ vnc_zlog_debug_verbose ("%s: new RFD with VN=%s UN=%s cookie=%p",
+ __func__, buf_vn, buf_un, rfd->cookie);
+
+ if (rfg->type != RFAPI_GROUP_CFG_VRF) /* unclear if needed for VRF */
+ {
+ listnode_add (&h->descriptors, rfd);
+ if (h->descriptors.count > h->stat.max_descriptors)
+ {
+ h->stat.max_descriptors = h->descriptors.count;
+ }
+
+ /*
+ * attach to UN radix tree
+ */
+ afi_vn = family2afi (rfd->vn_addr.addr_family);
+ afi_un = family2afi (rfd->un_addr.addr_family);
+ assert (afi_vn && afi_un);
+ assert (!rfapiRaddr2Qprefix (&rfd->un_addr, &pfx_un));
+
+ rn = route_node_get (&(h->un[afi_un]), &pfx_un);
+ assert (rn);
+ rfd->next = rn->info;
+ rn->info = rfd;
+ rfd->un_node = rn;
+ }
+ return rfapi_open_inner (rfd, bgp, h, rfg);
+}
+
struct rfapi_vn_option *
rfapiVnOptionsDup (struct rfapi_vn_option *orig)
{
@@ -1669,11 +1725,17 @@ rfapi_query_inner (
{
char buf[BUFSIZ];
+ char *s;
prefix2str (&p, buf, BUFSIZ);
buf[BUFSIZ - 1] = 0; /* guarantee NUL-terminated */
vnc_zlog_debug_verbose ("%s(rfd=%p, target=%s, ppNextHop=%p)",
__func__, rfd, buf, ppNextHopEntry);
+
+ s = ecommunity_ecom2str(rfd->import_table->rt_import_list,
+ ECOMMUNITY_FORMAT_ROUTE_MAP, 0);
+ vnc_zlog_debug_verbose("%s rfd->import_table=%p, rfd->import_table->rt_import_list: %s",
+ __func__, rfd->import_table, s); XFREE (MTYPE_ECOMMUNITY_STR, s);
}
afi = family2afi (p.family);
@@ -1993,14 +2055,10 @@ rfapi_open (
struct prefix pfx_vn;
struct prefix pfx_un;
- struct route_node *rn;
int rc;
rfapi_handle hh = NULL;
int reusing_provisional = 0;
- afi_t afi_vn;
- afi_t afi_un;
-
{
char buf[2][INET_ADDRSTRLEN];
vnc_zlog_debug_verbose ("%s: VN=%s UN=%s", __func__,
@@ -2131,40 +2189,7 @@ rfapi_open (
if (!reusing_provisional)
{
- rfapi_time (&rfd->open_time);
-
- {
- char buf_vn[BUFSIZ];
- char buf_un[BUFSIZ];
-
- rfapiRfapiIpAddr2Str (vn, buf_vn, BUFSIZ);
- rfapiRfapiIpAddr2Str (un, buf_un, BUFSIZ);
-
- vnc_zlog_debug_verbose ("%s: new HD with VN=%s UN=%s cookie=%p",
- __func__, buf_vn, buf_un, userdata);
- }
-
- listnode_add (&h->descriptors, rfd);
- if (h->descriptors.count > h->stat.max_descriptors)
- {
- h->stat.max_descriptors = h->descriptors.count;
- }
-
- /*
- * attach to UN radix tree
- */
- afi_vn = family2afi (rfd->vn_addr.addr_family);
- afi_un = family2afi (rfd->un_addr.addr_family);
- assert (afi_vn && afi_un);
- assert (!rfapiRaddr2Qprefix (&rfd->un_addr, &pfx_un));
-
- rn = route_node_get (&(h->un[afi_un]), &pfx_un);
- assert (rn);
- rfd->next = rn->info;
- rn->info = rfd;
- rfd->un_node = rn;
-
- rc = rfapi_open_inner (rfd, bgp, h, rfg);
+ rc = rfapi_init_and_open(bgp, rfd, rfg);
/*
* This can fail only if the VN address is IPv6 and the group
* specified auto-assignment of RDs, which only works for v4,
@@ -3062,28 +3087,30 @@ DEFUN (debug_rfapi_show_nves,
DEFUN (
debug_rfapi_show_nves_vn_un,
debug_rfapi_show_nves_vn_un_cmd,
- "debug rfapi-dev show nves (vn|un) (A.B.C.D|X:X::X:X)", /* prefix also ok */
+ "debug rfapi-dev show nves <vn|un> <A.B.C.D|X:X::X:X>", /* prefix also ok */
DEBUG_STR
DEBUG_RFAPI_STR
SHOW_STR
"NVE Information\n"
- "Specify virtual network or underlay network interface\n"
- "IPv4 or IPv6 address\n")
+ "Specify virtual network\n"
+ "Specify underlay network interface\n"
+ "IPv4 address\n"
+ "IPv6 address\n")
{
struct prefix pfx;
- if (!str2prefix (argv[1], &pfx))
+ if (!str2prefix (argv[5]->arg, &pfx))
{
- vty_out (vty, "Malformed address \"%s\"%s", argv[1], VTY_NEWLINE);
+ vty_out (vty, "Malformed address \"%s\"%s", argv[5]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
if (pfx.family != AF_INET && pfx.family != AF_INET6)
{
- vty_out (vty, "Invalid address \"%s\"%s", argv[1], VTY_NEWLINE);
+ vty_out (vty, "Invalid address \"%s\"%s", argv[5]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
- if (*(argv[0]) == 'c')
+ if (argv[4]->arg[0] == 'u')
{
rfapiPrintMatchingDescriptors (vty, NULL, &pfx);
}
@@ -3126,13 +3153,16 @@ test_nexthops_callback (
DEFUN (debug_rfapi_open,
debug_rfapi_open_cmd,
- "debug rfapi-dev open vn (A.B.C.D|X:X::X:X) un (A.B.C.D|X:X::X:X)",
+ "debug rfapi-dev open vn <A.B.C.D|X:X::X:X> un <A.B.C.D|X:X::X:X>",
DEBUG_STR
DEBUG_RFAPI_STR
"rfapi_open\n"
"indicate vn addr follows\n"
- "virtual network interface address\n"
- "indicate xt addr follows\n" "underlay network interface address\n")
+ "virtual network interface IPv4 address\n"
+ "virtual network interface IPv6 address\n"
+ "indicate xt addr follows\n"
+ "underlay network interface IPv4 address\n"
+ "underlay network interface IPv6 address\n")
{
struct rfapi_ip_addr vn;
struct rfapi_ip_addr un;
@@ -3143,13 +3173,13 @@ DEFUN (debug_rfapi_open,
/*
* Get VN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[0], &vn)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[4]->arg, &vn)))
return rc;
/*
* Get UN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[1], &un)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[6]->arg, &un)))
return rc;
rc = rfapi_open (rfapi_get_rfp_start_val_by_bgp (bgp_get_default ()),
@@ -3168,13 +3198,16 @@ DEFUN (debug_rfapi_open,
DEFUN (debug_rfapi_close_vn_un,
debug_rfapi_close_vn_un_cmd,
- "debug rfapi-dev close vn (A.B.C.D|X:X::X:X) un (A.B.C.D|X:X::X:X)",
+ "debug rfapi-dev close vn <A.B.C.D|X:X::X:X> un <A.B.C.D|X:X::X:X>",
DEBUG_STR
DEBUG_RFAPI_STR
"rfapi_close\n"
"indicate vn addr follows\n"
- "virtual network interface address\n"
- "indicate xt addr follows\n" "underlay network interface address\n")
+ "virtual network interface IPv4 address\n"
+ "virtual network interface IPv6 address\n"
+ "indicate xt addr follows\n"
+ "underlay network interface IPv4 address\n"
+ "underlay network interface IPv6 address\n")
{
struct rfapi_ip_addr vn;
struct rfapi_ip_addr un;
@@ -3184,21 +3217,21 @@ DEFUN (debug_rfapi_close_vn_un,
/*
* Get VN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[0], &vn)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[4]->arg, &vn)))
return rc;
/*
* Get UN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[1], &un)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[6]->arg, &un)))
return rc;
if (rfapi_find_handle_vty (vty, &vn, &un, &handle))
{
vty_out (vty, "can't locate handle matching vn=%s, un=%s%s",
- argv[0], argv[1], VTY_NEWLINE);
+ argv[4]->arg, argv[6]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
@@ -3222,11 +3255,11 @@ DEFUN (debug_rfapi_close_rfd,
int rc;
char *endptr = NULL;
- handle = (rfapi_handle) (uintptr_t) (strtoull (argv[0], &endptr, 16));
+ handle = (rfapi_handle) (uintptr_t) (strtoull (argv[4]->arg, &endptr, 16));
if (*endptr != '\0' || (uintptr_t) handle == UINTPTR_MAX)
{
- vty_out (vty, "Invalid value: %s%s", argv[0], VTY_NEWLINE);
+ vty_out (vty, "Invalid value: %s%s", argv[4]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
@@ -3240,7 +3273,7 @@ DEFUN (debug_rfapi_close_rfd,
DEFUN (debug_rfapi_register_vn_un,
debug_rfapi_register_vn_un_cmd,
- "debug rfapi-dev register vn (A.B.C.D|X:X::X:X) un (A.B.C.D|X:X::X:X) prefix (A.B.C.D/M|X:X::X:X/M) lifetime SECONDS",
+ "debug rfapi-dev register vn <A.B.C.D|X:X::X:X> un <A.B.C.D|X:X::X:X> prefix <A.B.C.D/M|X:X::X:X/M> lifetime SECONDS",
DEBUG_STR
DEBUG_RFAPI_STR
"rfapi_register\n"
@@ -3252,7 +3285,9 @@ DEFUN (debug_rfapi_register_vn_un,
"underlay network IPv6 interface address\n"
"indicate prefix follows\n"
"IPv4 prefix\n"
- "IPv6 prefix\n" "indicate lifetime follows\n" "lifetime\n")
+ "IPv6 prefix\n"
+ "indicate lifetime follows\n"
+ "lifetime\n")
{
struct rfapi_ip_addr vn;
struct rfapi_ip_addr un;
@@ -3265,46 +3300,46 @@ DEFUN (debug_rfapi_register_vn_un,
/*
* Get VN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[0], &vn)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[4]->arg, &vn)))
return rc;
/*
* Get UN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[1], &un)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[6]->arg, &un)))
return rc;
if (rfapi_find_handle_vty (vty, &vn, &un, &handle))
{
vty_out (vty, "can't locate handle matching vn=%s, un=%s%s",
- argv[0], argv[1], VTY_NEWLINE);
+ argv[4]->arg, argv[6]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
/*
* Get prefix to advertise
*/
- if (!str2prefix (argv[2], &pfx))
+ if (!str2prefix (argv[8]->arg, &pfx))
{
- vty_out (vty, "Malformed prefix \"%s\"%s", argv[2], VTY_NEWLINE);
+ vty_out (vty, "Malformed prefix \"%s\"%s", argv[8]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
if (pfx.family != AF_INET && pfx.family != AF_INET6)
{
- vty_out (vty, "Bad family for prefix \"%s\"%s", argv[2], VTY_NEWLINE);
+ vty_out (vty, "Bad family for prefix \"%s\"%s", argv[8]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
rfapiQprefix2Rprefix (&pfx, &hpfx);
- if (!strcmp (argv[3], "infinite"))
+ if (!strcmp (argv[10]->arg, "infinite"))
{
lifetime = RFAPI_INFINITE_LIFETIME;
}
else
{
- VTY_GET_INTEGER ("Lifetime", lifetime, argv[3]);
+ VTY_GET_INTEGER ("Lifetime", lifetime, argv[10]->arg);
}
@@ -3320,13 +3355,7 @@ DEFUN (debug_rfapi_register_vn_un,
DEFUN (debug_rfapi_register_vn_un_l2o,
debug_rfapi_register_vn_un_l2o_cmd,
- "debug rfapi-dev register"
- " vn (A.B.C.D|X:X::X:X)"
- " un (A.B.C.D|X:X::X:X)"
- " prefix (A.B.C.D/M|X:X::X:X/M)"
- " lifetime SECONDS"
- " macaddr YY:YY:YY:YY:YY:YY"
- " lni <0-16777215>",
+ "debug rfapi-dev register vn <A.B.C.D|X:X::X:X> un <A.B.C.D|X:X::X:X> prefix <A.B.C.D/M|X:X::X:X/M> lifetime SECONDS macaddr YY:YY:YY:YY:YY:YY lni (0-16777215)",
DEBUG_STR
DEBUG_RFAPI_STR
"rfapi_register\n"
@@ -3338,7 +3367,13 @@ DEFUN (debug_rfapi_register_vn_un_l2o,
"underlay network IPv6 interface address\n"
"indicate prefix follows\n"
"IPv4 prefix\n"
- "IPv6 prefix\n" "indicate lifetime follows\n" "lifetime\n")
+ "IPv6 prefix\n"
+ "indicate lifetime follows\n"
+ "Seconds of lifetime\n"
+ "indicate MAC address follows\n"
+ "MAC address\n"
+ "indicate lni follows\n"
+ "lni value range\n")
{
struct rfapi_ip_addr vn;
struct rfapi_ip_addr un;
@@ -3354,55 +3389,55 @@ DEFUN (debug_rfapi_register_vn_un_l2o,
/*
* Get VN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[0], &vn)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[4]->arg, &vn)))
return rc;
/*
* Get UN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[1], &un)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[6]->arg, &un)))
return rc;
if (rfapi_find_handle_vty (vty, &vn, &un, &handle))
{
vty_out (vty, "can't locate handle matching vn=%s, un=%s%s",
- argv[0], argv[1], VTY_NEWLINE);
+ argv[4]->arg, argv[6]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
/*
* Get prefix to advertise
*/
- if (!str2prefix (argv[2], &pfx))
+ if (!str2prefix (argv[8]->arg, &pfx))
{
- vty_out (vty, "Malformed prefix \"%s\"%s", argv[2], VTY_NEWLINE);
+ vty_out (vty, "Malformed prefix \"%s\"%s", argv[8]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
if (pfx.family != AF_INET && pfx.family != AF_INET6)
{
- vty_out (vty, "Bad family for prefix \"%s\"%s", argv[2], VTY_NEWLINE);
+ vty_out (vty, "Bad family for prefix \"%s\"%s", argv[8]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
rfapiQprefix2Rprefix (&pfx, &hpfx);
- if (!strcmp (argv[3], "infinite"))
+ if (!strcmp (argv[10]->arg, "infinite"))
{
lifetime = RFAPI_INFINITE_LIFETIME;
}
else
{
- VTY_GET_INTEGER ("Lifetime", lifetime, argv[3]);
+ VTY_GET_INTEGER ("Lifetime", lifetime, argv[10]->arg);
}
/* L2 option parsing START */
memset (optary, 0, sizeof (optary));
VTY_GET_INTEGER ("Logical Network ID",
- optary[opt_next].v.l2addr.logical_net_id, argv[5]);
- if ((rc = rfapiStr2EthAddr (argv[4], &optary[opt_next].v.l2addr.macaddr)))
+ optary[opt_next].v.l2addr.logical_net_id, argv[14]->arg);
+ if ((rc = rfapiStr2EthAddr (argv[12]->arg, &optary[opt_next].v.l2addr.macaddr)))
{
- vty_out (vty, "Bad mac address \"%s\"%s", argv[4], VTY_NEWLINE);
+ vty_out (vty, "Bad mac address \"%s\"%s", argv[12]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
optary[opt_next].type = RFAPI_VN_OPTION_TYPE_L2ADDR;
@@ -3431,7 +3466,7 @@ DEFUN (debug_rfapi_register_vn_un_l2o,
DEFUN (debug_rfapi_unregister_vn_un,
debug_rfapi_unregister_vn_un_cmd,
- "debug rfapi-dev unregister vn (A.B.C.D|X:X::X:X) un (A.B.C.D|X:X::X:X) prefix (A.B.C.D/M|X:X::X:X/M)",
+ "debug rfapi-dev unregister vn <A.B.C.D|X:X::X:X> un <A.B.C.D|X:X::X:X> prefix <A.B.C.D/M|X:X::X:X/M>",
DEBUG_STR
DEBUG_RFAPI_STR
"rfapi_register\n"
@@ -3451,35 +3486,35 @@ DEFUN (debug_rfapi_unregister_vn_un,
/*
* Get VN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[0], &vn)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[4]->arg, &vn)))
return rc;
/*
* Get UN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[1], &un)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[6]->arg, &un)))
return rc;
if (rfapi_find_handle_vty (vty, &vn, &un, &handle))
{
vty_out (vty, "can't locate handle matching vn=%s, un=%s%s",
- argv[0], argv[1], VTY_NEWLINE);
+ argv[4]->arg, argv[6]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
/*
* Get prefix to advertise
*/
- if (!str2prefix (argv[2], &pfx))
+ if (!str2prefix (argv[8]->arg, &pfx))
{
- vty_out (vty, "Malformed prefix \"%s\"%s", argv[2], VTY_NEWLINE);
+ vty_out (vty, "Malformed prefix \"%s\"%s", argv[8]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
if (pfx.family != AF_INET && pfx.family != AF_INET6)
{
- vty_out (vty, "Bad family for prefix \"%s\"%s", argv[2], VTY_NEWLINE);
+ vty_out (vty, "Bad family for prefix \"%s\"%s", argv[8]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
rfapiQprefix2Rprefix (&pfx, &hpfx);
@@ -3491,15 +3526,19 @@ DEFUN (debug_rfapi_unregister_vn_un,
DEFUN (debug_rfapi_query_vn_un,
debug_rfapi_query_vn_un_cmd,
- "debug rfapi-dev query vn (A.B.C.D|X:X::X:X) un (A.B.C.D|X:X::X:X) target (A.B.C.D|X:X::X:X)",
+ "debug rfapi-dev query vn <A.B.C.D|X:X::X:X> un <A.B.C.D|X:X::X:X> target <A.B.C.D|X:X::X:X>",
DEBUG_STR
DEBUG_RFAPI_STR
"rfapi_query\n"
"indicate vn addr follows\n"
- "virtual network interface address\n"
- "indicate xt addr follows\n"
- "underlay network interface address\n"
- "indicate target follows\n" "target\n")
+ "virtual network interface IPv4 address\n"
+ "virtual network interface IPv6 address\n"
+ "indicate un addr follows\n"
+ "IPv4 un address\n"
+ "IPv6 un address\n"
+ "indicate target follows\n"
+ "target IPv4 address\n"
+ "target IPv6 address\n")
{
struct rfapi_ip_addr vn;
struct rfapi_ip_addr un;
@@ -3511,28 +3550,28 @@ DEFUN (debug_rfapi_query_vn_un,
/*
* Get VN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[0], &vn)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[4]->arg, &vn)))
return rc;
/*
* Get UN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[1], &un)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[6]->arg, &un)))
return rc;
/*
* Get target addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[2], &target)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[8]->arg, &target)))
return rc;
if (rfapi_find_handle_vty (vty, &vn, &un, &handle))
{
vty_out (vty, "can't locate handle matching vn=%s, un=%s%s",
- argv[0], argv[1], VTY_NEWLINE);
+ argv[4]->arg, argv[6]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
@@ -3560,17 +3599,20 @@ DEFUN (debug_rfapi_query_vn_un,
DEFUN (debug_rfapi_query_vn_un_l2o,
debug_rfapi_query_vn_un_l2o_cmd,
- "debug rfapi-dev query vn (A.B.C.D|X:X::X:X) un (A.B.C.D|X:X::X:X) lni LNI target YY:YY:YY:YY:YY:YY",
+ "debug rfapi-dev query vn <A.B.C.D|X:X::X:X> un <A.B.C.D|X:X::X:X> lni LNI target YY:YY:YY:YY:YY:YY",
DEBUG_STR
DEBUG_RFAPI_STR
"rfapi_query\n"
"indicate vn addr follows\n"
- "virtual network interface address\n"
+ "virtual network interface IPv4 address\n"
+ "virtual network interface IPv6 address\n"
"indicate xt addr follows\n"
- "underlay network interface address\n"
+ "underlay network interface IPv4 address\n"
+ "underlay network interface IPv6 address\n"
"logical network ID follows\n"
"logical network ID\n"
- "indicate target MAC addr follows\n" "target MAC addr\n")
+ "indicate target MAC addr follows\n"
+ "target MAC addr\n")
{
struct rfapi_ip_addr vn;
struct rfapi_ip_addr un;
@@ -3585,28 +3627,32 @@ DEFUN (debug_rfapi_query_vn_un_l2o,
/*
* Get VN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[0], &vn)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[4]->arg, &vn)))
return rc;
/*
* Get UN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[1], &un)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[6]->arg, &un)))
return rc;
+#if 0 /* there is no IP target arg here ?????? */
/*
* Get target addr
*/
if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[2], &target)))
return rc;
-
+#else
+ vty_out (vty, "%% This command is broken.%s", VTY_NEWLINE);
+ return CMD_WARNING;
+#endif
if (rfapi_find_handle_vty (vty, &vn, &un, &handle))
{
vty_out (vty, "can't locate handle matching vn=%s, un=%s%s",
- argv[0], argv[1], VTY_NEWLINE);
+ argv[4]->arg, argv[6]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
@@ -3614,13 +3660,13 @@ DEFUN (debug_rfapi_query_vn_un_l2o,
* Set up L2 parameters
*/
memset (&l2o_buf, 0, sizeof (l2o_buf));
- if (rfapiStr2EthAddr (argv[3], &l2o_buf.macaddr))
+ if (rfapiStr2EthAddr (argv[10]->arg, &l2o_buf.macaddr))
{
- vty_out (vty, "Bad mac address \"%s\"%s", argv[3], VTY_NEWLINE);
+ vty_out (vty, "Bad mac address \"%s\"%s", argv[10]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
- VTY_GET_INTEGER ("Logical Network ID", l2o_buf.logical_net_id, argv[2]);
+ VTY_GET_INTEGER ("Logical Network ID", l2o_buf.logical_net_id, argv[8]->arg);
/* construct option chain */
@@ -3663,15 +3709,20 @@ DEFUN (debug_rfapi_query_vn_un_l2o,
DEFUN (debug_rfapi_query_done_vn_un,
debug_rfapi_query_vn_un_done_cmd,
- "debug rfapi-dev query done vn (A.B.C.D|X:X::X:X) un (A.B.C.D|X:X::X:X) target (A.B.C.D|X:X::X:X)",
+ "debug rfapi-dev query done vn <A.B.C.D|X:X::X:X> un <A.B.C.D|X:X::X:X> target <A.B.C.D|X:X::X:X>",
DEBUG_STR
DEBUG_RFAPI_STR
"rfapi_query_done\n"
+ "rfapi_query_done\n"
"indicate vn addr follows\n"
- "virtual network interface address\n"
+ "virtual network interface IPv4 address\n"
+ "virtual network interface IPv6 address\n"
"indicate xt addr follows\n"
- "underlay network interface address\n"
- "indicate prefix follows\n" "prefix\n")
+ "underlay network interface IPv4 address\n"
+ "underlay network interface IPv6 address\n"
+ "indicate target follows\n"
+ "Target IPv4 address\n"
+ "Target IPv6 address\n")
{
struct rfapi_ip_addr vn;
struct rfapi_ip_addr un;
@@ -3682,28 +3733,28 @@ DEFUN (debug_rfapi_query_done_vn_un,
/*
* Get VN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[0], &vn)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[5]->arg, &vn)))
return rc;
/*
* Get UN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[1], &un)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[7]->arg, &un)))
return rc;
/*
* Get target addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[2], &target)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[9]->arg, &target)))
return rc;
if (rfapi_find_handle_vty (vty, &vn, &un, &handle))
{
vty_out (vty, "can't locate handle matching vn=%s, un=%s%s",
- argv[0], argv[1], VTY_NEWLINE);
+ argv[5]->arg, argv[7]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
@@ -3758,7 +3809,7 @@ DEFUN (debug_rfapi_show_import,
for (it = h->imports; it; it = it->next)
{
s = ecommunity_ecom2str (it->rt_import_list,
- ECOMMUNITY_FORMAT_ROUTE_MAP);
+ ECOMMUNITY_FORMAT_ROUTE_MAP, 0);
vty_out (vty, "Import Table %p, RTs: %s%s", it, s, VTY_NEWLINE);
XFREE (MTYPE_ECOMMUNITY_STR, s);
@@ -3784,7 +3835,7 @@ DEFUN (debug_rfapi_show_import,
&cursor))
{
- if (it->imported_vpn[AFI_ETHER])
+ if (it->imported_vpn[AFI_L2VPN])
{
lni = lni_as_ptr;
if (first_l2)
@@ -3794,7 +3845,7 @@ DEFUN (debug_rfapi_show_import,
first_l2 = 0;
}
snprintf (buf, BUFSIZ, "L2VPN LNI=%u", lni);
- rfapiShowImportTable (vty, buf, it->imported_vpn[AFI_ETHER], 1);
+ rfapiShowImportTable (vty, buf, it->imported_vpn[AFI_L2VPN], 1);
}
}
}
@@ -3807,14 +3858,17 @@ DEFUN (debug_rfapi_show_import,
DEFUN (debug_rfapi_show_import_vn_un,
debug_rfapi_show_import_vn_un_cmd,
- "debug rfapi-dev show import vn (A.B.C.D|X:X::X:X) un (A.B.C.D|X:X::X:X)",
+ "debug rfapi-dev show import vn <A.B.C.D|X:X::X:X> un <A.B.C.D|X:X::X:X>",
DEBUG_STR
DEBUG_RFAPI_STR
SHOW_STR
"import\n"
"indicate vn addr follows\n"
- "virtual network interface address\n"
- "indicate xt addr follows\n" "underlay network interface address\n")
+ "virtual network interface IPv4 address\n"
+ "virtual network interface IPv6 address\n"
+ "indicate xt addr follows\n"
+ "underlay network interface IPv4 address\n"
+ "underlay network interface IPv6 address\n")
{
struct rfapi_ip_addr vn;
struct rfapi_ip_addr un;
@@ -3825,21 +3879,21 @@ DEFUN (debug_rfapi_show_import_vn_un,
/*
* Get VN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[0], &vn)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[5]->arg, &vn)))
return rc;
/*
* Get UN addr
*/
- if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[1], &un)))
+ if ((rc = rfapiCliGetRfapiIpAddr (vty, argv[7]->arg, &un)))
return rc;
if (rfapi_find_handle_vty (vty, &vn, &un, &handle))
{
vty_out (vty, "can't locate handle matching vn=%s, un=%s%s",
- argv[0], argv[1], VTY_NEWLINE);
+ argv[5]->arg, argv[7]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
@@ -3859,7 +3913,7 @@ DEFUN (debug_rfapi_show_import_vn_un,
DEFUN (debug_rfapi_response_omit_self,
debug_rfapi_response_omit_self_cmd,
- "debug rfapi-dev response-omit-self (on|off)",
+ "debug rfapi-dev response-omit-self <on|off>",
DEBUG_STR
DEBUG_RFAPI_STR
"Omit self in RFP responses\n"
@@ -3878,7 +3932,7 @@ DEFUN (debug_rfapi_response_omit_self,
return CMD_WARNING;
}
- if (!strcmp (argv[0], "on"))
+ if (!strcmp (argv[3]->arg, "on"))
SET_FLAG (bgp->rfapi_cfg->flags, BGP_VNC_CONFIG_FILTER_SELF_FROM_RSP);
else
UNSET_FLAG (bgp->rfapi_cfg->flags, BGP_VNC_CONFIG_FILTER_SELF_FROM_RSP);