diff options
author | ajs <ajs> | 2005-01-30 17:24:02 +0000 |
---|---|---|
committer | ajs <ajs> | 2005-01-30 17:24:02 +0000 |
commit | 0b7d97d293af645d98bc9b196b228d674b2aa344 (patch) | |
tree | ecbd51182fed5647180671b9f2b9cd12f841b54b | |
parent | 3b8b1855038afde448993e5a56955e9b7a4d99c2 (diff) |
2005-01-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* ospf_network.c: (ospf_sock_init) Save errno before calling
ospfd_privs.change.
-rw-r--r-- | ospfd/ChangeLog | 5 | ||||
-rw-r--r-- | ospfd/ospf_network.c | 13 |
2 files changed, 14 insertions, 4 deletions
diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog index 1ff7c6dc..deefce54 100644 --- a/ospfd/ChangeLog +++ b/ospfd/ChangeLog @@ -1,3 +1,8 @@ +2005-01-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu> + + * ospf_network.c: (ospf_sock_init) Save errno before calling + ospfd_privs.change. + 2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * ospf_packet.c: (ospf_packet_add) If oi->obuf is NULL, print 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; } |