From a85ccf1aa14d3d860e6ac0e7c56ba4695462afa1 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Thu, 20 Mar 2014 10:30:51 +0100 Subject: [PATCH] Don't segfault when there is no IPv6 support --- src/ndp.c | 4 ++++ src/router.c | 3 +++ 2 files changed, 7 insertions(+) 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}; -- 2.11.0