}
if (dhcp->yiaddr) {
- fprintf(f, "IPADDR=%s\n", inet_ntoa(iface->addr));
- fprintf(f, "NETMASK=%s\n", inet_ntoa(iface->net));
+ fprintf(f, "IPADDR='%s'\n", inet_ntoa(iface->addr));
+ fprintf(f, "NETMASK='%s'\n", inet_ntoa(iface->net));
addr.s_addr = dhcp->yiaddr & iface->net.s_addr;
- fprintf(f, "NETWORK=%s\n", inet_ntoa(addr));
+ fprintf(f, "NETWORK='%s'\n", inet_ntoa(addr));
if (get_option_addr(&addr.s_addr, dhcp, DHCP_BROADCAST) == -1)
addr.s_addr = dhcp->yiaddr | ~iface->net.s_addr;
- fprintf(f, "BROADCAST=%s\n", inet_ntoa(addr));
+ fprintf(f, "BROADCAST='%s'\n", inet_ntoa(addr));
ort = get_option_routes(dhcp);
doneone = 0;
- fprintf(f, "ROUTES=");
+ fprintf(f, "ROUTES='");
for (rt = ort; rt; rt = rt->next) {
if (rt->dest.s_addr == 0)
continue;
if (doneone)
fputc(' ', f);
- else {
- fputc('\'', f);
+ else
doneone = 1;
- }
fprintf(f, "%s", inet_ntoa(rt->dest));
fprintf(f, ",%s", inet_ntoa(rt->net));
fprintf(f, ",%s", inet_ntoa(rt->gate));
}
- if (doneone)
- fputc('\'', f);
- fputc('\n', f);
+ fprintf(f, "'\n");
doneone = 0;
- fprintf(f, "GATEWAYS=");
+ fprintf(f, "GATEWAYS='");
for (rt = ort; rt; rt = rt->next) {
if (rt->dest.s_addr != 0)
continue;
if (doneone)
fputc(' ', f);
- else {
- fputc('\'', f);
+ else
doneone = 1;
- }
fprintf(f, "%s", inet_ntoa(rt->gate));
}
- if (doneone)
- fputc('\'', f);
- fputc('\n', f);
+ fprintf(f, "'\n");
free_routes(ort);
}
if (!(options->options & DHCPCD_INFORM) && dhcp->yiaddr) {
if (!(options->options & DHCPCD_TEST))
- fprintf(f, "LEASEDFROM=%u\n", lease->leasedfrom);
- fprintf(f, "LEASETIME=%u\n", lease->leasetime);
- fprintf(f, "RENEWALTIME=%u\n", lease->renewaltime);
- fprintf(f, "REBINDTIME=%u\n", lease->rebindtime);
+ fprintf(f, "LEASEDFROM='%u'\n", lease->leasedfrom);
+ fprintf(f, "LEASETIME='%u'\n", lease->leasetime);
+ fprintf(f, "RENEWALTIME='%u'\n", lease->renewaltime);
+ fprintf(f, "REBINDTIME='%u'\n", lease->rebindtime);
}
print_clean(f, "INTERFACE", iface->name);
print_clean(f, "CLASSID", options->classid);
if (iface->clientid_len > 0) {
- fprintf(f, "CLIENTID=%s\n",
+ fprintf(f, "CLIENTID='%s'\n",
hwaddr_ntoa(iface->clientid, iface->clientid_len));
}
- fprintf(f, "DHCPCHADDR=%s\n",
+ fprintf(f, "DHCPCHADDR='%s'\n",
hwaddr_ntoa(iface->hwaddr, iface->hwlen));
if (!(options->options & DHCPCD_TEST))
#include "dhcp.h"
#define OPT_REQUEST (1 << 0)
-#define OPT_UINT8 (1 << 3)
-#define OPT_UINT16 (1 << 4)
-#define OPT_UINT32 (1 << 5)
-#define OPT_IPV4 (1 << 6)
-#define OPT_STRING (1 << 7)
-#define OPT_RFC3361 (1 << 10)
-#define OPT_RFC3397 (1 << 11)
+#define OPT_UINT8 (1 << 1)
+#define OPT_UINT16 (1 << 2)
+#define OPT_UINT32 (1 << 3)
+#define OPT_IPV4 (1 << 4)
+#define OPT_STRING (1 << 5)
+#define OPT_ARRAY (1 << 6) /* Not impletmented yet! */
+#define OPT_RFC3361 (1 << 7)
+#define OPT_RFC3397 (1 << 8)
#define OPT_IPV4R OPT_IPV4 | OPT_REQUEST
-#define OPT_UINT32R OPT_UINT32 | OPT_REQUEST
-#define OPT_UINT16R OPT_UINT16 | OPT_REQUEST
-#define OPT_STRINGR OPT_STRING | OPT_REQUEST
struct dhcp_option {
uint8_t option;
};
const struct dhcp_option dhcp_options[] = {
- { DHCP_SERVERID, OPT_IPV4, "SERVERID" },
{ DHCP_NETMASK, OPT_IPV4R, NULL },
- { DHCP_BROADCAST, OPT_IPV4R, NULL },
- { DHCP_LEASETIME, OPT_UINT32, NULL },
- { DHCP_RENEWALTIME, OPT_UINT32R, NULL },
- { DHCP_REBINDTIME, OPT_UINT32R, NULL },
- { DHCP_MTU, OPT_UINT16R, "MTU" },
- { DHCP_STATICROUTE, OPT_IPV4R, NULL },
+ { DHCP_TIMEOFFSET, OPT_UINT32, "TIMEOFFSET" },
{ DHCP_ROUTER, OPT_IPV4R, NULL },
- { DHCP_HOSTNAME, OPT_STRING, "HOSTNAME" },
+ { DHCP_TIMESERVER, OPT_IPV4, "TIMESERVER" },
+ { DHCP_NAMESERVER, OPT_IPV4, "NAMESERVER" },
{ DHCP_DNSSERVER, OPT_IPV4, "DNSSERVER" },
+ { DHCP_LOGSERVER, OPT_IPV4, "LOGSERVER" },
+ { DHCP_COOKIESERVER, OPT_IPV4, "COOKIESERVER" },
+ { DHCP_LPRSERVER, OPT_IPV4, "LPRSERVER" },
+ { DHCP_IMPRESSSERVER, OPT_IPV4, "IMPRESSSERVER" },
+ { DHCP_RESOURCELOCATIONSERVER, OPT_IPV4, "RESOURCELOCATIONSERVER" },
+ { DHCP_HOSTNAME, OPT_STRING, "HOSTNAME" },
+ { DHCP_BOOTFILESIZE, OPT_UINT16, "BOOTFILESIZE" },
+ { DHCP_MERITDUMPFILE, OPT_STRING, "MERITDUMPFILE" },
{ DHCP_DNSDOMAIN, OPT_STRING, "DNSDOMAIN" },
- { DHCP_DNSSEARCH, OPT_STRING | OPT_RFC3397, "DNSSEARCH" },
- { DHCP_NTPSERVER, OPT_IPV4, "NTPSERVER" },
- { DHCP_NISSERVER, OPT_IPV4, "NISSERVER" },
- { DHCP_NISDOMAIN, OPT_IPV4, "NISDOMAIN" },
+ { DHCP_SWAPSERVER, OPT_IPV4, "SWAPSERVER" },
{ DHCP_ROOTPATH, OPT_STRING, "ROOTPATH" },
- { DHCP_SIPSERVER, OPT_STRING | OPT_RFC3361, "SIPSERVER" },
+ { DHCP_EXTENSIONSPATH, OPT_STRING, "EXTENSIONSPATH" },
+
+ { DHCP_IPFORWARDING, OPT_UINT8, "IPFORWARDING" },
+ { DHCP_NONLOCALSOURCEROUTING, OPT_UINT8, "NONLOCALSOURCEROUTING" },
+ { DHCP_POLICYFILTER, OPT_IPV4, "POLICYFILTER" },
+ { DHCP_MAXDGRAMSIZE, OPT_UINT16, "MAXDGRAMSIZE" },
+ { DHCP_DEFAULTIPTTL, OPT_UINT16, "DEFAULTIPTTL" },
+ { DHCP_PATHMTUAGINGTIMEOUT, OPT_UINT32, "PATHMTUAGINGTIMEOUT" },
+ { DHCP_PATHMTUPLATEAUTABLE, OPT_UINT16 | OPT_ARRAY, "PATHMTUPLATEAUTABLE" },
+
+ { DHCP_MTU, OPT_UINT16, "MTU" },
+ { DHCP_ALLSUBNETSLOCAL, OPT_UINT8, "ALLSUBNETSLOCAL" },
+ { DHCP_BROADCAST, OPT_IPV4R, NULL },
+ { DHCP_MASKDISCOVERY, OPT_UINT8, "MASKDISCOVERY" },
+ { DHCP_MASKSUPPLIER, OPT_UINT8, "MASKSUPPLIER" },
+ { DHCP_ROUTERDISCOVERY, OPT_UINT8, "ROUTERDISCOVERY" },
+ { DHCP_ROUTERSOLICITATIONADDR, OPT_UINT8, "ROUTERSOLICITATIONADDR" },
+ { DHCP_STATICROUTE, OPT_IPV4R, NULL },
+
+ { DHCP_TRAILERENCAPSULATION, OPT_UINT8, "TRAILERENCAPSULATION" },
+ { DHCP_ARPCACHETIMEOUT, OPT_UINT32, "ARPCACHETIMEOUT" },
+ { DHCP_ETHERNETENCAPSULATION, OPT_UINT8, "ETHERNETENCAPSULATION" },
+
+ { DHCP_TCPDEFAULTTTL, OPT_UINT8, "TCPDEFAULTTTL" },
+ { DHCP_TCPKEEPALIVEINTERVAL, OPT_UINT32, "TCPKEEPALIVEINTERVAL" },
+ { DHCP_TCPKEEPALIVEGARBAGE, OPT_UINT8, "TCPKEEPALIVEGARBAGE" },
+
+ { DHCP_NISDOMAIN, OPT_IPV4, "NISDOMAIN" },
+ { DHCP_NISSERVER, OPT_IPV4, "NISSERVER" },
+ { DHCP_NTPSERVER, OPT_IPV4, "NTPSERVER" },
+ { DHCP_VENDORSPECIFICINFO, 0, "VENDORSPECIFICINFO" },
+ { DHCP_NETBIOSNAMESERVER, OPT_IPV4, "NETBIOSNAMESERVER" },
+ { DHCP_NETBIOSDGRAMSERVER, OPT_IPV4, "NETBIOSDGRAMSERVER" },
+ { DHCP_NETBIOSNODETYPE, OPT_UINT8, "NETBIOSNODETYPE" },
+ { DHCP_NETBIOSSCOPE, 0, "NETBIOSSCOPE" },
+ { DHCP_XFONTSERVER, OPT_IPV4, "XFONTSERVER" },
+ { DHCP_XDISPLAYMANAGER, OPT_IPV4, "XDISPLAYMANAGER" },
+ { DHCP_NISPLUSDOMAIN, OPT_IPV4, "NISPLUSDOMAIN" },
+ { DHCP_NISPLUSSERVER, OPT_IPV4, "NISPLUSSERVER" },
+ { DHCP_MOBILEIPHOMEAGENT, OPT_IPV4, "MOBILEIPHOMEAGENT" },
+ { DHCP_SMTPSERVER, OPT_IPV4, "SMTPSERVER" },
+ { DHCP_POP3SERVER, OPT_IPV4, "POP3SERVER" },
+ { DHCP_NNTPSERVER, OPT_IPV4, "NNTPSERVER" },
+ { DHCP_WWWSERVER, OPT_IPV4, "WWWSERVER" },
+ { DHCP_FINGERSERVER, OPT_IPV4, "FINGERSERVER" },
+ { DHCP_IRCSERVER, OPT_IPV4, "IRCSERVER" },
+ { DHCP_STREETTALKSERVER, OPT_IPV4, "STREETTALKSERVER" },
+ { DHCP_STREETTALKDASERVER, OPT_IPV4, "STREETTALKDASERVER" },
+
+ { DHCP_LEASETIME, OPT_UINT32, NULL },
+ { DHCP_SERVERID, OPT_IPV4, "SERVERID" },
+ { DHCP_RENEWALTIME, OPT_UINT32 | OPT_REQUEST, NULL },
+ { DHCP_REBINDTIME, OPT_UINT32 | OPT_REQUEST, NULL },
+
{ DHCP_MESSAGE, OPT_STRING, NULL},
+ { DHCP_DNSSEARCH, OPT_STRING | OPT_RFC3397, "DNSSEARCH" },
+ { DHCP_SIPSERVER, OPT_STRING | OPT_RFC3361, "SIPSERVER" },
{ 0, 0, NULL }
};
ssize_t retval = 0;
for (i = 0; i < sizeof(dhcp_options) / sizeof(dhcp_options[0]); i++) {
- if (!dhcp_options[i].var)
+ if (!dhcp_options[i].var || !dhcp_options[i].type)
continue;
- retval += fprintf(f, "%s=", dhcp_options[i].var);
+ retval += fprintf(f, "%s='", dhcp_options[i].var);
if (dhcp_options[i].type & OPT_STRING) {
s = get_option_string(dhcp, dhcp_options[i].type);
if (s) {
c = clean_metas(s);
- retval += fprintf(f, "'%s'", c);
+ retval += fprintf(f, "%s", c);
free(c);
free(s);
}
if (dhcp_options[i].type & OPT_IPV4) {
p = get_option(dhcp, dhcp_options[i].option);
if (p) {
- if (fputc('\'', f))
- retval++;
u8 = *p++;
t = p;
e = p + u8;
inet_ntoa(addr));
p += sizeof(addr.s_addr);
}
- if (fputc('\'', f))
- retval++;
}
}
-
- if (fputc('\n', f))
- retval++;
+ retval += fprintf(f, "'\n");
}
return retval;
}