summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/cmd/ip/dhcpd/dhcpd.c29
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;