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_solaris.c b/zebra/ioctl_solaris.c
index 8ebd0f4..5ec327a 100644
--- a/zebra/ioctl_solaris.c
+++ b/zebra/ioctl_solaris.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");
@@ -61,15 +61,12 @@
       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)
@@ -86,8 +83,8 @@
 {
 #ifdef HAVE_IPV6
   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");
@@ -101,15 +98,12 @@
       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)