From 0b7d97d293af645d98bc9b196b228d674b2aa344 Mon Sep 17 00:00:00 2001 From: ajs Date: Sun, 30 Jan 2005 17:24:02 +0000 Subject: 2005-01-30 Andrew J. Schorr * ospf_network.c: (ospf_sock_init) Save errno before calling ospfd_privs.change. --- ospfd/ospf_network.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'ospfd/ospf_network.c') diff --git a/ospfd/ospf_network.c b/ospfd/ospf_network.c index 035993e2..c2c8b133 100644 --- a/ospfd/ospf_network.c +++ b/ospfd/ospf_network.c @@ -177,11 +177,12 @@ ospf_sock_init (void) ospf_sock = socket (AF_INET, SOCK_RAW, IPPROTO_OSPFIGP); if (ospf_sock < 0) { + int save_errno = errno; if ( ospfd_privs.change (ZPRIVS_LOWER) ) zlog_err ("ospf_sock_init: could not lower privs, %s", safe_strerror (errno) ); - zlog_err ("ospf_read_sock_init: socket: %s", safe_strerror (errno)); - exit(-1); + zlog_err ("ospf_read_sock_init: socket: %s", safe_strerror (save_errno)); + exit(1); } #ifdef IP_HDRINCL @@ -189,10 +190,12 @@ ospf_sock_init (void) ret = setsockopt (ospf_sock, IPPROTO_IP, IP_HDRINCL, &hincl, sizeof (hincl)); if (ret < 0) { + int save_errno = errno; if ( ospfd_privs.change (ZPRIVS_LOWER) ) zlog_err ("ospf_sock_init: could not lower privs, %s", safe_strerror (errno) ); - zlog_warn ("Can't set IP_HDRINCL option for fd %d",ospf_sock); + zlog_warn ("Can't set IP_HDRINCL option for fd %d: %s", + ospf_sock, safe_strerror(save_errno)); } #elif defined (IPTOS_PREC_INTERNETCONTROL) #warning "IP_HDRINCL not available on this system" @@ -203,10 +206,12 @@ ospf_sock_init (void) (char *) &tos, sizeof (int)); if (ret < 0) { + int save_errno = errno; if ( ospfd_privs.change (ZPRIVS_LOWER) ) zlog_err ("ospf_sock_init: could not lower privs, %s", safe_strerror (errno) ); - zlog_warn ("can't set sockopt IP_TOS %d to socket %d", tos, ospf_sock); + zlog_warn ("can't set sockopt IP_TOS %d to socket %d: %s", + tos, ospf_sock, safe_strerror(save_errno)); close (ospf_sock); /* Prevent sd leak. */ return ret; } -- cgit v1.2.1