diff options
author | paul <paul> | 2003-05-27 09:56:50 +0000 |
---|---|---|
committer | paul <paul> | 2003-05-27 09:56:50 +0000 |
commit | a936270941b204662fbc65fe1089a822c3d009e0 (patch) | |
tree | abeaef78c743f78969e90105b83d9ebe28f487fd /zebra/kernel_socket.c | |
parent | a2642228fa2f7f4a287d05f17e09fb63953a05aa (diff) | |
download | quagga-a936270941b204662fbc65fe1089a822c3d009e0.tar.bz2 quagga-a936270941b204662fbc65fe1089a822c3d009e0.tar.xz |
Rivo Nurgess:
- privs ports for zebra/kernel_socket.c and zebra/ipforward_solaris.c
- configure fix for VTY_GROUP.
Paul Jakma: add lib/debug.?
- lib/zebra.h,lib/debug.{c,h}: experimental glibc backtrace support
- Little tweaks and fixes to lib/privs.?
- ospfd/ospf_main.c: tweaks, add experimental backtrace suppor (glibc only)
- Cleanup configure.ac IPv6 handling.
- remove acconfig.h
- update cvsignore's
- tweaks to redhat spec file, add users/groups
Diffstat (limited to 'zebra/kernel_socket.c')
-rw-r--r-- | zebra/kernel_socket.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c index 17893a87..30e0fb1d 100644 --- a/zebra/kernel_socket.c +++ b/zebra/kernel_socket.c @@ -31,11 +31,14 @@ #include "str.h" #include "table.h" #include "rib.h" +#include "privs.h" #include "zebra/interface.h" #include "zebra/zserv.h" #include "zebra/debug.h" +extern struct zebra_privs_t zserv_privs; + /* Socket length roundup function. */ #define ROUNDUP(a) \ ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long)) @@ -798,16 +801,23 @@ kernel_read (struct thread *thread) void routing_socket () { + if ( zserv_privs.change (ZPRIVS_RAISE) ) + zlog_err ("routing_socket: Can't raise privileges"); + routing_sock = socket (AF_ROUTE, SOCK_RAW, 0); if (routing_sock < 0) { + if ( zserv_privs.change (ZPRIVS_LOWER) ) + zlog_err ("routing_socket: Can't lower privileges"); zlog_warn ("Can't init kernel routing socket"); return; } if (fcntl (routing_sock, F_SETFL, O_NONBLOCK) < 0) zlog_warn ("Can't set O_NONBLOCK to routing socket"); + if ( zserv_privs.change (ZPRIVS_LOWER) ) + zlog_err ("routing_socket: Can't lower privileges"); /* kernel_read needs rewrite. */ thread_add_read (master, kernel_read, NULL, routing_sock); |