summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorHans Dedecker <dedeckeh@gmail.com>2019-04-04 12:01:46 +0200
committerHans Dedecker <dedeckeh@gmail.com>2019-04-04 15:36:15 +0200
commite7b1d4bf3a2297192638b9c84208b3dcb306ecd8 (patch)
treea371584b78e0a0c1dd8b6e4339393aa9b2a20652 /src
parent7798d502f4c2e89a2493c0ea7a800a9359ee0bbc (diff)
treewide: initialize properly file descriptors
Initialzie properly the dhcpv6, dhcpv4 and ndp ffile descriptors when creating an interface. As such the check for a valid descriptor can be done correct now in the different modules Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/config.c3
-rw-r--r--src/dhcpv4.c4
-rw-r--r--src/dhcpv6.c4
-rw-r--r--src/ndp.c6
4 files changed, 10 insertions, 7 deletions
diff --git a/src/config.c b/src/config.c
index e928536..3e1b3f1 100644
--- a/src/config.c
+++ b/src/config.c
@@ -430,6 +430,9 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr
iface->name = strcpy(new_name, name);
iface->avl.key = iface->name;
+ iface->dhcpv6_event.uloop.fd = -1;
+ iface->ndp_event.uloop.fd = -1;
+ iface->dhcpv4_event.uloop.fd = -1;
set_interface_defaults(iface);
avl_insert(&interfaces, &iface->avl);
diff --git a/src/dhcpv4.c b/src/dhcpv4.c
index 5016390..88719e0 100644
--- a/src/dhcpv4.c
+++ b/src/dhcpv4.c
@@ -73,7 +73,7 @@ int dhcpv4_setup_interface(struct interface *iface, bool enable)
{
int ret = 0;
- if (iface->dhcpv4_event.uloop.fd > 0) {
+ if (iface->dhcpv4_event.uloop.fd >= 0) {
uloop_fd_delete(&iface->dhcpv4_event.uloop);
close(iface->dhcpv4_event.uloop.fd);
iface->dhcpv4_event.uloop.fd = -1;
@@ -163,7 +163,7 @@ int dhcpv4_setup_interface(struct interface *iface, bool enable)
}
out:
- if (ret < 0 && iface->dhcpv4_event.uloop.fd > 0) {
+ if (ret < 0 && iface->dhcpv4_event.uloop.fd >= 0) {
close(iface->dhcpv4_event.uloop.fd);
iface->dhcpv4_event.uloop.fd = -1;
}
diff --git a/src/dhcpv6.c b/src/dhcpv6.c
index 2d5861c..f71418d 100644
--- a/src/dhcpv6.c
+++ b/src/dhcpv6.c
@@ -47,7 +47,7 @@ int dhcpv6_setup_interface(struct interface *iface, bool enable)
{
int ret = 0;
- if (iface->dhcpv6_event.uloop.fd > 0) {
+ if (iface->dhcpv6_event.uloop.fd >= 0) {
uloop_fd_delete(&iface->dhcpv6_event.uloop);
close(iface->dhcpv6_event.uloop.fd);
iface->dhcpv6_event.uloop.fd = -1;
@@ -150,7 +150,7 @@ int dhcpv6_setup_interface(struct interface *iface, bool enable)
ret = dhcpv6_ia_setup_interface(iface, enable);
out:
- if (ret < 0 && iface->dhcpv6_event.uloop.fd > 0) {
+ if (ret < 0 && iface->dhcpv6_event.uloop.fd >= 0) {
close(iface->dhcpv6_event.uloop.fd);
iface->dhcpv6_event.uloop.fd = -1;
}
diff --git a/src/ndp.c b/src/ndp.c
index 800c616..f9f2495 100644
--- a/src/ndp.c
+++ b/src/ndp.c
@@ -103,7 +103,7 @@ int ndp_init(void)
netlink_add_netevent_handler(&ndp_netevent_handler);
out:
- if (ret < 0 && ping_socket > 0) {
+ if (ret < 0 && ping_socket >= 0) {
close(ping_socket);
ping_socket = -1;
}
@@ -125,7 +125,7 @@ int ndp_setup_interface(struct interface *iface, bool enable)
goto out;
}
- if (iface->ndp_event.uloop.fd > 0) {
+ if (iface->ndp_event.uloop.fd >= 0) {
uloop_fd_delete(&iface->ndp_event.uloop);
close(iface->ndp_event.uloop.fd);
iface->ndp_event.uloop.fd = -1;
@@ -203,7 +203,7 @@ int ndp_setup_interface(struct interface *iface, bool enable)
netlink_dump_neigh_table(true);
out:
- if (ret < 0 && iface->ndp_event.uloop.fd > 0) {
+ if (ret < 0 && iface->ndp_event.uloop.fd >= 0) {
close(iface->ndp_event.uloop.fd);
iface->ndp_event.uloop.fd = -1;
}