Fall back from --bind-dynamic to --bind-interfaces in BSD, rather than quitting.

This commit is contained in:
Simon Kelley
2012-06-26 16:55:23 +01:00
parent 39f1b8e73d
commit 2b5bae9a8f
3 changed files with 17 additions and 3 deletions

View File

@@ -115,8 +115,13 @@ int main (int argc, char **argv)
}
# endif
/* -- bind-dynamic not supported on !Linux, fall back to --bind-interfaces */
if (option_bool(OPT_CLEVERBIND))
die(_("--bind-dynamic not available on this platform"), NULL, EC_BADCONF);
{
bind_fallback = 1;
set_option_bool(OPT_NOWILD);
reset_option_bool(OPT_CLVERBIND);
}
#endif
#ifndef HAVE_TFTP

View File

@@ -932,6 +932,7 @@ char *option_string(int prot, unsigned int opt, unsigned char *val,
int opt_len, char *buf, int buf_len);
void reread_dhcp(void);
void set_option_bool(unsigned int opt);
void reset_option_bool(unsigned int opt);
struct hostsfile *expand_filelist(struct hostsfile *list);
/* forward.c */

View File

@@ -1119,6 +1119,14 @@ void set_option_bool(unsigned int opt)
daemon->options2 |= 1u << (opt - 32);
}
void reset_option_bool(unsigned int opt)
{
if (opt < 32)
daemon->options &= ~(1u << opt);
else
daemon->options2 &= ~(1u << (opt - 32));
}
static char *one_opt(int option, char *arg, char *gen_prob, int command_line)
{
int i;