diff options
author | Tom Gundersen <teg@jklm.no> | 2015-10-22 17:46:35 +0200 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2015-11-11 15:42:38 +0100 |
commit | cb53894d3b6e90edaee4219fe716850d01242f46 (patch) | |
tree | b3b8f88db29f2836235b465349098673e342bed4 /src/libsystemd-network/sd-ndisc.c | |
parent | b69015efd2752fd2719beec85496221304130b0b (diff) |
sd-ndisc: notify user on STOP
Also, stop the state machine when we get into a broken state, rather than just notify the user.
Diffstat (limited to 'src/libsystemd-network/sd-ndisc.c')
-rw-r--r-- | src/libsystemd-network/sd-ndisc.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/libsystemd-network/sd-ndisc.c b/src/libsystemd-network/sd-ndisc.c index c494b9d6d8..b8bfc6c549 100644 --- a/src/libsystemd-network/sd-ndisc.c +++ b/src/libsystemd-network/sd-ndisc.c @@ -494,8 +494,8 @@ static int ndisc_router_advertisment_recv(sd_event_source *s, int fd, uint32_t r event = SD_NDISC_EVENT_ROUTER_ADVERTISMENT_MANAGED; log_ndisc(nd, "Received Router Advertisement flags %s/%s", - ra->nd_ra_flags_reserved & ND_RA_FLAG_MANAGED? "MANAGED": "none", - ra->nd_ra_flags_reserved & ND_RA_FLAG_OTHER? "OTHER": "none"); + ra->nd_ra_flags_reserved & ND_RA_FLAG_MANAGED ? "MANAGED" : "none", + ra->nd_ra_flags_reserved & ND_RA_FLAG_OTHER ? "OTHER" : "none"); if (event != SD_NDISC_EVENT_ROUTER_ADVERTISMENT_NONE) { r = ndisc_ra_parse(nd, ra, len); @@ -549,7 +549,8 @@ static int ndisc_router_solicitation_timeout(sd_event_source *s, uint64_t usec, next_timeout, 0, ndisc_router_solicitation_timeout, nd); if (r < 0) { - ndisc_notify(nd, r); + /* we cannot continue if we are unable to rearm the timer */ + sd_ndisc_stop(nd); return 0; } @@ -575,6 +576,8 @@ int sd_ndisc_stop(sd_ndisc *nd) { nd->state = NDISC_STATE_IDLE; + ndisc_notify(nd, SD_NDISC_EVENT_STOP); + return 0; } |