summaryrefslogtreecommitdiff
path: root/lib/sockopt.c
diff options
context:
space:
mode:
authorajs <ajs>2004-12-28 21:43:17 +0000
committerajs <ajs>2004-12-28 21:43:17 +0000
commit1d75c8c3b28db50bc53771d5fac37b809d37b614 (patch)
tree530ea967460e0f9978572b85e15666617a4b3f45 /lib/sockopt.c
parentaf04bd7c102c3fc1a9c2e98337b0ab1fa824d080 (diff)
2004-12-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* sockopt.c: (setsockopt_ipv4_ifindex) Improve error message. When neither IP_PKTINFO nor IP_RECVIF is defined, make return value deterministic (-1).
Diffstat (limited to 'lib/sockopt.c')
-rw-r--r--lib/sockopt.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/sockopt.c b/lib/sockopt.c
index 786e1528..3a8033cc 100644
--- a/lib/sockopt.c
+++ b/lib/sockopt.c
@@ -242,17 +242,20 @@ setsockopt_ipv4_ifindex (int sock, int val)
int ret;
#if defined (IP_PKTINFO)
- ret = setsockopt (sock, IPPROTO_IP, IP_PKTINFO, &val, sizeof (val));
+ if ((ret = setsockopt (sock, IPPROTO_IP, IP_PKTINFO, &val, sizeof (val))) < 0)
+ zlog_warn ("Can't set IP_PKTINFO option for fd %d to %d: %s",
+ sock,val,safe_strerror(errno));
#elif defined (IP_RECVIF)
- ret = setsockopt (sock, IPPROTO_IP, IP_RECVIF, &val, sizeof (val));
+ if ((ret = setsockopt (sock, IPPROTO_IP, IP_RECVIF, &val, sizeof (val))) < 0)
+ zlog_warn ("Can't set IP_RECVIF option for fd %d to %d: %s",
+ sock,val,safe_strerror(errno));
#else
#warning "Neither IP_PKTINFO nor IP_RECVIF is available."
#warning "Will not be able to receive link info."
#warning "Things might be seriously broken.."
+ /* XXX Does this ever happen? Should there be a zlog_warn message here? */
+ ret = -1;
#endif
-
- if (ret < 0)
- zlog_warn ("Can't set IP_PKTINFO option");
return ret;
}