]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/rt_socket.c
Merge pull request #2804 from kssoman/bgp_fix
[mirror_frr.git] / zebra / rt_socket.c
index 346699198f9b8c15f22f724da4fdeead4fec6e22..c0ad87ce3952c47c9225beaa7c6a51daf15db222 100644 (file)
@@ -33,6 +33,7 @@
 #include "log.h"
 #include "privs.h"
 #include "vxlan.h"
+#include "lib_errors.h"
 
 #include "zebra/debug.h"
 #include "zebra/rib.h"
@@ -211,7 +212,8 @@ static int kernel_rtm_ipv4(int cmd, const struct prefix *p,
                         */
                        case ZEBRA_ERR_RTEXIST:
                                if (cmd != RTM_ADD)
-                                       zlog_err(
+                                       flog_err(
+                                               LIB_ERR_SYSTEM_CALL,
                                                "%s: rtm_write() returned %d for command %d",
                                                __func__, error, cmd);
                                continue;
@@ -224,7 +226,8 @@ static int kernel_rtm_ipv4(int cmd, const struct prefix *p,
                        case ZEBRA_ERR_RTNOEXIST:
                        case ZEBRA_ERR_RTUNREACH:
                        default:
-                               zlog_err(
+                               flog_err(
+                                       LIB_ERR_SYSTEM_CALL,
                                        "%s: %s: rtm_write() unexpectedly returned %d for command %s",
                                        __func__,
                                        prefix2str(p, prefix_buf,
@@ -396,21 +399,19 @@ enum dp_req_result kernel_route_rib(struct route_node *rn,
        int route = 0;
 
        if (src_p && src_p->prefixlen) {
-               zlog_err("route add: IPv6 sourcedest routes unsupported!");
+               zlog_warn("%s: IPv6 sourcedest routes unsupported!", __func__);
                return DP_REQUEST_FAILURE;
        }
 
-       if (zserv_privs.change(ZPRIVS_RAISE))
-               zlog_err("Can't raise privileges");
+       frr_elevate_privs(&zserv_privs) {
 
-       if (old)
-               route |= kernel_rtm(RTM_DELETE, p, old);
+               if (old)
+                       route |= kernel_rtm(RTM_DELETE, p, old);
 
-       if (new)
-               route |= kernel_rtm(RTM_ADD, p, new);
+               if (new)
+                       route |= kernel_rtm(RTM_ADD, p, new);
 
-       if (zserv_privs.change(ZPRIVS_LOWER))
-               zlog_err("Can't lower privileges");
+       }
 
        if (new) {
                kernel_route_rib_pass_fail(