diff options
author | Martin Willi <martin@revosec.ch> | 2014-07-09 16:47:06 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2014-09-24 11:19:59 +0200 |
commit | 5957e76b381179d45ba1094ce5085db42cbad5ac (patch) | |
tree | 8f407c1d965de4370e91e7ad5d12d28abc039593 /src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c | |
parent | 4c3aca273fdf14f12072f3e9fd87ef75782e55fb (diff) | |
download | strongswan-5957e76b381179d45ba1094ce5085db42cbad5ac.tar.bz2 strongswan-5957e76b381179d45ba1094ce5085db42cbad5ac.tar.xz |
kernel-netlink: Clean up socket initialization, handle 0 as valid socket fd
Diffstat (limited to 'src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c')
-rw-r--r-- | src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c b/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c index 12df7c5ad..74466e291 100644 --- a/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c +++ b/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c @@ -219,7 +219,7 @@ METHOD(netlink_socket_t, netlink_send_ack, status_t, METHOD(netlink_socket_t, destroy, void, private_netlink_socket_t *this) { - if (this->socket > 0) + if (this->socket != -1) { close(this->socket); } @@ -233,7 +233,9 @@ METHOD(netlink_socket_t, destroy, void, netlink_socket_t *netlink_socket_create(int protocol) { private_netlink_socket_t *this; - struct sockaddr_nl addr; + struct sockaddr_nl addr = { + .nl_family = AF_NETLINK, + }; INIT(this, .public = { @@ -243,21 +245,16 @@ netlink_socket_t *netlink_socket_create(int protocol) }, .seq = 200, .mutex = mutex_create(MUTEX_TYPE_DEFAULT), + .socket = socket(AF_NETLINK, SOCK_RAW, protocol), .protocol = protocol, ); - memset(&addr, 0, sizeof(addr)); - addr.nl_family = AF_NETLINK; - - this->socket = socket(AF_NETLINK, SOCK_RAW, protocol); - if (this->socket < 0) + if (this->socket == -1) { DBG1(DBG_KNL, "unable to create netlink socket"); destroy(this); return NULL; } - - addr.nl_groups = 0; if (bind(this->socket, (struct sockaddr*)&addr, sizeof(addr))) { DBG1(DBG_KNL, "unable to bind netlink socket"); |