diff options
author | Steven Barth <steven@midlink.org> | 2014-03-20 10:30:51 +0100 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2014-03-20 10:30:51 +0100 |
commit | a85ccf1aa14d3d860e6ac0e7c56ba4695462afa1 (patch) | |
tree | 9bb5c48111d3d2bd2be249de8276622b1c08aa85 /src | |
parent | 4b23559937ccefd2df7d020219c7962568355a12 (diff) |
Don't segfault when there is no IPv6 support
Diffstat (limited to 'src')
-rw-r--r-- | src/ndp.c | 4 | ||||
-rw-r--r-- | src/router.c | 3 |
2 files changed, 7 insertions, 0 deletions
@@ -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}; |