#include "odhcp6c.h"
#include "ra.h"
-#ifdef EXT_BFD_PING
-#include "bfd.h"
-#endif
static void sighandler(int signal);
static struct in6_addr ifid = IN6ADDR_ANY_INIT;
int sol_timeout = DHCPV6_SOL_MAX_RT;
-#ifdef EXT_BFD_PING
- int bfd_interval = 0, bfd_loss = 3;
-#endif
bool help = false, daemonize = false;
int logopt = LOG_PID;
ia_pd_mode = IA_MODE_FORCE;
break;
-#ifdef EXT_BFD_PING
- case 'B':
- bfd_interval = atoi(optarg);
- break;
-#endif
-
case 'c':
l = script_unhexlify(&buf[4], sizeof(buf) - 4, optarg);
if (l > 0) {
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);
break;
case DHCPV6_STATEFUL:
- script_call("bound");
bound = true;
+ script_call("bound");
syslog(LOG_NOTICE, "entering stateful-mode on %s", ifname);
-#ifdef EXT_BFD_PING
- if (bfd_interval > 0)
- bfd_start(ifname, bfd_loss, bfd_interval);
-#endif
while (!signal_usr2 && !signal_term) {
// Renew Cycle
}
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);
odhcp6c_get_state(STATE_IA_NA, &ia_na_len);
if (res > 0)
script_call("rebound");
else {
-#ifdef EXT_BFD_PING
- bfd_stop();
-#endif
break;
}
}
" -P <length> Request IPv6-Prefix (0 = auto)\n"
" -F Force IPv6-Prefix\n"
" -V <class> Set vendor-class option (base-16 encoded)\n"
-#ifdef EXT_BFD_PING
- " -B <interval> Enable BFD ping check\n"
-#endif
" -u <user-class> Set user-class option string\n"
" -c <clientid> Override client-ID (base-16 encoded)\n"
" -i <iface-id> Use a custom interface identifier for RA handling\n"
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);
-
-#ifdef EXT_BFD_PING
- bfd_receive();
-#endif
}
return signal_usr1 || signal_usr2 || signal_term;