diff options
author | Steven Barth <steven@midlink.org> | 2013-10-30 14:13:50 +0100 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2013-10-30 14:13:50 +0100 |
commit | c570ee307de12e47e8a370fb66d8f99f14d4b064 (patch) | |
tree | 92944562a5dc4009023af36fe452770fb26ff6aa /src/ra.c | |
parent | 39e84aa6f7c4b6b70149abfa7e786dc0c893caf5 (diff) | |
download | odhcp6c-c570ee307de12e47e8a370fb66d8f99f14d4b064.tar.gz |
React to carrier down events as well
Diffstat (limited to 'src/ra.c')
-rw-r--r-- | src/ra.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -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); } |