]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/kernel_netlink.c
*: use frr_elevate_privs() (1/2: coccinelle)
[mirror_frr.git] / zebra / kernel_netlink.c
index 57a7f5273ede64a01d0f2c7657f068e3fc019e43..b397e9595506d4253921cdae2d9e9daa331dd963 100644 (file)
@@ -170,14 +170,11 @@ static int netlink_recvbuf(struct nlsock *nl, uint32_t newsize)
        }
 
        /* Try force option (linux >= 2.6.14) and fall back to normal set */
-       if (zserv_privs.change(ZPRIVS_RAISE))
-               flog_err(LIB_ERR_PRIVILEGES,
-                         "routing_socket: Can't raise privileges");
-       ret = setsockopt(nl->sock, SOL_SOCKET, SO_RCVBUFFORCE, &nl_rcvbufsize,
-                        sizeof(nl_rcvbufsize));
-       if (zserv_privs.change(ZPRIVS_LOWER))
-               flog_err(LIB_ERR_PRIVILEGES,
-                         "routing_socket: Can't lower privileges");
+       frr_elevate_privs(&zserv_privs) {
+               ret = setsockopt(nl->sock, SOL_SOCKET, SO_RCVBUFFORCE,
+                                &nl_rcvbufsize,
+                                sizeof(nl_rcvbufsize));
+       }
        if (ret < 0)
                ret = setsockopt(nl->sock, SOL_SOCKET, SO_RCVBUF,
                                 &nl_rcvbufsize, sizeof(nl_rcvbufsize));
@@ -957,12 +954,10 @@ int netlink_talk(int (*filter)(struct nlmsghdr *, ns_id_t, int startup),
                        n->nlmsg_flags);
 
        /* Send message to netlink interface. */
-       if (zserv_privs.change(ZPRIVS_RAISE))
-               flog_err(LIB_ERR_PRIVILEGES, "Can't raise privileges");
-       status = sendmsg(nl->sock, &msg, 0);
-       save_errno = errno;
-       if (zserv_privs.change(ZPRIVS_LOWER))
-               flog_err(LIB_ERR_PRIVILEGES, "Can't lower privileges");
+       frr_elevate_privs(&zserv_privs) {
+               status = sendmsg(nl->sock, &msg, 0);
+               save_errno = errno;
+       }
 
        if (IS_ZEBRA_DEBUG_KERNEL_MSGDUMP_SEND) {
                zlog_debug("%s: >> netlink message dump [sent]", __func__);