summaryrefslogtreecommitdiffstats
path: root/pimd/pim_sock.c
diff options
context:
space:
mode:
authorLeonard Herve <leonard.herve@yahoo.fr>2009-08-11 15:45:26 -0300
committerEverton Marques <everton.marques@gmail.com>2009-10-02 10:44:30 -0300
commit40b0f20733365209141491e3c45ebaf63979d835 (patch)
treef8eee75eb1e43e94acf826699d3e8bc51672a9d1 /pimd/pim_sock.c
parentf1bad8260c8c9942057c569b2a1a687a92b54862 (diff)
downloadquagga-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.c13
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));