snprintf(env[7], e, "ifmtu=%d", if_getmtu(ifp->name));
l = e = strlen("interface_order=");
TAILQ_FOREACH(ifp2, ifp->ctx->ifaces, next) {
- e += strlen(ifp2->name) + 1;
+ if (!(ifp2->options->options & DHCPCD_PFXDLGONLY))
+ e += strlen(ifp2->name) + 1;
}
EMALLOC(8, e);
p = env[8];
e -= l;
p += l;
TAILQ_FOREACH(ifp2, ifp->ctx->ifaces, next) {
- l = strlcpy(p, ifp2->name, e);
- p += l;
- e -= l;
- *p++ = ' ';
- e--;
+ if (!(ifp2->options->options & DHCPCD_PFXDLGONLY)) {
+ l = strlcpy(p, ifp2->name, e);
+ p += l;
+ e -= l;
+ *p++ = ' ';
+ e--;
+ }
}
*--p = '\0';
if (strcmp(reason, "TEST") == 0) {
}
#endif
#ifdef INET6
+ if (dhcp6 && d6_state && ifo->options & DHCPCD_PFXDLGONLY) {
+ nenv = realloc(env, sizeof(char *) * (elen + 2));
+ if (nenv == NULL)
+ goto eexit;
+ env = nenv;
+ env[elen] = strdup("ifclass=pd");
+ if (env[elen] == NULL)
+ goto eexit;
+ elen++;
+ }
if (dhcp6 && d6_state && d6_state->old) {
n = dhcp6_env(NULL, NULL, ifp,
d6_state->old, d6_state->old_len);