예제 #1
0
파일: odhcp6c.c 프로젝트: edderick/odhcp6c
bool odhcp6c_signal_process(void)
{
	if (do_signal == SIGIO) {
		do_signal = 0;
		bool ra_rtnled = ra_rtnl_process();
		bool ra_updated = ra_process();

		if (ra_rtnled || (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 do_signal != 0;
}
예제 #2
0
파일: odhcp6c.c 프로젝트: NeoRaider/odhcp6c
bool odhcp6c_signal_process(void)
{
	if (do_signal == SIGIO) {
		do_signal = 0;
		bool ra_updated = ra_process();

		if (ra_link_up())
			do_signal = SIGUSR2;

		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 do_signal != 0;
}
예제 #3
0
bool odhcp6c_signal_process(void)
{
	while (signal_io) {
		signal_io = false;

		bool ra_updated = ra_process();

		if (ra_link_up())
			signal_usr2 = true;

		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;
}