From: Steven Barth Date: Thu, 20 Mar 2014 09:30:51 +0000 (+0100) Subject: Don't segfault when there is no IPv6 support X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=a85ccf1aa14d3d860e6ac0e7c56ba4695462afa1;p=project%2Fodhcpd.git Don't segfault when there is no IPv6 support --- 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};