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.c27
1 files changed, 2 insertions, 25 deletions
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index b7d12a5cb4..394469950d 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -1232,21 +1232,7 @@ rib_install_kernel (struct route_node *rn, struct rib *rib, int update)
* the kernel.
*/
zfpm_trigger_update (rn, "installing in kernel");
- switch (PREFIX_FAMILY (&rn->p))
- {
- case AF_INET:
- if (update)
- ret = kernel_update_ipv4 (&rn->p, rib);
- else
- ret = kernel_add_ipv4 (&rn->p, rib);
- break;
- case AF_INET6:
- if (update)
- ret = kernel_update_ipv6 (&rn->p, rib);
- else
- ret = kernel_add_ipv6 (&rn->p, rib);
- break;
- }
+ ret = kernel_route_rib (&rn->p, update ? rib : NULL, rib);
/* If install succeeds, update FIB flag for nexthops. */
if (!ret)
@@ -1287,16 +1273,7 @@ rib_uninstall_kernel (struct route_node *rn, struct rib *rib)
* the kernel.
*/
zfpm_trigger_update (rn, "uninstalling from kernel");
-
- switch (PREFIX_FAMILY (&rn->p))
- {
- case AF_INET:
- ret = kernel_delete_ipv4 (&rn->p, rib);
- break;
- case AF_INET6:
- ret = kernel_delete_ipv6 (&rn->p, rib);
- break;
- }
+ ret = kernel_route_rib (&rn->p, rib, NULL);
for (ALL_NEXTHOPS_RO(rib->nexthop, nexthop, tnexthop, recursing))
UNSET_FLAG (nexthop->flags, NEXTHOP_FLAG_FIB);