diff options
Diffstat (limited to 'bgpd/rfapi/rfapi.c')
| -rw-r--r-- | bgpd/rfapi/rfapi.c | 318 |
1 files changed, 186 insertions, 132 deletions
diff --git a/bgpd/rfapi/rfapi.c b/bgpd/rfapi/rfapi.c index e32b407ba2..3cf09e240e 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) @@ -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); + 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; } @@ -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); |
