continue;
if (dhcp_getoverride(ifo, opt->option))
continue;
- if ((p = get_option(ifp->ctx, bootp, bootp_len,
- opt->option, &pl)))
- {
- ep += dhcp_envoption(ifp->ctx, ep, prefix, ifp->name,
- opt, dhcp_getoption, p, pl);
- if (opt->option == DHO_VIVSO &&
- pl > (int)sizeof(uint32_t))
- {
- memcpy(&en, p, sizeof(en));
- en = ntohl(en);
- vo = vivso_find(en, ifp);
- if (vo) {
- /* Skip over en + total size */
- p += sizeof(en) + 1;
- pl -= sizeof(en) + 1;
- ep += dhcp_envoption(ifp->ctx,
- ep, prefix, ifp->name,
- vo, dhcp_getoption, p, pl);
- }
- }
- }
+ p = get_option(ifp->ctx, bootp, bootp_len, opt->option, &pl);
+ if (p == NULL)
+ continue;
+ ep += dhcp_envoption(ifp->ctx, ep, prefix, ifp->name,
+ opt, dhcp_getoption, p, pl);
+
+ if (opt->option != DHO_VIVSO || pl <= (int)sizeof(uint32_t))
+ continue;
+ memcpy(&en, p, sizeof(en));
+ en = ntohl(en);
+ vo = vivso_find(en, ifp);
+ if (vo == NULL)
+ continue;
+ /* Skip over en + total size */
+ p += sizeof(en) + 1;
+ pl -= sizeof(en) + 1;
+ ep += dhcp_envoption(ifp->ctx, ep, prefix, ifp->name,
+ vo, dhcp_getoption, p, pl);
}
for (i = 0, opt = ifo->dhcp_override;
{
if (has_option_mask(ifo->nomask, opt->option))
continue;
- if ((p = get_option(ifp->ctx, bootp, bootp_len,
- opt->option, &pl)))
- ep += dhcp_envoption(ifp->ctx, ep, prefix, ifp->name,
- opt, dhcp_getoption, p, pl);
+ p = get_option(ifp->ctx, bootp, bootp_len, opt->option, &pl);
+ if (p == NULL)
+ continue;
+ ep += dhcp_envoption(ifp->ctx, ep, prefix, ifp->name,
+ opt, dhcp_getoption, p, pl);
}
return ep - env;