summaryrefslogtreecommitdiff
path: root/zebra/zebra_rib.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/zebra_rib.c')
-rw-r--r--zebra/zebra_rib.c38
1 files changed, 28 insertions, 10 deletions
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index dec4ed06a9..879e7e8317 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -1014,7 +1014,7 @@ int zebra_rib_labeled_unicast(struct route_entry *re)
void kernel_route_rib_pass_fail(struct route_node *rn, struct prefix *p,
struct route_entry *re,
- enum southbound_results res)
+ enum dp_results res)
{
struct nexthop *nexthop;
char buf[PREFIX_STRLEN];
@@ -1023,7 +1023,7 @@ void kernel_route_rib_pass_fail(struct route_node *rn, struct prefix *p,
dest = rib_dest_from_rnode(rn);
switch (res) {
- case SOUTHBOUND_INSTALL_SUCCESS:
+ case DP_INSTALL_SUCCESS:
dest->selected_fib = re;
for (ALL_NEXTHOPS(re->ng, nexthop)) {
if (CHECK_FLAG(nexthop->flags, NEXTHOP_FLAG_RECURSIVE))
@@ -1036,7 +1036,7 @@ void kernel_route_rib_pass_fail(struct route_node *rn, struct prefix *p,
}
zsend_route_notify_owner(re, p, ZAPI_ROUTE_INSTALLED);
break;
- case SOUTHBOUND_INSTALL_FAILURE:
+ case DP_INSTALL_FAILURE:
/*
* I am not sure this is the right thing to do here
* but the code always set selected_fib before
@@ -1048,7 +1048,7 @@ void kernel_route_rib_pass_fail(struct route_node *rn, struct prefix *p,
zlog_warn("%u:%s: Route install failed", re->vrf_id,
prefix2str(p, buf, sizeof(buf)));
break;
- case SOUTHBOUND_DELETE_SUCCESS:
+ case DP_DELETE_SUCCESS:
/*
* The case where selected_fib is not re is
* when we have received a system route
@@ -1063,7 +1063,7 @@ void kernel_route_rib_pass_fail(struct route_node *rn, struct prefix *p,
zsend_route_notify_owner(re, p, ZAPI_ROUTE_REMOVED);
break;
- case SOUTHBOUND_DELETE_FAILURE:
+ case DP_DELETE_FAILURE:
/*
* Should we set this to NULL if the
* delete fails?
@@ -1123,8 +1123,17 @@ void rib_install_kernel(struct route_node *rn, struct route_entry *re,
* the kernel.
*/
hook_call(rib_update, rn, "installing in kernel");
- kernel_route_rib(rn, p, src_p, old, re);
- zvrf->installs++;
+ switch (kernel_route_rib(rn, p, src_p, old, re)) {
+ case DP_REQUEST_QUEUED:
+ zlog_err("No current known DataPlane interfaces can return this, please fix");
+ break;
+ case DP_REQUEST_FAILURE:
+ zlog_err("No current known Rib Install Failure cases, please fix");
+ break;
+ case DP_REQUEST_SUCCESS:
+ zvrf->installs++;
+ break;
+ }
return;
}
@@ -1150,9 +1159,18 @@ void rib_uninstall_kernel(struct route_node *rn, struct route_entry *re)
* the kernel.
*/
hook_call(rib_update, rn, "uninstalling from kernel");
- kernel_route_rib(rn, p, src_p, re, NULL);
- if (zvrf)
- zvrf->removals++;
+ switch (kernel_route_rib(rn, p, src_p, re, NULL)) {
+ case DP_REQUEST_QUEUED:
+ zlog_err("No current known DataPlane interfaces can return this, please fix");
+ break;
+ case DP_REQUEST_FAILURE:
+ zlog_err("No current known RIB Install Failure cases, please fix");
+ break;
+ case DP_REQUEST_SUCCESS:
+ if (zvrf)
+ zvrf->removals++;
+ break;
+ }
return;
}