Mercurial > hg > dhcpcd
changeset 5390:3c3341010852 draft
options: use DHCPCD_MASTER to guard global options
As ifname generally always set.
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Sat, 27 Jun 2020 13:46:25 +0100 |
| parents | 188a969d672e |
| children | e9cc33189abd |
| files | src/if-options.c |
| diffstat | 1 files changed, 14 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/if-options.c Wed Jun 24 20:53:20 2020 +0100 +++ b/src/if-options.c Sat Jun 27 13:46:25 2020 +0100 @@ -674,7 +674,7 @@ break; case 'c': ARG_REQUIRED; - if (ifname != NULL) { + if (!(ifo->options & DHCPCD_MASTER)) { logerrx("%s: per interface scripts" " are no longer supported", ifname); @@ -744,7 +744,7 @@ ARG_REQUIRED; /* per interface logging is not supported * don't want to overide the commandline */ - if (ifname == NULL && ctx->logfile == NULL) { + if (ifo->options & DHCPCD_MASTER && ctx->logfile == NULL) { logclose(); ctx->logfile = strdup(arg); logopen(ctx->logfile); @@ -947,7 +947,7 @@ break; case 'z': ARG_REQUIRED; - if (ifname == NULL) + if (ifo->options & DHCPCD_MASTER) ctx->ifav = splitv(&ctx->ifac, ctx->ifav, arg); break; case 'A': @@ -1193,7 +1193,7 @@ break; case 'Z': ARG_REQUIRED; - if (ifname == NULL) + if (ifo->options & DHCPCD_MASTER) ctx->ifdv = splitv(&ctx->ifdc, ctx->ifdv, arg); break; case '1': @@ -1297,7 +1297,7 @@ #endif case O_IAID: ARG_REQUIRED; - if (ifname == NULL) { + if (ifo->options & DHCPCD_MASTER) { logerrx("IAID must belong in an interface block"); return -1; } @@ -1339,7 +1339,7 @@ logwarnx("%s: IA_PD not compiled in", ifname); return -1; #else - if (ifname == NULL) { + if (ifo->options & DHCPCD_MASTER) { logerrx("IA PD must belong in an " "interface block"); return -1; @@ -1347,7 +1347,7 @@ i = D6_OPTION_IA_PD; #endif } - if (ifname == NULL && arg) { + if (ifo->options & DHCPCD_MASTER && arg) { logerrx("IA with IAID must belong in an " "interface block"); return -1; @@ -2335,6 +2335,9 @@ ifo->options |= DHCPCD_DHCP6; #endif + /* Set master to indicate global options */ + ifo->options |= DHCPCD_MASTER; + vlen = strlcpy((char *)ifo->vendorclassid + 1, ctx->vendor, sizeof(ifo->vendorclassid) - 1); ifo->vendorclassid[0] = (uint8_t)(vlen > 255 ? 0 : vlen); @@ -2487,7 +2490,11 @@ had_block = 1; new_block = 0; ifo->options &= ~DHCPCD_WAITOPTS; + + /* Unset master to indicate non-global options */ + ifo->options &= ~DHCPCD_MASTER; } + /* Start of an interface block, skip if not ours */ if (strcmp(option, "interface") == 0) { char **n;
