diff options
author | Leonard Herve <leonard.herve@yahoo.fr> | 2009-08-11 15:45:26 -0300 |
---|---|---|
committer | Everton Marques <everton.marques@gmail.com> | 2009-10-02 10:44:30 -0300 |
commit | 40b0f20733365209141491e3c45ebaf63979d835 (patch) | |
tree | f8eee75eb1e43e94acf826699d3e8bc51672a9d1 /pimd/pim_sock.c | |
parent | f1bad8260c8c9942057c569b2a1a687a92b54862 (diff) | |
download | quagga-40b0f20733365209141491e3c45ebaf63979d835.tar.bz2 quagga-40b0f20733365209141491e3c45ebaf63979d835.tar.xz |
[pim] pim commands added to vtysh
Diffstat (limited to 'pimd/pim_sock.c')
-rw-r--r-- | pimd/pim_sock.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/pimd/pim_sock.c b/pimd/pim_sock.c index c43cb68e..9f346411 100644 --- a/pimd/pim_sock.c +++ b/pimd/pim_sock.c @@ -33,11 +33,15 @@ #include <zebra.h> #include "log.h" +#include "privs.h" #include "pimd.h" #include "pim_sock.h" #include "pim_str.h" +/* GLOBAL VARS */ +extern struct zebra_privs_t pimd_privs; + #ifndef MCAST_JOIN_SOURCE_GROUP #define MCAST_JOIN_SOURCE_GROUP 46 struct group_source_req @@ -52,7 +56,16 @@ int pim_socket_raw(int protocol) { int fd; + if ( pimd_privs.change (ZPRIVS_RAISE) ) + zlog_err ("pim_sockek_raw: could not raise privs, %s", + safe_strerror (errno) ); + fd = socket(AF_INET, SOCK_RAW, protocol); + + if ( pimd_privs.change (ZPRIVS_LOWER) ) + zlog_err ("pim_socket_raw: could not lower privs, %s", + safe_strerror (errno) ); + if (fd < 0) { zlog_warn("Could not create raw socket: errno=%d: %s", errno, strerror(errno)); |