2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* if_ioctl_solaris.c: (interface_list_ioctl) Save errno before calling
	  zserv_privs.change.
	* ioctl{,_solaris}.c: (if_ioctl,if_ioctl_ipv6) Save errno before calling
	  zserv_privs.change.
	* ipforward_solaris.c: (solaris_nd) Save errno before calling
	  zserv_privs.change.
	* irdp_main.c: (irdp_sock_init) Save errno before calling
	  zserv_privs.change.

	[backport candidate]
diff --git a/zebra/ioctl.c b/zebra/ioctl.c
index eca0e76..e28d359 100644
--- a/zebra/ioctl.c
+++ b/zebra/ioctl.c
@@ -46,8 +46,8 @@
 if_ioctl (u_long request, caddr_t buffer)
 {
   int sock;
-  int ret = 0;
-  int err = 0;
+  int ret;
+  int err;
 
   if (zserv_privs.change(ZPRIVS_RAISE))
     zlog (NULL, LOG_ERR, "Can't raise privileges");
@@ -59,13 +59,10 @@
       perror ("socket");
       exit (1);
     }
-  ret = ioctl (sock, request, buffer);
+  if ((ret = ioctl (sock, request, buffer)) < 0)
+    err = errno;
   if (zserv_privs.change(ZPRIVS_LOWER))
     zlog (NULL, LOG_ERR, "Can't lower privileges");
-  if (ret < 0)
-    {
-      err = errno;
-    }
   close (sock);
   
   if (ret < 0) 
@@ -81,8 +78,8 @@
 if_ioctl_ipv6 (u_long request, caddr_t buffer)
 {
   int sock;
-  int ret = 0;
-  int err = 0;
+  int ret;
+  int err;
 
   if (zserv_privs.change(ZPRIVS_RAISE))
     zlog (NULL, LOG_ERR, "Can't raise privileges");
@@ -95,14 +92,10 @@
       exit (1);
     }
 
-  ret = ioctl (sock, request, buffer);
+  if ((ret = ioctl (sock, request, buffer)) < 0)
+    err = errno;
   if (zserv_privs.change(ZPRIVS_LOWER))
     zlog (NULL, LOG_ERR, "Can't lower privileges");
- 
-  if (ret < 0)
-    {
-      err = errno;
-    }
   close (sock);
   
   if (ret < 0)