aboutsummaryrefslogtreecommitdiffstats
path: root/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2014-07-09 16:47:06 +0200
committerMartin Willi <martin@revosec.ch>2014-09-24 11:19:59 +0200
commit5957e76b381179d45ba1094ce5085db42cbad5ac (patch)
tree8f407c1d965de4370e91e7ad5d12d28abc039593 /src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c
parent4c3aca273fdf14f12072f3e9fd87ef75782e55fb (diff)
downloadstrongswan-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.c15
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");