diff options
author | Daniel Borkmann <dborkman@redhat.com> | 2013-03-16 16:59:30 +0100 |
---|---|---|
committer | Daniel Borkmann <dborkman@redhat.com> | 2013-03-16 16:59:30 +0100 |
commit | 46c917dd2b4f2e126f6dbe074803323200a11d55 (patch) | |
tree | 5c8db5991729ed0437065a90192f9d220f2d1f8d | |
parent | 388180e6c35798d8f1bcadcf5a7010529921304e (diff) |
xutils: check various return values
Check various setsockopt return values and exit accordingly if some
of them just fuck up.
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
-rw-r--r-- | xutils.c | 49 |
1 files changed, 35 insertions, 14 deletions
@@ -110,32 +110,47 @@ int pf_socket(void) void set_sock_prio(int fd, int prio) { - int val = prio; - setsockopt(fd, SOL_SOCKET, SO_PRIORITY, &val, sizeof(val)); + int ret, val = prio; + + ret = setsockopt(fd, SOL_SOCKET, SO_PRIORITY, &val, sizeof(val)); + if (unlikely(ret)) + panic("Cannot set socket priority!\n"); } void set_udp_cork(int fd) { - int state = 1; - setsockopt(fd, IPPROTO_UDP, UDP_CORK, &state, sizeof(state)); + int ret, state = 1; + + ret = setsockopt(fd, IPPROTO_UDP, UDP_CORK, &state, sizeof(state)); + if (unlikely(ret)) + panic("Cannot cork UDP socket!\n"); } void set_udp_uncork(int fd) { - int state = 0; - setsockopt(fd, IPPROTO_UDP, UDP_CORK, &state, sizeof(state)); + int ret, state = 0; + + ret = setsockopt(fd, IPPROTO_UDP, UDP_CORK, &state, sizeof(state)); + if (unlikely(ret)) + panic("Cannot uncork UDP socket!\n"); } void set_tcp_cork(int fd) { - int state = 1; - setsockopt(fd, IPPROTO_TCP, TCP_CORK, &state, sizeof(state)); + int ret, state = 1; + + ret = setsockopt(fd, IPPROTO_TCP, TCP_CORK, &state, sizeof(state)); + if (unlikely(ret)) + panic("Cannot cork TCP socket!\n"); } void set_tcp_uncork(int fd) { - int state = 0; - setsockopt(fd, IPPROTO_TCP, TCP_CORK, &state, sizeof(state)); + int ret, state = 0; + + ret = setsockopt(fd, IPPROTO_TCP, TCP_CORK, &state, sizeof(state)); + if (unlikely(ret)) + panic("Cannot uncork TCP socket!\n"); } void set_sock_cork(int fd, int udp) @@ -170,8 +185,11 @@ int set_nonblocking_sloppy(int fd) void set_socket_keepalive(int fd) { - int one = 1; - setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &one, sizeof(one)); + int ret, one = 1; + + ret = setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &one, sizeof(one)); + if (unlikely(ret)) + panic("Cannot set TCP keepalive!\n"); } void set_tcp_nodelay(int fd) @@ -199,8 +217,11 @@ int set_reuseaddr(int fd) void set_mtu_disc_dont(int fd) { - int mtu = IP_PMTUDISC_DONT; - setsockopt(fd, SOL_IP, IP_MTU_DISCOVER, &mtu, sizeof(mtu)); + int mtu = IP_PMTUDISC_DONT, ret; + + ret = setsockopt(fd, SOL_IP, IP_MTU_DISCOVER, &mtu, sizeof(mtu)); + if (unlikely(ret)) + panic("Cannot set MTU discovery options!\n"); } void set_epoll_descriptor(int fd_epoll, int action, int fd_toadd, int events) |