summaryrefslogtreecommitdiff
path: root/zebra/rt_socket.c
diff options
context:
space:
mode:
authorRenato Westphal <renato@openbsd.org>2017-12-04 18:25:16 -0200
committerGitHub <noreply@github.com>2017-12-04 18:25:16 -0200
commit50a0033c24ec12e2e327d01863f7956672236b0c (patch)
treec75902fd9f8b0d88270ba2a1afb3f75e4aba1331 /zebra/rt_socket.c
parentded104de0c706a0f9207388fb228d6787dd0cb8f (diff)
parent9fa38ec6bbd6d0755c4b0e5ca718ded97d8e2f79 (diff)
Merge pull request #1496 from donaldsharp/install_failure
Additional Southbound API changes
Diffstat (limited to 'zebra/rt_socket.c')
-rw-r--r--zebra/rt_socket.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/zebra/rt_socket.c b/zebra/rt_socket.c
index e588794947..0d1a80e737 100644
--- a/zebra/rt_socket.c
+++ b/zebra/rt_socket.c
@@ -387,14 +387,14 @@ static int kernel_rtm(int cmd, struct prefix *p, struct route_entry *re)
return 0;
}
-int kernel_route_rib(struct prefix *p, struct prefix *src_p,
- struct route_entry *old, struct route_entry *new)
+void kernel_route_rib(struct prefix *p, struct prefix *src_p,
+ struct route_entry *old, struct route_entry *new)
{
int route = 0;
if (src_p && src_p->prefixlen) {
zlog_err("route add: IPv6 sourcedest routes unsupported!");
- return 1;
+ return;
}
if (zserv_privs.change(ZPRIVS_RAISE))
@@ -409,7 +409,17 @@ int kernel_route_rib(struct prefix *p, struct prefix *src_p,
if (zserv_privs.change(ZPRIVS_LOWER))
zlog_err("Can't lower privileges");
- return route;
+ if (new) {
+ kernel_route_rib_pass_fail(p, new,
+ (!route) ?
+ SOUTHBOUND_INSTALL_SUCCESS :
+ SOUTHBOUND_INSTALL_FAILURE);
+ } else {
+ kernel_route_rib_pass_fail(p, old,
+ (!route) ?
+ SOUTHBOUND_DELETE_SUCCESS :
+ SOUTHBOUND_DELETE_FAILURE);
+ }
}
int kernel_neigh_update(int add, int ifindex, uint32_t addr, char *lla,