Mercurial > hg > dhcpcd
changeset 5392:b6d4660cc8da draft
options: rework prior to use macros
Can't use DHCPCD_MASTER because a config option sets it - duh.
This allows us to use a different config option which makes little
sense in options but makes sense in the code.
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Mon, 29 Jun 2020 11:54:29 +0100 |
| parents | e9cc33189abd |
| children | ff43b6fbd113 |
| files | src/if-options.c |
| diffstat | 1 files changed, 14 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/if-options.c Sat Jun 27 13:58:44 2020 +0100 +++ b/src/if-options.c Mon Jun 29 11:54:29 2020 +0100 @@ -55,6 +55,10 @@ #include "logerr.h" #include "sa.h" +#define IN_CONFIG_BLOCK(ifo) ((ifo)->options & DHCPCD_FORKED) +#define SET_CONFIG_BLOCK(ifo) ((ifo)->options |= DHCPCD_FORKED) +#define CLEAR_CONFIG_BLOCK(ifo) ((ifo)->options &= ~DHCPCD_FORKED) + const struct option cf_options[] = { {"background", no_argument, NULL, 'b'}, {"script", required_argument, NULL, 'c'}, @@ -674,7 +678,7 @@ break; case 'c': ARG_REQUIRED; - if (!(ifo->options & DHCPCD_MASTER)) { + if (IN_CONFIG_BLOCK(ifo)) { logerrx("%s: per interface scripts" " are no longer supported", ifname); @@ -744,7 +748,7 @@ ARG_REQUIRED; /* per interface logging is not supported * don't want to overide the commandline */ - if (ifo->options & DHCPCD_MASTER && ctx->logfile == NULL) { + if (!IN_CONFIG_BLOCK(ifo) && ctx->logfile == NULL) { logclose(); ctx->logfile = strdup(arg); logopen(ctx->logfile); @@ -947,7 +951,7 @@ break; case 'z': ARG_REQUIRED; - if (ifo->options & DHCPCD_MASTER) + if (!IN_CONFIG_BLOCK(ifo)) ctx->ifav = splitv(&ctx->ifac, ctx->ifav, arg); break; case 'A': @@ -1193,7 +1197,7 @@ break; case 'Z': ARG_REQUIRED; - if (ifo->options & DHCPCD_MASTER) + if (!IN_CONFIG_BLOCK(ifo)) ctx->ifdv = splitv(&ctx->ifdc, ctx->ifdv, arg); break; case '1': @@ -1297,7 +1301,7 @@ #endif case O_IAID: ARG_REQUIRED; - if (ifo->options & DHCPCD_MASTER) { + if (!IN_CONFIG_BLOCK(ifo)) { logerrx("IAID must belong in an interface block"); return -1; } @@ -1339,7 +1343,7 @@ logwarnx("%s: IA_PD not compiled in", ifname); return -1; #else - if (ifo->options & DHCPCD_MASTER) { + if (!IN_CONFIG_BLOCK(ifo)) { logerrx("IA PD must belong in an " "interface block"); return -1; @@ -1347,7 +1351,7 @@ i = D6_OPTION_IA_PD; #endif } - if (ifo->options & DHCPCD_MASTER && arg) { + if (!IN_CONFIG_BLOCK(ifo) && arg) { logerrx("IA with IAID must belong in an " "interface block"); return -1; @@ -2335,8 +2339,7 @@ ifo->options |= DHCPCD_DHCP6; #endif - /* Set master to indicate global options */ - ifo->options |= DHCPCD_MASTER; + CLEAR_CONFIG_BLOCK(ifo); vlen = strlcpy((char *)ifo->vendorclassid + 1, ctx->vendor, sizeof(ifo->vendorclassid) - 1); @@ -2490,9 +2493,7 @@ had_block = 1; new_block = 0; ifo->options &= ~DHCPCD_WAITOPTS; - - /* Unset master to indicate non-global options */ - ifo->options &= ~DHCPCD_MASTER; + SET_CONFIG_BLOCK(ifo); } /* Start of an interface block, skip if not ours */ @@ -2564,6 +2565,7 @@ if (!had_block) ifo->options &= ~DHCPCD_WAITOPTS; + CLEAR_CONFIG_BLOCK(ifo); finish_config(ifo); return ifo; }
