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.c40
1 files changed, 24 insertions, 16 deletions
diff --git a/bgpd/rfapi/rfapi.c b/bgpd/rfapi/rfapi.c
index a0e9ffbbd0..16dcbd4ee7 100644
--- a/bgpd/rfapi/rfapi.c
+++ b/bgpd/rfapi/rfapi.c
@@ -18,9 +18,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-
-#include <errno.h>
-
#include "lib/zebra.h"
#include "lib/prefix.h"
#include "lib/agg_table.h"
@@ -462,8 +459,6 @@ void del_vnc_route(struct rfapi_descriptor *rfd,
rfapiProcessWithdraw(peer, rfd, p, prd, NULL, afi, safi, type, kill);
if (bi) {
- char buf[PREFIX_STRLEN];
-
prefix2str(p, buf, sizeof(buf));
vnc_zlog_debug_verbose(
"%s: Found route (safi=%d) to delete at prefix %s",
@@ -2928,6 +2923,8 @@ static void test_nexthops_callback(
rfapiPrintNhl(stream, next_hops);
+ fp(out, "\n");
+
rfapi_free_next_hop_list(next_hops);
}
@@ -3049,7 +3046,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 [cost (0-255)]",
DEBUG_STR
DEBUG_RFAPI_STR
"rfapi_register\n"
@@ -3063,7 +3060,9 @@ DEFUN (debug_rfapi_register_vn_un,
"IPv4 prefix\n"
"IPv6 prefix\n"
"indicate lifetime follows\n"
- "lifetime\n")
+ "lifetime\n"
+ "Cost (localpref = 255-cost)\n"
+ "0-255\n")
{
struct rfapi_ip_addr vn;
struct rfapi_ip_addr un;
@@ -3072,6 +3071,7 @@ DEFUN (debug_rfapi_register_vn_un,
uint32_t lifetime;
struct rfapi_ip_prefix hpfx;
int rc;
+ uint8_t cost = 100;
/*
* Get VN addr
@@ -3112,8 +3112,12 @@ DEFUN (debug_rfapi_register_vn_un,
lifetime = strtoul(argv[10]->arg, NULL, 10);
}
+ if (argc >= 13)
+ cost = (uint8_t) strtoul(argv[12]->arg, NULL, 10);
+ hpfx.cost = cost;
- rc = rfapi_register(handle, &hpfx, lifetime, NULL, NULL, 0);
+ rc = rfapi_register(handle, &hpfx, lifetime, NULL, NULL,
+ RFAPI_REGISTER_ADD);
if (rc) {
vty_out(vty, "rfapi_register failed with rc=%d (%s)\n", rc,
strerror(rc));
@@ -3213,7 +3217,8 @@ DEFUN (debug_rfapi_register_vn_un_l2o,
/* L2 option parsing END */
/* TBD fixme */
- rc = rfapi_register(handle, &hpfx, lifetime, NULL /* &uo */, opt, 0);
+ rc = rfapi_register(handle, &hpfx, lifetime, NULL /* &uo */, opt,
+ RFAPI_REGISTER_ADD);
if (rc) {
vty_out(vty, "rfapi_register failed with rc=%d (%s)\n", rc,
strerror(rc));
@@ -3225,7 +3230,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> [kill]",
DEBUG_STR
DEBUG_RFAPI_STR
"rfapi_register\n"
@@ -3233,7 +3238,8 @@ DEFUN (debug_rfapi_unregister_vn_un,
"virtual network interface address\n"
"indicate xt addr follows\n"
"underlay network interface address\n"
- "indicate prefix follows\n" "prefix")
+ "prefix to remove\n"
+ "Remove without holddown")
{
struct rfapi_ip_addr vn;
struct rfapi_ip_addr un;
@@ -3275,7 +3281,9 @@ DEFUN (debug_rfapi_unregister_vn_un,
}
rfapiQprefix2Rprefix(&pfx, &hpfx);
- rfapi_register(handle, &hpfx, 0, NULL, NULL, 1);
+ rfapi_register(handle, &hpfx, 0, NULL, NULL,
+ (argc == 10 ?
+ RFAPI_REGISTER_KILL : RFAPI_REGISTER_WITHDRAW));
return CMD_SUCCESS;
}
@@ -3934,8 +3942,8 @@ void *rfapi_rfp_init_group_config_ptr_vty(void *rfp_start_val,
size);
break;
default:
- flog_err(LIB_ERR_DEVELOPMENT, "%s: Unknown group type=%d",
- __func__, type);
+ flog_err(EC_LIB_DEVELOPMENT, "%s: Unknown group type=%d",
+ __func__, type);
/* should never happen */
assert("Unknown type" == NULL);
break;
@@ -4049,8 +4057,8 @@ void *rfapi_rfp_get_group_config_ptr_name(
criteria, search_cb);
break;
default:
- flog_err(LIB_ERR_DEVELOPMENT, "%s: Unknown group type=%d",
- __func__, type);
+ flog_err(EC_LIB_DEVELOPMENT, "%s: Unknown group type=%d",
+ __func__, type);
/* should never happen */
assert("Unknown type" == NULL);
break;