]> git.puffer.fish Git - mirror/frr.git/commitdiff
2003-11-17 Hasso Tepper <hasso@estpak.ee>
authorpaul <paul>
Mon, 17 Nov 2003 09:04:53 +0000 (09:04 +0000)
committerpaul <paul>
Mon, 17 Nov 2003 09:04:53 +0000 (09:04 +0000)
        * ripngd/ripngd.c: ripng_make_socket() add calls to raise/lower
          privs.

ripngd/ripngd.c

index 94a5efbc5222522233f1881643b71caa0be71afe..e203dc403ef9c24a21fe116b51a8550c5e537a4c 100644 (file)
@@ -35,6 +35,7 @@
 #include "plist.h"
 #include "routemap.h"
 #include "if_rmap.h"
+#include "privs.h"
 
 #include "ripngd/ripngd.h"
 #include "ripngd/ripng_route.h"
@@ -52,6 +53,8 @@ enum
   ripng_changed_route,
 };
 
+extern struct zebra_privs_t ripngd_privs;
+
 /* Prototypes. */
 void
 ripng_output_process (struct interface *, struct sockaddr_in6 *, int);
@@ -153,12 +156,19 @@ ripng_make_socket (void)
 #endif /* SIN6_LEN */
   ripaddr.sin6_port = htons (RIPNG_PORT_DEFAULT);
 
+  if (ripngd_privs.change (ZPRIVS_RAISE))
+    zlog_err ("ripng_make_socket: could not raise privs");
+  
   ret = bind (sock, (struct sockaddr *) &ripaddr, sizeof (ripaddr));
   if (ret < 0)
-    {
-      zlog (NULL, LOG_ERR, "Can't bind ripng socket: %s.", strerror (errno));
-      return ret;
-    }
+  {
+    zlog (NULL, LOG_ERR, "Can't bind ripng socket: %s.", strerror (errno));
+    if (ripngd_privs.change (ZPRIVS_LOWER))
+      zlog_err ("ripng_make_socket: could not lower privs");
+    return ret;
+  }
+  if (ripngd_privs.change (ZPRIVS_LOWER))
+    zlog_err ("ripng_make_socket: could not lower privs");
   return sock;
 }