X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=sys%2Fsrc%2Fcmd%2Fip%2Fipconfig%2Fdhcp.c;h=44badcf8a2c25e0476871d2aebf86ef034c81cd8;hb=d9bf5d074dccde7bc66d6c19565da9e5aeb5c7c5;hp=7bd8141bad275a381674bd04710ebabda9325848;hpb=c0176a50519a4a978f1d59ef78bd1c9fcfa7f66f;p=plan9front.git diff --git a/sys/src/cmd/ip/ipconfig/dhcp.c b/sys/src/cmd/ip/ipconfig/dhcp.c index 7bd8141ba..44badcf8a 100644 --- a/sys/src/cmd/ip/ipconfig/dhcp.c +++ b/sys/src/cmd/ip/ipconfig/dhcp.c @@ -106,7 +106,7 @@ static Option option[256] = [ODrebindingtime] { "rebindingtime", Tulong }, [ODvendorclass] { "vendorclass", Tvec }, [ODclientid] { "clientid", Tvec }, -[ODtftpserver] { "tftp", Taddr }, +[ODtftpserver] { "tftp", Tstr }, [ODbootfile] { "bootfile", Tstr }, [ODdnsdomain] { "dnsdomain", Tnames }, }; @@ -155,11 +155,25 @@ dhcpinit(void) memcpy(requested, defrequested, nrequested); } +static void +removenulladdr(void) +{ + fprint(conf.cfd, "remove %I %M", IPnoaddr, IPnoaddr); + atexitdont(removenulladdr); +} + +static void +addnulladdr(void) +{ + atexit(removenulladdr); + fprint(conf.cfd, "add %I %M", IPnoaddr, IPnoaddr); +} + void dhcpquery(int needconfig, int startstate) { if(needconfig) - fprint(conf.cfd, "add %I %M", IPnoaddr, IPnoaddr); + addnulladdr(); conf.fd = openlisten(); if(conf.fd < 0){ @@ -192,8 +206,7 @@ dhcpquery(int needconfig, int startstate) close(conf.fd); if(needconfig) - fprint(conf.cfd, "remove %I %M", IPnoaddr, IPnoaddr); - + removenulladdr(); } enum { @@ -264,8 +277,7 @@ dhcpwatch(int needconfig) * leave everything we've learned somewhere that * other procs can find it. */ - if(beprimary) - putndb(); + putndb(); refresh(); } }