summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2014-03-20 10:30:51 +0100
committerSteven Barth <steven@midlink.org>2014-03-20 10:30:51 +0100
commita85ccf1aa14d3d860e6ac0e7c56ba4695462afa1 (patch)
tree9bb5c48111d3d2bd2be249de8276622b1c08aa85 /src
parent4b23559937ccefd2df7d020219c7962568355a12 (diff)
Don't segfault when there is no IPv6 support
Diffstat (limited to 'src')
-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};