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/irdp_main.c b/zebra/irdp_main.c
index 8c16448..0db2a54 100644
--- a/zebra/irdp_main.c
+++ b/zebra/irdp_main.c
@@ -101,19 +101,21 @@
 irdp_sock_init (void)
 {
   int ret, i;
+  int save_errno;
 
   if ( zserv_privs.change (ZPRIVS_RAISE) )
        zlog_err ("irdp_sock_init: could not raise privs, %s",
                   safe_strerror (errno) );
 
   irdp_sock = socket (AF_INET, SOCK_RAW, IPPROTO_ICMP);
+  save_errno = errno;
 
   if ( zserv_privs.change (ZPRIVS_LOWER) )
        zlog_err ("irdp_sock_init: could not lower privs, %s",
              safe_strerror (errno) );
 
   if (irdp_sock < 0) {
-    zlog_warn ("IRDP: can't create irdp socket %s", safe_strerror(errno));
+    zlog_warn ("IRDP: can't create irdp socket %s", safe_strerror(save_errno));
     return irdp_sock;
   };