]> git.puffer.fish Git - matthieu/frr.git/commitdiff
*: frr_elevate_privs -> frr_with_privs
authorDavid Lamparter <equinox@diac24.net>
Tue, 13 Aug 2019 13:47:23 +0000 (15:47 +0200)
committerDavid Lamparter <equinox@diac24.net>
Tue, 3 Sep 2019 15:18:35 +0000 (17:18 +0200)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
41 files changed:
.clang-format
bfdd/bfd_packet.c
bgpd/bgp_network.c
eigrpd/eigrp_network.c
isisd/isis_bpf.c
isisd/isis_dlpi.c
isisd/isis_pfpacket.c
ldpd/socket.c
lib/privs.h
lib/vrf.c
ospf6d/ospf6_network.c
ospfd/ospf_network.c
ospfd/ospfd.c
pimd/pim_mroute.c
pimd/pim_msdp_socket.c
pimd/pim_sock.c
ripd/ripd.c
ripngd/ripng_interface.c
ripngd/ripngd.c
tests/lib/test_privs.c
tools/coccinelle/zprivs.cocci
vrrpd/vrrp.c
vrrpd/vrrp_arp.c
vrrpd/vrrp_ndisc.c
zebra/if_ioctl_solaris.c
zebra/if_netlink.c
zebra/ioctl.c
zebra/ioctl_solaris.c
zebra/ipforward_proc.c
zebra/ipforward_solaris.c
zebra/ipforward_sysctl.c
zebra/irdp_main.c
zebra/kernel_netlink.c
zebra/kernel_socket.c
zebra/rt_socket.c
zebra/rtadv.c
zebra/zapi_msg.c
zebra/zebra_mpls_openbsd.c
zebra/zebra_netns_notify.c
zebra/zebra_ns.c
zebra/zserv.c

index cc68de7b551fee419c12532bdafd0e21e9f68a4f..654577d936a8ac5e9e349b48a6f0e96fb35a7249 100644 (file)
@@ -29,7 +29,7 @@ ForEachMacros:
   - frr_each_safe
   - frr_each_from
   - frr_with_mutex
-  - frr_elevate_privs
+  - frr_with_privs
   - LIST_FOREACH
   - LIST_FOREACH_SAFE
   - SLIST_FOREACH
