Remove legacy support for forking to background.

This commit is contained in:
Nicholas J. Kain 2020-10-20 06:52:30 -04:00
parent 58067200d6
commit ade4e988af
5 changed files with 4 additions and 43 deletions

View File

@ -46,19 +46,6 @@ struct cfgparse {
action falsval { ccfg.ternary = -1; }
action clientid { get_clientid_string(ccfg.buf, ccfg.buflen); }
action background {
switch (ccfg.ternary) {
case 1:
client_config.background_if_no_lease = true;
gflags_detach = 1;
break;
case -1:
client_config.background_if_no_lease = false;
gflags_detach = 0;
default:
break;
}
}
action hostname {
copy_cmdarg(client_config.hostname, ccfg.buf,
sizeof client_config.hostname, "hostname");
@ -187,7 +174,6 @@ struct cfgparse {
blankline = term;
clientid = 'clientid' value @clientid;
background = 'background' boolval @background;
hostname = 'hostname' value @hostname;
interface = 'interface' value @interface;
now = 'now' boolval @now;
@ -211,7 +197,7 @@ struct cfgparse {
rfkill_idx = 'rfkill-idx' value @rfkill_idx;
main := blankline |
clientid | background | hostname | interface | now | quit |
clientid | hostname | interface | now | quit |
request | vendorid | user | ifch_user | sockd_user | chroot |
state_dir | seccomp_enforce | relentless_defense | arp_probe_wait |
arp_probe_num | arp_probe_min | arp_probe_max | gw_metric |
@ -291,7 +277,6 @@ static void parse_cfgfile(const char fname[static 1])
cfgfile = ('-c'|'--config') argval @cfgfile;
clientid = ('-I'|'--clientid') argval @clientid;
background = ('-b'|'--background') tbv @background;
hostname = ('-h'|'--hostname') argval @hostname;
interface = ('-i'|'--interface') argval @interface;
now = ('-n'|'--now') tbv @now;
@ -317,7 +302,7 @@ static void parse_cfgfile(const char fname[static 1])
help = ('-?'|'--help') 0 @help;
main := (
cfgfile | clientid | background | hostname | interface |
cfgfile | clientid | hostname | interface |
now | quit | request | vendorid | user | ifch_user | sockd_user |
chroot | state_dir | seccomp_enforce | relentless_defense |
arp_probe_wait | arp_probe_num | arp_probe_min | arp_probe_max |

View File

@ -37,9 +37,6 @@ This option should not be necessary in most instances, but may perhaps be
useful for odd DHCP servers that perform some kind of authentication against
the vendor id option field. The default is to send the string 'ndhc'.
.TP
.BI \-b ,\ \-\-background
Immediately fork into the background, even before obtaining a lease.
.TP
.BI \-s\ STATEDIR ,\ \-\-state\-dir= STATEDIR
Specifies the directory where the DHCP state associated with the given
interface will be stored. Such state will include the leased IP, the

View File

@ -149,8 +149,6 @@ void show_usage(void)
" -I, --clientid=CLIENTID Client identifier\n"
" -h, --hostname=HOSTNAME Client hostname\n"
" -V, --vendorid=VENDORID Client vendor identification string\n"
" -b, --background Fork to background if lease cannot be\n"
" immediately negotiated.\n"
" -i, --interface=INTERFACE Interface to use (default: eth0)\n"
" -n, --now Exit with failure if lease cannot be\n"
" immediately negotiated.\n"
@ -517,18 +515,6 @@ static void ndhc_main(void) {
do_ndhc_work();
}
void background(void)
{
static char called;
if (!called) {
called = 1; // Do not fork again.
if (daemon(0, 0) < 0) {
perror("fork");
exit(EXIT_SUCCESS);
}
}
}
static void wait_for_rfkill()
{
cs.rfkillFd = rfkill_open(&client_config.enable_rfkill);

View File

@ -71,7 +71,6 @@ struct client_config_t {
uint8_t clientid_len; // Length of the clientid
bool quit_after_lease; // Quit after obtaining lease
bool abort_if_no_lease; // Abort if no lease
bool background_if_no_lease; // Fork to background if no lease
bool enable_rfkill; // Listen for rfkill events
};
@ -99,7 +98,6 @@ void set_client_addr(const char v[static 1]);
void show_usage(void);
void signal_exit(int status);
int get_clientid_string(const char str[static 1], size_t slen);
void background(void);
void print_version(void);
#endif /* NJK_NDHC_NDHC_H_ */

View File

@ -332,17 +332,12 @@ static int selecting_packet(struct client_state_t cs[static 1],
// Triggered after a DHCP discover packet has been sent and no reply has
// been received within the response wait time. If we've not exceeded the
// maximum number of discover retransmits, then send another packet and wait
// again. Otherwise, background or fail.
// again. Otherwise fail.
static int selecting_timeout(struct client_state_t cs[static 1],
long long nowts)
{
if (cs->program_init && cs->num_dhcp_requests >= 2) {
if (client_config.background_if_no_lease) {
log_line("%s: No lease; going to background.",
client_config.interface);
cs->program_init = false;
background();
} else if (client_config.abort_if_no_lease)
if (client_config.abort_if_no_lease)
suicide("%s: No lease; failing.", client_config.interface);
}
if (send_discover(cs) < 0) {