diff options
| -rw-r--r-- | sys/src/cmd/ip/dhcpd/dhcpd.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/sys/src/cmd/ip/dhcpd/dhcpd.c b/sys/src/cmd/ip/dhcpd/dhcpd.c index 4f31638ec..d71fdd897 100644 --- a/sys/src/cmd/ip/dhcpd/dhcpd.c +++ b/sys/src/cmd/ip/dhcpd/dhcpd.c @@ -1276,9 +1276,7 @@ miscoptions(Req *rp, uchar *ip) break; } - /* add plan9 specific options */ - if(strncmp((char*)rp->vendorclass, "plan9_", 6) == 0 - || strncmp((char*)rp->vendorclass, "p9-", 3) == 0){ + if (*rp->vendorclass != '\0') { /* point to temporary area */ op = rp->p; omax = rp->max; @@ -1286,15 +1284,22 @@ miscoptions(Req *rp, uchar *ip) rp->p = vopts; rp->max = vopts + sizeof(vopts) - 1; - /* emit old v4 addresses first to make sure that they fit */ - addrsopt(rp, OP9fsv4, addrs, lookupserver("fs", addrs, nelem(addrs), t)); - addrsopt(rp, OP9authv4, addrs, lookupserver("auth", addrs, nelem(addrs), t)); - - p9addrsopt(rp, OP9fs, addrs, lookupserver("fs", addrs, nelem(addrs), t)); - p9addrsopt(rp, OP9auth, addrs, lookupserver("auth", addrs, nelem(addrs), t)); - p9addrsopt(rp, OP9ipaddr, addrs, lookupserver("ip", addrs, nelem(addrs), t)); - p9addrsopt(rp, OP9ipmask, addrs, lookupserver("ipmask", addrs, nelem(addrs), t)); - p9addrsopt(rp, OP9ipgw, addrs, lookupserver("ipgw", addrs, nelem(addrs), t)); + if (*rp->ii.vendor != '\0') + stringopt(rp, OBvendorinfo, rp->ii.vendor); + + /* add plan9 specific options */ + if (strncmp((char*)rp->vendorclass, "p9-", 3) == 0 + || strncmp((char*)rp->vendorclass, "plan9_", 6) == 0){ + /* emit old v4 addresses first to make sure that they fit */ + addrsopt(rp, OP9fsv4, addrs, lookupserver("fs", addrs, nelem(addrs), t)); + addrsopt(rp, OP9authv4, addrs, lookupserver("auth", addrs, nelem(addrs), t)); + + p9addrsopt(rp, OP9fs, addrs, lookupserver("fs", addrs, nelem(addrs), t)); + p9addrsopt(rp, OP9auth, addrs, lookupserver("auth", addrs, nelem(addrs), t)); + p9addrsopt(rp, OP9ipaddr, addrs, lookupserver("ip", addrs, nelem(addrs), t)); + p9addrsopt(rp, OP9ipmask, addrs, lookupserver("ipmask", addrs, nelem(addrs), t)); + p9addrsopt(rp, OP9ipgw, addrs, lookupserver("ipgw", addrs, nelem(addrs), t)); + } /* point back to packet, encapsulate vopts into packet */ j = rp->p - vopts; |