index d68a1ad5fd98759b884f4f5fbce3e91744f3bc1b..7fbe6db163ac95ee446efec8af283540caff709e 100644 (file)
@@ -894,7 +894,7 @@ int bp_udp_shop(vrf_id_t vrf_id)
 {
        int sd;
 
-       frr_elevate_privs(&bglobal.bfdd_privs) {
+       frr_with_privs(&bglobal.bfdd_privs) {
                sd = vrf_socket(AF_INET, SOCK_DGRAM, PF_UNSPEC, vrf_id, NULL);
        }
        if (sd == -1)
@@ -909,7 +909,7 @@ int bp_udp_mhop(vrf_id_t vrf_id)
 {
        int sd;
 
-       frr_elevate_privs(&bglobal.bfdd_privs) {
+       frr_with_privs(&bglobal.bfdd_privs) {
                sd = vrf_socket(AF_INET, SOCK_DGRAM, PF_UNSPEC, vrf_id, NULL);
        }
        if (sd == -1)
@@ -934,7 +934,7 @@ int bp_peer_socket(const struct bfd_session *bs)
            && bs->key.vrfname[0])
                device_to_bind = (const char *)bs->key.vrfname;
 
-       frr_elevate_privs(&bglobal.bfdd_privs) {
+       frr_with_privs(&bglobal.bfdd_privs) {
                sd = vrf_socket(AF_INET, SOCK_DGRAM, PF_UNSPEC,
                                bs->vrf->vrf_id, device_to_bind);
        }
@@ -1001,7 +1001,7 @@ int bp_peer_socketv6(const struct bfd_session *bs)
            && bs->key.vrfname[0])
                device_to_bind = (const char *)bs->key.vrfname;
 
-       frr_elevate_privs(&bglobal.bfdd_privs) {
+       frr_with_privs(&bglobal.bfdd_privs) {
                sd = vrf_socket(AF_INET6, SOCK_DGRAM, PF_UNSPEC,
                                bs->vrf->vrf_id, device_to_bind);
        }
@@ -1121,7 +1121,7 @@ int bp_udp6_shop(vrf_id_t vrf_id)
 {
        int sd;
 
-       frr_elevate_privs(&bglobal.bfdd_privs) {
+       frr_with_privs(&bglobal.bfdd_privs) {
                sd = vrf_socket(AF_INET6, SOCK_DGRAM, PF_UNSPEC, vrf_id, NULL);
        }
        if (sd == -1)
@@ -1137,7 +1137,7 @@ int bp_udp6_mhop(vrf_id_t vrf_id)
 {
        int sd;
 
-       frr_elevate_privs(&bglobal.bfdd_privs) {
+       frr_with_privs(&bglobal.bfdd_privs) {
                sd = vrf_socket(AF_INET6, SOCK_DGRAM, PF_UNSPEC, vrf_id, NULL);
        }
        if (sd == -1)
@@ -1153,7 +1153,7 @@ int bp_echo_socket(vrf_id_t vrf_id)
 {
        int s;
 
-       frr_elevate_privs(&bglobal.bfdd_privs) {
+       frr_with_privs(&bglobal.bfdd_privs) {
                s = vrf_socket(AF_INET, SOCK_DGRAM, 0, vrf_id, NULL);
        }
        if (s == -1)
@@ -1169,7 +1169,7 @@ int bp_echov6_socket(vrf_id_t vrf_id)
 {
        int s;
 
-       frr_elevate_privs(&bglobal.bfdd_privs) {
+       frr_with_privs(&bglobal.bfdd_privs) {
                s = vrf_socket(AF_INET6, SOCK_DGRAM, 0, vrf_id, NULL);
        }
        if (s == -1)
index 1dadf00e8f963da7c8d4d881cd1f2f90c20e1d47..887caee95e08aa2f9bb4f2d979c8041fd6af1ee5 100644 (file)
@@ -122,7 +122,7 @@ static int bgp_md5_set_connect(int socket, union sockunion *su,
        int ret = -1;
 
 #if HAVE_DECL_TCP_MD5SIG
-       frr_elevate_privs(&bgpd_privs) {
+       frr_with_privs(&bgpd_privs) {
                ret = bgp_md5_set_socket(socket, su, prefixlen, password);
        }
 #endif /* HAVE_TCP_MD5SIG */
@@ -140,8 +140,7 @@ static int bgp_md5_set_password(struct peer *peer, const char *password)
         * Set or unset the password on the listen socket(s). Outbound
         * connections are taken care of in bgp_connect() below.
         */
-       frr_elevate_privs(&bgpd_privs)
-       {
+       frr_with_privs(&bgpd_privs) {
                for (ALL_LIST_ELEMENTS_RO(bm->listen_sockets, node, listener))
                        if (listener->su.sa.sa_family
                            == peer->su.sa.sa_family) {
@@ -167,8 +166,7 @@ int bgp_md5_set_prefix(struct prefix *p, const char *password)
        struct bgp_listener *listener;
 
        /* Set or unset the password on the listen socket(s). */
-       frr_elevate_privs(&bgpd_privs)
-       {
+       frr_with_privs(&bgpd_privs) {
                for (ALL_LIST_ELEMENTS_RO(bm->listen_sockets, node, listener))
                        if (listener->su.sa.sa_family == p->family) {
                                prefix2sockunion(p, &su);
@@ -610,7 +608,7 @@ int bgp_connect(struct peer *peer)
                zlog_debug("Peer address not learnt: Returning from connect");
                return 0;
        }
-       frr_elevate_privs(&bgpd_privs) {
+       frr_with_privs(&bgpd_privs) {
        /* Make socket for the peer. */
                peer->fd = vrf_sockunion_socket(&peer->su, peer->bgp->vrf_id,
                                                bgp_get_bound_name(peer));
@@ -630,7 +628,7 @@ int bgp_connect(struct peer *peer)
        sockopt_reuseport(peer->fd);
 
 #ifdef IPTOS_PREC_INTERNETCONTROL
-       frr_elevate_privs(&bgpd_privs) {
+       frr_with_privs(&bgpd_privs) {
                if (sockunion_family(&peer->su) == AF_INET)
                        setsockopt_ipv4_tos(peer->fd,
                                            IPTOS_PREC_INTERNETCONTROL);
@@ -708,7 +706,7 @@ static int bgp_listener(int sock, struct sockaddr *sa, socklen_t salen,
        sockopt_reuseaddr(sock);
        sockopt_reuseport(sock);
 
-       frr_elevate_privs(&bgpd_privs) {
+       frr_with_privs(&bgpd_privs) {
 
 #ifdef IPTOS_PREC_INTERNETCONTROL
                if (sa->sa_family == AF_INET)
@@ -767,7 +765,7 @@ int bgp_socket(struct bgp *bgp, unsigned short port, const char *address)
        snprintf(port_str, sizeof(port_str), "%d", port);
        port_str[sizeof(port_str) - 1] = '\0';
 
-       frr_elevate_privs(&bgpd_privs) {
+       frr_with_privs(&bgpd_privs) {
                ret = vrf_getaddrinfo(address, port_str, &req, &ainfo_save,
                                      bgp->vrf_id);
        }
@@ -788,7 +786,7 @@ int bgp_socket(struct bgp *bgp, unsigned short port, const char *address)
                if (ainfo->ai_family != AF_INET && ainfo->ai_family != AF_INET6)
                        continue;
 
-               frr_elevate_privs(&bgpd_privs) {
+               frr_with_privs(&bgpd_privs) {
                        sock = vrf_socket(ainfo->ai_family,
                                          ainfo->ai_socktype,
                                          ainfo->ai_protocol, bgp->vrf_id,
index 0d3c4279ec01c36de19d792e344e69639c0f1c6c..ae7b655e5035850fa985146f22799437f92236a0 100644 (file)
@@ -61,7 +61,7 @@ int eigrp_sock_init(struct vrf *vrf)
        int hincl = 1;
 #endif
 
-       frr_elevate_privs(&eigrpd_privs) {
+       frr_with_privs(&eigrpd_privs) {
                eigrp_sock = vrf_socket(
                        AF_INET, SOCK_RAW, IPPROTO_EIGRPIGP, vrf->vrf_id,
                        vrf->vrf_id != VRF_DEFAULT ? vrf->name : NULL);
index 4e9aef47adf0f17f87fec51944dd4c498a720bea..d6b85b2fa3ef84a7c919fbaee692ce4e11dd6813 100644 (file)
@@ -187,7 +187,7 @@ int isis_sock_init(struct isis_circuit *circuit)
 {
        int retval = ISIS_OK;
 
-       frr_elevate_privs(&isisd_privs) {
+       frr_with_privs(&isisd_privs) {
 
                retval = open_bpf_dev(circuit);
 
index a96dd93804c047b974e338d7fd2d64a605dc8b02..7d3dfcb01e2f07c9beeaea2993217d2cbf6d8309 100644 (file)
@@ -467,7 +467,7 @@ int isis_sock_init(struct isis_circuit *circuit)
 {
        int retval = ISIS_OK;
 
-       frr_elevate_privs(&isisd_privs) {
+       frr_with_privs(&isisd_privs) {
 
                retval = open_dlpi_dev(circuit);
 
index ea66e6950e68d8c0516297f1bdc1aa8ea6d89164..69ac3fc555b93e4401956a4362cb3ccad046a1cf 100644 (file)
@@ -183,7 +183,7 @@ int isis_sock_init(struct isis_circuit *circuit)
 {
        int retval = ISIS_OK;
 
-       frr_elevate_privs(&isisd_privs) {
+       frr_with_privs(&isisd_privs) {
 
                retval = open_packet_socket(circuit);
 
index b31db2c7bc3feecd63d56aea34e64b46b3d75012..8706d03c6f95dd4999b5662e6a747d9fdf6e903d 100644 (file)
@@ -79,7 +79,7 @@ ldp_create_socket(int af, enum socket_type type)
                sock_set_bindany(fd, 1);
                break;
        }
-       frr_elevate_privs(&ldpd_privs) {
+       frr_with_privs(&ldpd_privs) {
                if (sock_set_reuse(fd, 1) == -1) {
                        close(fd);
                        return (-1);
@@ -254,7 +254,7 @@ int
 sock_set_bindany(int fd, int enable)
 {
 #ifdef HAVE_SO_BINDANY
-       frr_elevate_privs(&ldpd_privs) {
+       frr_with_privs(&ldpd_privs) {
                if (setsockopt(fd, SOL_SOCKET, SO_BINDANY, &enable,
                               sizeof(int)) < 0) {
                        log_warn("%s: error setting SO_BINDANY", __func__);
@@ -269,7 +269,7 @@ sock_set_bindany(int fd, int enable)
        }
        return (0);
 #elif defined(IP_BINDANY)
-       frr_elevate_privs(&ldpd_privs) {
+       frr_with_privs(&ldpd_privs) {
                if (setsockopt(fd, IPPROTO_IP, IP_BINDANY, &enable, sizeof(int))
                    < 0) {
                        log_warn("%s: error setting IP_BINDANY", __func__);
@@ -304,7 +304,7 @@ sock_set_md5sig(int fd, int af, union ldpd_addr *addr, const char *password)
 #if HAVE_DECL_TCP_MD5SIG
        addr2sa(af, addr, 0, &su);
 
-       frr_elevate_privs(&ldpe_privs) {
+       frr_with_privs(&ldpe_privs) {
                ret = sockopt_tcp_signature(fd, &su, password);
                save_errno = errno;
        }
index 2b0b44b3f2f7ca485a3a7e52303592fdc67fac2a..db5707d6750a010b165588b82d66f517fb4b7f28 100644 (file)
@@ -109,16 +109,16 @@ extern void zprivs_get_ids(struct zprivs_ids_t *);
 
 /*
  * Wrapper around zprivs, to be used as:
- *   frr_elevate_privs(&privs) {
+ *   frr_with_privs(&privs) {
  *     ... code ...
  *     if (error)
  *       break;         -- break can be used to get out of the block
  *     ... code ...
  *   }
  *
- * The argument to frr_elevate_privs() can be NULL to leave privileges as-is
+ * The argument to frr_with_privs() can be NULL to leave privileges as-is
  * (mostly useful for conditional privilege-raising, i.e.:)
- *   frr_elevate_privs(cond ? &privs : NULL) {}
+ *   frr_with_privs(cond ? &privs : NULL) {}
  *
  * NB: The code block is always executed, regardless of whether privileges
  * could be raised or not, or whether NULL was given or not.  This is fully
@@ -138,7 +138,7 @@ extern struct zebra_privs_t *_zprivs_raise(struct zebra_privs_t *privs,
                                           const char *funcname);
 extern void _zprivs_lower(struct zebra_privs_t **privs);
 
-#define frr_elevate_privs(privs)                                               \
+#define frr_with_privs(privs)                                               \
        for (struct zebra_privs_t *_once = NULL,                               \
                                  *_privs __attribute__(                       \
                                          (unused, cleanup(_zprivs_lower))) =  \
index 229f19f29ae877a2f2b02ae7c9b65c27e36ae634..575e96bae4540ca5fd024a3ee323185b461ca41f 100644 (file)
--- a/lib/vrf.c
+++ b/lib/vrf.c
@@ -755,7 +755,7 @@ DEFUN_NOSH (vrf_netns,
        if (!pathname)
                return CMD_WARNING_CONFIG_FAILED;
 
-       frr_elevate_privs(vrf_daemon_privs) {
+       frr_with_privs(vrf_daemon_privs) {
                ret = vrf_netns_handler_create(vty, vrf, pathname,
                                               NS_UNKNOWN, NS_UNKNOWN);
        }
index 625ad884f2f7a8d09bb2422af500f7b2882ceb76..9a18680b8b532c1a2fa16b430c58ab2d9fafeaae 100644 (file)
@@ -85,7 +85,7 @@ void ospf6_serv_close(void)
 /* Make ospf6d's server socket. */
 int ospf6_serv_sock(void)
 {
-       frr_elevate_privs(&ospf6d_privs) {
+       frr_with_privs(&ospf6d_privs) {
 
                ospf6_sock = socket(AF_INET6, SOCK_RAW, IPPROTO_OSPFIGP);
                if (ospf6_sock < 0) {
index 1415a6e8b748f54ed779c399b958f9f2a6c78b1f..b8e2dac70e83f30a7a09680f3dff6bfe77814658 100644 (file)
@@ -190,7 +190,7 @@ int ospf_sock_init(struct ospf *ospf)
                /* silently return since VRF is not ready */
                return -1;
        }
-       frr_elevate_privs(&ospfd_privs) {
+       frr_with_privs(&ospfd_privs) {
                ospf_sock = vrf_socket(AF_INET, SOCK_RAW, IPPROTO_OSPFIGP,
                                       ospf->vrf_id, ospf->name);
                if (ospf_sock < 0) {
index b91a55f6351049ea467be0e0231758358e1dc0e1..e48a5b4d369bce43d37c8c91756ed6e3420ce655 100644 (file)
@@ -2097,7 +2097,7 @@ static int ospf_vrf_enable(struct vrf *vrf)
                                old_vrf_id);
 
                if (old_vrf_id != ospf->vrf_id) {
-                       frr_elevate_privs(&ospfd_privs) {
+                       frr_with_privs(&ospfd_privs) {
                                /* stop zebra redist to us for old vrf */
                                zclient_send_dereg_requests(zclient,
                                                            old_vrf_id);
index 1c66007fbb467de0823d5ad6364cb8dd4780d57a..f7f4b54aead1ff25f8cf70d83f7446ad5af54f27 100644 (file)
@@ -57,7 +57,7 @@ static int pim_mroute_set(struct pim_instance *pim, int enable)
         * We need to create the VRF table for the pim mroute_socket
         */
        if (pim->vrf_id != VRF_DEFAULT) {
-               frr_elevate_privs(&pimd_privs) {
+               frr_with_privs(&pimd_privs) {
 
                        data = pim->vrf->data.l.table_id;
                        err = setsockopt(pim->mroute_socket, IPPROTO_IP,
@@ -75,7 +75,7 @@ static int pim_mroute_set(struct pim_instance *pim, int enable)
                }
        }
 
-       frr_elevate_privs(&pimd_privs) {
+       frr_with_privs(&pimd_privs) {
                opt = enable ? MRT_INIT : MRT_DONE;
                /*
                 * *BSD *cares* about what value we pass down
@@ -735,7 +735,7 @@ int pim_mroute_socket_enable(struct pim_instance *pim)
 {
        int fd;
 
-       frr_elevate_privs(&pimd_privs) {
+       frr_with_privs(&pimd_privs) {
 
                fd = socket(AF_INET, SOCK_RAW, IPPROTO_IGMP);
 
index b1f7cfd2c66b57b05e170b2f06735138308c2e40..22eb8bc7b40061ab0d8d15d4b01d44b215421be1 100644 (file)
@@ -175,7 +175,7 @@ int pim_msdp_sock_listen(struct pim_instance *pim)
                }
        }
 
-       frr_elevate_privs(&pimd_privs) {
+       frr_with_privs(&pimd_privs) {
                /* bind to well known TCP port */
                rc = bind(sock, (struct sockaddr *)&sin, socklen);
        }
index c4538a4ac52e83d4ccbae8d25b88320c981899f4..82255cd3b077f6bc679b172f52bdb6dd04831a33 100644 (file)
@@ -46,7 +46,7 @@ int pim_socket_raw(int protocol)
 {
        int fd;
 
-       frr_elevate_privs(&pimd_privs) {
+       frr_with_privs(&pimd_privs) {
 
                fd = socket(AF_INET, SOCK_RAW, protocol);
 
@@ -65,7 +65,7 @@ void pim_socket_ip_hdr(int fd)
 {
        const int on = 1;
 
-       frr_elevate_privs(&pimd_privs) {
+       frr_with_privs(&pimd_privs) {
 
                if (setsockopt(fd, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)))
                        zlog_err("%s: Could not turn on IP_HDRINCL option: %s",
@@ -83,7 +83,7 @@ int pim_socket_bind(int fd, struct interface *ifp)
        int ret = 0;
 #ifdef SO_BINDTODEVICE
 
-       frr_elevate_privs(&pimd_privs) {
+       frr_with_privs(&pimd_privs) {
 
                ret = setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, ifp->name,
                                 strlen(ifp->name));
index 561fbcb52d1b33b3bdc8cd4950b4a18d54fee0b5..ad373aebdfbbf3cfc9af9edb1de934d2705cfdde 100644 (file)
@@ -1395,7 +1395,7 @@ int rip_create_socket(struct vrf *vrf)
        /* Make datagram socket. */
        if (vrf->vrf_id != VRF_DEFAULT)
                vrf_dev = vrf->name;
-       frr_elevate_privs(&ripd_privs) {
+       frr_with_privs(&ripd_privs) {
                sock = vrf_socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP, vrf->vrf_id,
                                  vrf_dev);
                if (sock < 0) {
@@ -1415,7 +1415,7 @@ int rip_create_socket(struct vrf *vrf)
 #endif
        setsockopt_so_recvbuf(sock, RIP_UDP_RCV_BUF);
 
-       frr_elevate_privs(&ripd_privs) {
+       frr_with_privs(&ripd_privs) {
                if ((ret = bind(sock, (struct sockaddr *)&addr, sizeof(addr)))
                    < 0) {
                        zlog_err("%s: Can't bind socket %d to %s port %d: %s",
index 49ed13a2c29b416d67275f3f86704f8b6473baa5..9ed9dc28feb22c9de5ae9bda91f6685fe1fe8226 100644 (file)
@@ -75,7 +75,7 @@ static int ripng_multicast_join(struct interface *ifp, int sock)
                 * While this is bogus, privs are available and easy to use
                 * for this call as a workaround.
                 */
-               frr_elevate_privs(&ripngd_privs) {
+               frr_with_privs(&ripngd_privs) {
 
                        ret = setsockopt(sock, IPPROTO_IPV6, IPV6_JOIN_GROUP,
                                         (char *)&mreq, sizeof(mreq));
index 3314892e74afded39219148b8c4c4cf1823152e5..49f7dda646a9cac67282986bfab019e1fd7b0451 100644 (file)
@@ -120,8 +120,7 @@ int ripng_make_socket(struct vrf *vrf)
        /* Make datagram socket. */
        if (vrf->vrf_id != VRF_DEFAULT)
                vrf_dev = vrf->name;
-       frr_elevate_privs(&ripngd_privs)
-       {
+       frr_with_privs(&ripngd_privs) {
                sock = vrf_socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP,
                                  vrf->vrf_id, vrf_dev);
                if (sock < 0) {
@@ -160,7 +159,7 @@ int ripng_make_socket(struct vrf *vrf)
 #endif /* SIN6_LEN */
        ripaddr.sin6_port = htons(RIPNG_PORT_DEFAULT);
 
-       frr_elevate_privs(&ripngd_privs) {
+       frr_with_privs(&ripngd_privs) {
                ret = bind(sock, (struct sockaddr *)&ripaddr, sizeof(ripaddr));
                if (ret < 0) {
                        zlog_err("Can't bind ripng socket: %s.",
index fc3d908661f34b6af16e3017a3d20f4f8c90aac0..de638bc67a3e0df1792587ee5e3987c13ecf90f1 100644 (file)
@@ -113,7 +113,7 @@ int main(int argc, char **argv)
        ((test_privs.current_state() == ZPRIVS_RAISED) ? "Raised" : "Lowered")
 
        printf("%s\n", PRIV_STATE());
-       frr_elevate_privs(&test_privs) {
+       frr_with_privs(&test_privs) {
                printf("%s\n", PRIV_STATE());
        }
 
@@ -125,7 +125,7 @@ int main(int argc, char **argv)
 
        /* but these should continue to work... */
        printf("%s\n", PRIV_STATE());
-       frr_elevate_privs(&test_privs) {
+       frr_with_privs(&test_privs) {
                printf("%s\n", PRIV_STATE());
        }
 
index 76d13c3f0d49f06b7e4928d8ef090b14d408f6d9..11628a7eae754c90c64be5cb9ddabd29b93dd1b2 100644 (file)
@@ -2,12 +2,12 @@
 identifier change;
 identifier end;
 expression E, f, g;
-iterator name frr_elevate_privs;
+iterator name frr_with_privs;
 @@
 
 - if (E.change(ZPRIVS_RAISE))
 -   f;
-+ frr_elevate_privs(&E) {
++ frr_with_privs(&E) {
   <+...
 -   goto end;
 +   break;
@@ -20,7 +20,7 @@ iterator name frr_elevate_privs;
 @@
 identifier change, errno, safe_strerror, exit;
 expression E, f1, f2, f3, ret, fn;
-iterator name frr_elevate_privs;
+iterator name frr_with_privs;
 @@
 
   if (E.change(ZPRIVS_RAISE))
@@ -44,7 +44,7 @@ iterator name frr_elevate_privs;
 @@
 identifier change;
 expression E, f1, f2, f3, ret;
-iterator name frr_elevate_privs;
+iterator name frr_with_privs;
 @@
 
   if (E.change(ZPRIVS_RAISE))
@@ -64,12 +64,12 @@ iterator name frr_elevate_privs;
 @@
 identifier change;
 expression E, f, g;
-iterator name frr_elevate_privs;
+iterator name frr_with_privs;
 @@
 
 - if (E.change(ZPRIVS_RAISE))
 -   f;
-+ frr_elevate_privs(&E) {
++ frr_with_privs(&E) {
   ...
 - if (E.change(ZPRIVS_LOWER))
 -   g;
index 951ad3f58fbeda76411315a5dd15b7174326bb06..b4049b55eb9c5f98be71ca6bdcc94fd61dfbf970 100644 (file)
@@ -1065,8 +1065,7 @@ static int vrrp_socket(struct vrrp_router *r)
        int ret;
        bool failed = false;
 
-       frr_elevate_privs(&vrrp_privs)
-       {
+       frr_with_privs(&vrrp_privs) {
                r->sock_rx = socket(r->family, SOCK_RAW, IPPROTO_VRRP);
                r->sock_tx = socket(r->family, SOCK_RAW, IPPROTO_VRRP);
        }
@@ -1102,8 +1101,7 @@ static int vrrp_socket(struct vrrp_router *r)
                setsockopt_ipv4_multicast_loop(r->sock_tx, 0);
 
                /* Bind Rx socket to exact interface */
-               frr_elevate_privs(&vrrp_privs)
-               {
+               frr_with_privs(&vrrp_privs) {
                        ret = setsockopt(r->sock_rx, SOL_SOCKET,
                                         SO_BINDTODEVICE, r->vr->ifp->name,
                                         strlen(r->vr->ifp->name));
@@ -1213,8 +1211,7 @@ static int vrrp_socket(struct vrrp_router *r)
                setsockopt_ipv6_multicast_loop(r->sock_tx, 0);
 
                /* Bind Rx socket to exact interface */
-               frr_elevate_privs(&vrrp_privs)
-               {
+               frr_with_privs(&vrrp_privs) {
                        ret = setsockopt(r->sock_rx, SOL_SOCKET,
                                         SO_BINDTODEVICE, r->vr->ifp->name,
                                         strlen(r->vr->ifp->name));
index 78e153a082245d0b6a83f5dfbd94c0b5115fb36f..750050e8c33bd414921112101c121045d7711732 100644 (file)
@@ -188,7 +188,7 @@ void vrrp_garp_init(void)
        /* Create the socket descriptor */
        /* FIXME: why ETH_P_RARP? */
        errno = 0;
-       frr_elevate_privs(&vrrp_privs) {
+       frr_with_privs(&vrrp_privs) {
                garp_fd = socket(PF_PACKET, SOCK_RAW | SOCK_CLOEXEC,
                                 htons(ETH_P_RARP));
        }
index 348958509a97e187471080230314d63797c08961..dc546b09a2cc4077420fff363dfbeee9ca32d85a 100644 (file)
@@ -214,8 +214,7 @@ int vrrp_ndisc_una_send_all(struct vrrp_router *r)
 
 void vrrp_ndisc_init(void)
 {
-       frr_elevate_privs(&vrrp_privs)
-       {
+       frr_with_privs(&vrrp_privs) {
                ndisc_fd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_IPV6));
        }
 
index 8b539a90499532be23337701a1d198098a7160c2..2a2504ebf8adec7b49a23a15bd6623ee7e08e8d9 100644 (file)
@@ -60,7 +60,7 @@ static int interface_list_ioctl(int af)
        size_t needed, lastneeded = 0;
        char *buf = NULL;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                sock = socket(af, SOCK_DGRAM, 0);
        }
 
@@ -72,7 +72,7 @@ static int interface_list_ioctl(int af)
        }
 
 calculate_lifc_len:
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                lifn.lifn_family = af;
                lifn.lifn_flags = LIFC_NOXMIT;
                /* we want NOXMIT interfaces too */
@@ -107,7 +107,7 @@ calculate_lifc_len:
        lifconf.lifc_len = needed;
        lifconf.lifc_buf = buf;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                ret = ioctl(sock, SIOCGLIFCONF, &lifconf);
        }
 
index e157c2d70ad611a134af79a73fad268df4b637e5..c71b95f753ad894648408b6962691642db21d69b 100644 (file)
@@ -385,7 +385,7 @@ static int get_iflink_speed(struct interface *interface)
        ifdata.ifr_data = (caddr_t)&ecmd;
 
        /* use ioctl to get IP address of an interface */
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                sd = vrf_socket(PF_INET, SOCK_DGRAM, IPPROTO_IP,
                                interface->vrf_id,
                                NULL);
index 8202e076afb49cf387408d95d38b12f077b3036b..b461a0888184fdb148648ca351513f7dc18dfd7e 100644 (file)
@@ -57,7 +57,7 @@ int if_ioctl(unsigned long request, caddr_t buffer)
        int ret;
        int err = 0;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                sock = socket(AF_INET, SOCK_DGRAM, 0);
                if (sock < 0) {
                        zlog_err("Cannot create UDP socket: %s",
@@ -83,7 +83,7 @@ int vrf_if_ioctl(unsigned long request, caddr_t buffer, vrf_id_t vrf_id)
        int ret;
        int err = 0;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                sock = vrf_socket(AF_INET, SOCK_DGRAM, 0, vrf_id, NULL);
                if (sock < 0) {
                        zlog_err("Cannot create UDP socket: %s",
@@ -110,7 +110,7 @@ static int if_ioctl_ipv6(unsigned long request, caddr_t buffer)
        int ret;
        int err = 0;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                sock = socket(AF_INET6, SOCK_DGRAM, 0);
                if (sock < 0) {
                        zlog_err("Cannot create IPv6 datagram socket: %s",
index 1f96fa23ea3af4b2c1368c1171ecaa3b33f94395..2c71d949f75fec74615f637dd3548fccd689878e 100644 (file)
@@ -66,7 +66,7 @@ int if_ioctl(unsigned long request, caddr_t buffer)
        int ret;
        int err;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
 
                sock = socket(AF_INET, SOCK_DGRAM, 0);
                if (sock < 0) {
@@ -96,7 +96,7 @@ int if_ioctl_ipv6(unsigned long request, caddr_t buffer)
        int ret;
        int err;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
 
                sock = socket(AF_INET6, SOCK_DGRAM, 0);
                if (sock < 0) {
index 8f44c377b33ecf873be3453ea95e808816f0f499..709d2176aa01529a6efa2e16df360178d5428639 100644 (file)
@@ -76,7 +76,7 @@ int ipforward_on(void)
 {
        FILE *fp;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
 
                fp = fopen(proc_ipv4_forwarding, "w");
 
@@ -97,7 +97,7 @@ int ipforward_off(void)
 {
        FILE *fp;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
 
                fp = fopen(proc_ipv4_forwarding, "w");
 
@@ -143,7 +143,7 @@ int ipforward_ipv6_on(void)
 {
        FILE *fp;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
 
                fp = fopen(proc_ipv6_forwarding, "w");
 
@@ -165,7 +165,7 @@ int ipforward_ipv6_off(void)
 {
        FILE *fp;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
 
                fp = fopen(proc_ipv6_forwarding, "w");
 
index 1bb743059c7b3e3060110849010ec982e73b47f5..1a45328248be9ac8f393504eaca233a0a1d73cd8 100644 (file)
@@ -83,7 +83,7 @@ static int solaris_nd(const int cmd, const char *parameter, const int value)
        strioctl.ic_len = ND_BUFFER_SIZE;
        strioctl.ic_dp = nd_buf;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                if ((fd = open(device, O_RDWR)) < 0) {
                        flog_err_sys(EC_LIB_SYSTEM_CALL,
                                     "failed to open device %s - %s", device,
index cc9421c2754db5f51eb3861dc5b81f0ee76f9f20..ac8f5370759bbfc5b81c85ca15303c68b2e2e7a6 100644 (file)
@@ -56,7 +56,7 @@ int ipforward_on(void)
        int ipforwarding = 1;
 
        len = sizeof ipforwarding;
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                if (sysctl(mib, MIB_SIZ, NULL, NULL, &ipforwarding, len) < 0) {
                        flog_err_sys(EC_LIB_SYSTEM_CALL,
                                     "Can't set ipforwarding on");
@@ -72,7 +72,7 @@ int ipforward_off(void)
        int ipforwarding = 0;
 
        len = sizeof ipforwarding;
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                if (sysctl(mib, MIB_SIZ, NULL, NULL, &ipforwarding, len) < 0) {
                        flog_err_sys(EC_LIB_SYSTEM_CALL,
                                     "Can't set ipforwarding on");
@@ -97,7 +97,7 @@ int ipforward_ipv6(void)
        int ip6forwarding = 0;
 
        len = sizeof ip6forwarding;
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                if (sysctl(mib_ipv6, MIB_SIZ, &ip6forwarding, &len, 0, 0) < 0) {
                        flog_err_sys(EC_LIB_SYSTEM_CALL,
                                     "can't get ip6forwarding value");
@@ -113,7 +113,7 @@ int ipforward_ipv6_on(void)
        int ip6forwarding = 1;
 
        len = sizeof ip6forwarding;
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                if (sysctl(mib_ipv6, MIB_SIZ, NULL, NULL, &ip6forwarding, len)
                    < 0) {
                        flog_err_sys(EC_LIB_SYSTEM_CALL,
@@ -130,7 +130,7 @@ int ipforward_ipv6_off(void)
        int ip6forwarding = 0;
 
        len = sizeof ip6forwarding;
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                if (sysctl(mib_ipv6, MIB_SIZ, NULL, NULL, &ip6forwarding, len)
                    < 0) {
                        flog_err_sys(EC_LIB_SYSTEM_CALL,
index 38d241eaa5b45c5624109281b878878096bc07a3..0de618625d770e67bb41edc402b7856c55b44183 100644 (file)
@@ -82,7 +82,7 @@ int irdp_sock_init(void)
        int save_errno;
        int sock;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
 
                sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
                save_errno = errno;
index 2c306434a36dca516e0736137c81ced52a7ada85..f52b4746ae7f0472dc9da9f0f7eb523a6781288f 100644 (file)
@@ -183,7 +183,7 @@ static int netlink_recvbuf(struct nlsock *nl, uint32_t newsize)
        }
 
        /* Try force option (linux >= 2.6.14) and fall back to normal set */
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                ret = setsockopt(nl->sock, SOL_SOCKET, SO_RCVBUFFORCE,
                                 &nl_rcvbufsize,
                                 sizeof(nl_rcvbufsize));
@@ -220,7 +220,7 @@ static int netlink_socket(struct nlsock *nl, unsigned long groups,
        int sock;
        int namelen;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                sock = ns_socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE, ns_id);
                if (sock < 0) {
                        zlog_err("Can't open %s socket: %s", nl->name,
@@ -352,7 +352,7 @@ static void netlink_write_incoming(const char *buf, const unsigned int size,
        FILE *f;
 
        snprintf(fname, MAXPATHLEN, "%s/%s_%u", frr_vtydir, "netlink", counter);
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                f = fopen(fname, "w");
        }
        if (f) {
@@ -373,7 +373,7 @@ static long netlink_read_file(char *buf, const char *fname)
        FILE *f;
        long file_bytes = -1;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                f = fopen(fname, "r");
        }
        if (f) {
@@ -989,7 +989,7 @@ int netlink_talk_info(int (*filter)(struct nlmsghdr *, ns_id_t, int startup),
                        n->nlmsg_flags);
 
        /* Send message to netlink interface. */
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                status = sendmsg(nl->sock, &msg, 0);
                save_errno = errno;
        }
@@ -1056,7 +1056,7 @@ int netlink_request(struct nlsock *nl, struct nlmsghdr *n)
        snl.nl_family = AF_NETLINK;
 
        /* Raise capabilities and send message, then lower capabilities. */
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                ret = sendto(nl->sock, (void *)n, n->nlmsg_len, 0,
                             (struct sockaddr *)&snl, sizeof snl);
        }
index 156ce50725ec758d6e99f5594006a9f38912bf1c..60fbbcc0598f4eb8e0fefd1be2cee804f0286a1b 100644 (file)
@@ -1426,7 +1426,7 @@ static int kernel_read(struct thread *thread)
 /* Make routing socket. */
 static void routing_socket(struct zebra_ns *zns)
 {
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                routing_sock = ns_socket(AF_ROUTE, SOCK_RAW, 0, zns->ns_id);
 
                dplane_routing_sock =
index 7e9a42a6177d0158429218d05607d6eb515bc8c0..ea3b2b6ad8fff36a5b72860421e5737c58d63742 100644 (file)
@@ -314,7 +314,7 @@ enum zebra_dplane_result kernel_route_update(struct zebra_dplane_ctx *ctx)
        type = dplane_ctx_get_type(ctx);
        old_type = dplane_ctx_get_old_type(ctx);
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
 
                if (dplane_ctx_get_op(ctx) == DPLANE_OP_ROUTE_DELETE) {
                        if (!RSYSTEM_ROUTE(type))
index 5841c44b0334fa152735397c2b956cf933478802..b084fb99ca1152b888912c5dd436bf80d8bfc36b 100644 (file)
@@ -760,7 +760,7 @@ static int rtadv_make_socket(ns_id_t ns_id)
        int ret = 0;
        struct icmp6_filter filter;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
 
                sock = ns_socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6, ns_id);
 
index b6a8ee950c3d94905e86a91fa7ae2a2ab1eef497..fa6a2f62ec00318cbe329ff207214e44b0d5daee 100644 (file)
@@ -2507,7 +2507,7 @@ static void zserv_write_incoming(struct stream *orig, uint16_t command)
 
        snprintf(fname, MAXPATHLEN, "%s/%u", frr_vtydir, command);
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                fd = open(fname, O_CREAT | O_WRONLY | O_EXCL, 0644);
        }
        stream_flush(copy, fd);
index 9f3ea70c77aa5b4035889584e9872df4cc3edc65..fcd476dc2c35a26e75be8b32842ee5f253515e75 100644 (file)
@@ -119,7 +119,7 @@ static int kernel_send_rtmsg_v4(int action, mpls_label_t in_label,
                        hdr.rtm_mpls = MPLS_OP_SWAP;
        }
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                ret = writev(kr_state.fd, iov, iovcnt);
        }
 
@@ -226,7 +226,7 @@ static int kernel_send_rtmsg_v6(int action, mpls_label_t in_label,
                        hdr.rtm_mpls = MPLS_OP_SWAP;
        }
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                ret = writev(kr_state.fd, iov, iovcnt);
        }
 
index 476638591bec231726b9be673e84d302718b8f5a..d42cf3d60a22f3527aa3e11fe3334036af4d2961 100644 (file)
@@ -77,7 +77,7 @@ static void zebra_ns_notify_create_context_from_entry_name(const char *name)
        if (netnspath == NULL)
                return;
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                ns_id = zebra_ns_id_get(netnspath);
        }
        if (ns_id == NS_UNKNOWN)
@@ -97,7 +97,7 @@ static void zebra_ns_notify_create_context_from_entry_name(const char *name)
                ns_map_nsid_with_external(ns_id, false);
                return;
        }
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                ret = vrf_netns_handler_create(NULL, vrf, netnspath,
                                               ns_id_external, ns_id);
        }
@@ -202,14 +202,14 @@ static int zebra_ns_ready_read(struct thread *t)
        netnspath = zns_info->netnspath;
        if (--zns_info->retries == 0)
                stop_retry = 1;
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                err = ns_switch_to_netns(netnspath);
        }
        if (err < 0)
                return zebra_ns_continue_read(zns_info, stop_retry);
 
        /* go back to default ns */
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                err = ns_switchback_to_initial();
        }
        if (err < 0)
index 94918365a330e4e50c20344b0b79e2e5d1304d96..37f53bf91187fddf220624d9480b3cd0c64de4a4 100644 (file)
@@ -180,7 +180,7 @@ int zebra_ns_init(const char *optional_default_name)
 
        dzns = zebra_ns_alloc();
 
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                ns_id = zebra_ns_id_get_default();
        }
        ns_id_external = ns_map_nsid_with_external(ns_id, true);
index bd75b66a20c0c43f109fbf89761e717fc8893ee5..c008441d6abad57c7d782e1438c2ca5149cac1d9 100644 (file)
@@ -782,7 +782,7 @@ void zserv_start(char *path)
        setsockopt_so_recvbuf(zsock, 1048576);
        setsockopt_so_sendbuf(zsock, 1048576);
 
-       frr_elevate_privs((sa.ss_family != AF_UNIX) ? &zserv_privs : NULL) {
+       frr_with_privs((sa.ss_family != AF_UNIX) ? &zserv_privs : NULL) {
                ret = bind(zsock, (struct sockaddr *)&sa, sa_len);
        }
        if (ret < 0) {