X-Git-Url: https://git.decadent.org.uk/gitweb/?p=odhcp6c.git;a=blobdiff_plain;f=src%2Fodhcp6c.c;h=61ffe9d832b25ae4fbae54f7fd450bdbc4214ba5;hp=2357a9a9aa577b7b58819c599c341b4c85e9abc8;hb=1d1e74031aac9b12ee892b1720a1a3d4f3025d98;hpb=b9c8be24207e4197c9b529c157d7ea04f3f4bdb8 diff --git a/src/odhcp6c.c b/src/odhcp6c.c index 2357a9a..61ffe9d 100644 --- a/src/odhcp6c.c +++ b/src/odhcp6c.c @@ -266,6 +266,7 @@ int main(_unused int argc, char* const argv[]) while (!signal_term) { // Main logic odhcp6c_clear_state(STATE_SERVER_ID); + odhcp6c_clear_state(STATE_SERVER_ADDR); odhcp6c_clear_state(STATE_IA_NA); odhcp6c_clear_state(STATE_IA_PD); odhcp6c_clear_state(STATE_SNTP_IP); @@ -335,8 +336,8 @@ int main(_unused int argc, char* const argv[]) break; case DHCPV6_STATEFUL: - script_call("bound"); bound = true; + script_call("bound"); syslog(LOG_NOTICE, "entering stateful-mode on %s", ifname); while (!signal_usr2 && !signal_term) { @@ -365,6 +366,7 @@ int main(_unused int argc, char* const argv[]) } odhcp6c_clear_state(STATE_SERVER_ID); // Remove binding + odhcp6c_clear_state(STATE_SERVER_ADDR); size_t ia_pd_len, ia_na_len; odhcp6c_get_state(STATE_IA_PD, &ia_pd_len); @@ -478,11 +480,8 @@ bool odhcp6c_signal_process(void) if (ra_link_up()) signal_usr2 = true; - if (ra_updated && (bound || allow_slaac_only == 0)) + if (ra_updated && (bound || allow_slaac_only >= 0)) script_call("ra-updated"); // Immediate process urgent events - else if (ra_updated && !bound && allow_slaac_only > 0) - script_delay_call("ra-updated", allow_slaac_only); - } return signal_usr1 || signal_usr2 || signal_term;