diff options
author | Dainis Jonitis <dainis.jonitis@ubnt.com> | 2019-04-12 13:46:43 +0300 |
---|---|---|
committer | Hans Dedecker <dedeckeh@gmail.com> | 2019-05-15 10:57:12 +0200 |
commit | 41a74cba1bec349d1e1c5be4442e7fddb2d4adf7 (patch) | |
tree | c6366d63948eabae512b225c5f149c9306bcee5a /src/router.c | |
parent | c0c8034bc17519c7960f40f6d796b5485cfc4cdb (diff) |
config: remove 'ignore' config optionbp
1. Remove 'ignore' config option for interface. Interface is still used if
any of 'ra', 'ndp', 'dhcpv4' or 'dhcpv6' options are different from
default 'disabled' mode. In config_parse_interface() update runtime
ignore value according to all mode values.
2. Reset ignore, ra, ndp, dhcpv4 and dhcpv6 values in set_interface_defaults().
Otherwise if option is deleted from config file and config is reloaded,
it will use the value from old config, potentiallly not turning services off.
3. Do not use implicit checks that 0 server mode means MODE_DISABLED.
4. Simplify code of all service setup functions if passed enabled = true
argument, but service mode is disabled.
Signed-off-by: Dainis Jonitis <dainis.jonitis@ubnt.com>
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
Diffstat (limited to 'src/router.c')
-rw-r--r-- | src/router.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/router.c b/src/router.c index 3a6b121..63571a3 100644 --- a/src/router.c +++ b/src/router.c @@ -74,13 +74,15 @@ int router_setup_interface(struct interface *iface, bool enable) { int ret = 0; + enable = enable && (iface->ra != MODE_DISABLED); + if (!fp_route) { ret = -1; goto out; } - if ((!enable || iface->ra == MODE_DISABLED) && iface->router_event.uloop.fd >= 0) { + if (!enable && iface->router_event.uloop.fd >= 0) { if (!iface->master) { uloop_timeout_cancel(&iface->timer_rs); iface->timer_rs.cb = NULL; @@ -91,7 +93,7 @@ int router_setup_interface(struct interface *iface, bool enable) uloop_fd_delete(&iface->router_event.uloop); close(iface->router_event.uloop.fd); iface->router_event.uloop.fd = -1; - } else if (enable && iface->ra != MODE_DISABLED) { + } else if (enable) { struct icmp6_filter filt; struct ipv6_mreq mreq; int val = 2; @@ -434,7 +436,7 @@ static int send_router_advert(struct interface *iface, const struct in6_addr *fr if (hlim > 0) adv.h.nd_ra_curhoplimit = hlim; - if (iface->dhcpv6) { + if (iface->dhcpv6 != MODE_DISABLED) { adv.h.nd_ra_flags_reserved = ND_RA_FLAG_OTHER; if (iface->ra_managed >= RA_MANAGED_MFLAG) |