summaryrefslogtreecommitdiff
path: root/src/ra.c
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2013-10-30 14:13:50 +0100
committerSteven Barth <steven@midlink.org>2013-10-30 14:13:50 +0100
commitc570ee307de12e47e8a370fb66d8f99f14d4b064 (patch)
tree92944562a5dc4009023af36fe452770fb26ff6aa /src/ra.c
parent39e84aa6f7c4b6b70149abfa7e786dc0c893caf5 (diff)
downloadodhcp6c-c570ee307de12e47e8a370fb66d8f99f14d4b064.tar.gz
React to carrier down events as well
Diffstat (limited to 'src/ra.c')
-rw-r--r--src/ra.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/ra.c b/src/ra.c
index 971a172..c8ccb88 100644
--- a/src/ra.c
+++ b/src/ra.c
@@ -150,6 +150,7 @@ static void update_proc(const char *sect, const char *opt, uint32_t value)
bool ra_link_up(void)
{
+ static bool firstcall = true;
struct {
struct nlmsghdr hdr;
struct ifinfomsg msg;
@@ -167,14 +168,16 @@ bool ra_link_up(void)
continue;
bool hascarrier = resp.msg.ifi_flags & IFF_LOWER_UP;
- if (nocarrier && hascarrier)
+ if (!firstcall && nocarrier != !hascarrier)
ret = true;
nocarrier = !hascarrier;
+ firstcall = false;
} while (read > 0);
if (ret) {
- syslog(LOG_NOTICE, "carrier up event on %s", if_name);
+ syslog(LOG_NOTICE, "carrier => %i event on %s", (int)!nocarrier, if_name);
+
rs_attempt = 0;
ra_send_rs(SIGALRM);
}