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/ipforward_solaris.c b/zebra/ipforward_solaris.c
index 2eaf341..3ad2c40 100644
--- a/zebra/ipforward_solaris.c
+++ b/zebra/ipforward_solaris.c
@@ -87,10 +87,12 @@
     }
   if (ioctl (fd, I_STR, &strioctl) < 0) 
     {
+      int save_errno = errno;
       if ( zserv_privs.change (ZPRIVS_LOWER) )
         zlog_err ("solaris_nd: Can't lower privileges");
       close (fd);
-      zlog_warn("ioctl I_STR failed on device %s - %s", device,safe_strerror(errno));
+      zlog_warn("ioctl I_STR failed on device %s - %s",
+      		device, safe_strerror(save_errno));
       return -1;
     }
   close(fd);