summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/ndp.c4
-rw-r--r--src/router.c3
2 files changed, 7 insertions, 0 deletions
diff --git a/src/ndp.c b/src/ndp.c
index e006c85..17ec8b4 100644
--- a/src/ndp.c
+++ b/src/ndp.c
@@ -111,6 +111,10 @@ int init_ndp(void)
// Open ICMPv6 socket
ping_socket = socket(AF_INET6, SOCK_RAW | SOCK_CLOEXEC, IPPROTO_ICMPV6);
+ if (ping_socket < 0) {
+ syslog(LOG_ERR, "Unable to open raw socket: %s", strerror(errno));
+ return -1;
+ }
int val = 2;
setsockopt(ping_socket, IPPROTO_RAW, IPV6_CHECKSUM, &val, sizeof(val));
diff --git a/src/router.c b/src/router.c
index 3ba552d..772d770 100644
--- a/src/router.c
+++ b/src/router.c
@@ -88,6 +88,9 @@ int init_router(void)
int setup_router_interface(struct interface *iface, bool enable)
{
+ if (!fp_route || router_event.uloop.fd < 0)
+ return -1;
+
struct ipv6_mreq all_nodes = {ALL_IPV6_NODES, iface->ifindex};
struct ipv6_mreq all_routers = {ALL_IPV6_ROUTERS, iface->ifindex};