summaryrefslogtreecommitdiffstats
path: root/ipv6rs.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2013-02-17 18:17:29 +0000
committerRoy Marples <roy@marples.name>2013-02-17 18:17:29 +0000
commit83e82504e5fbcb4dad08714ecd77db58642af82e (patch)
tree5d00cea1656e2361113b598222985df90a7df2e2 /ipv6rs.c
parent3024ea4c154eb6cd48ee7dcf6a3986e7f1cd2009 (diff)
downloaddhcpcd-83e82504e5fbcb4dad08714ecd77db58642af82e.tar.xz
Work on FreeBSD9 where we fail on some interfaces
Diffstat (limited to 'ipv6rs.c')
-rw-r--r--ipv6rs.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/ipv6rs.c b/ipv6rs.c
index 3e09ee38..f71db5bb 100644
--- a/ipv6rs.c
+++ b/ipv6rs.c
@@ -257,8 +257,12 @@ ipv6rs_sendprobe(void *arg)
memcpy(CMSG_DATA(cm), &hoplimit, sizeof(hoplimit));
syslog(LOG_INFO, "%s: sending IPv6 Router Solicitation", ifp->name);
- if (sendmsg(sock, &sndhdr, 0) == -1)
+ if (sendmsg(sock, &sndhdr, 0) == -1) {
syslog(LOG_ERR, "%s: sendmsg: %m", ifp->name);
+ ipv6rs_drop(ifp);
+ ifp->options->options &= ~DHCPCD_IPV6RS;
+ return;
+ }
if (state->rsprobes++ < MAX_RTR_SOLICITATIONS)
eloop_timeout_add_sec(RTR_SOLICITATION_INTERVAL,