-Send hostname/fqdn in DISCOVER and INFORM messages too.
+NIS setup (yp.conf / domainname) works again.
+Send hostname/fqdn and our parameter list in DISCOVER and INFORM messages too.
Add more debug messages.
Fix writing to resolv.conf when resolvconf not present.
Include linux/if_addr.h for 2.6.19+ kernels, thanks to AlexExtreme.
{
FILE *f;
struct stat buf;
- char resolvconf[PATH_MAX];
+ char resolvconf[PATH_MAX] = {0};
address_t *address;
- memset (&buf, 0, sizeof (struct stat));
- if (stat ("/sbin/resolvconf", &buf) == 0)
+ if (stat (RESOLVCONF, &buf) == 0)
{
logger (LOG_DEBUG, "sending DNS information to resolvconf");
- snprintf (resolvconf, PATH_MAX, "/sbin/resolvconf -a %s", ifname);
+ snprintf (resolvconf, PATH_MAX, RESOLVCONF" -a %s", ifname);
f = popen (resolvconf, "w");
if (! f)
for (address = dhcp->dnsservers; address; address = address->next)
fprintf (f, "nameserver %s\n", inet_ntoa (address->address));
- if (buf.st_ino)
- {
- pclose (f);
- logger (LOG_DEBUG, "resolvconf completed");
- }
+ if (*resolvconf)
+ pclose (f);
else
fclose (f);
}
{
struct stat buf;
- if (stat ("/sbin/resolvconf", &buf) < 0)
+ if (stat (RESOLVCONF, &buf) < 0)
return;
logger (LOG_DEBUG, "removing information from resolvconf");
char *argc[4];
- argc[0] = "/sbin/resolvconf";
+ argc[0] = RESOLVCONF;
argc[1] = "-d";
argc[2] = ifname;
argc[3] = NULL;
n_params = p;
*p++ = 0;
- /* If we don't request one item, then we get defaults back which
- we don't want */
- if (type == DHCP_DISCOVER)
- {
- *p++ = DHCP_DNSSERVER;
- }
- else
- {
- *p++ = DHCP_RENEWALTIME;
- *p++ = DHCP_REBINDTIME;
- *p++ = DHCP_NETMASK;
- *p++ = DHCP_BROADCAST;
- *p++ = DHCP_CSR;
- /* RFC 3442 states classless static routes should be before routers
- * and static routes as classless static routes override them both */
- *p++ = DHCP_ROUTERS;
- *p++ = DHCP_STATICROUTE;
- *p++ = DHCP_HOSTNAME;
- *p++ = DHCP_DNSSEARCH;
- *p++ = DHCP_DNSDOMAIN;
- *p++ = DHCP_DNSSERVER;
- *p++ = DHCP_NISDOMAIN;
- *p++ = DHCP_NISSERVER;
- *p++ = DHCP_NTPSERVER;
- /* These parameters were requested by dhcpcd-2.0 and earlier
- but we never did anything with them */
- /* *p++ = DHCP_DEFAULTIPTTL;
- *p++ = DHCP_MASKDISCOVERY;
- *p++ = DHCP_ROUTERDISCOVERY; */
- }
+ *p++ = DHCP_RENEWALTIME;
+ *p++ = DHCP_REBINDTIME;
+ *p++ = DHCP_NETMASK;
+ *p++ = DHCP_BROADCAST;
+ *p++ = DHCP_CSR;
+ /* RFC 3442 states classless static routes should be before routers
+ * and static routes as classless static routes override them both */
+ *p++ = DHCP_ROUTERS;
+ *p++ = DHCP_STATICROUTE;
+ *p++ = DHCP_HOSTNAME;
+ *p++ = DHCP_DNSSEARCH;
+ *p++ = DHCP_DNSDOMAIN;
+ *p++ = DHCP_DNSSERVER;
+ *p++ = DHCP_NISDOMAIN;
+ *p++ = DHCP_NISSERVER;
+ *p++ = DHCP_NTPSERVER;
+ /* These parameters were requested by dhcpcd-2.0 and earlier
+ but we never did anything with them */
+ /* *p++ = DHCP_DEFAULTIPTTL;
+ *p++ = DHCP_MASKDISCOVERY;
+ *p++ = DHCP_ROUTERDISCOVERY; */
*n_params = p - n_params - 1;
options.doarp = false;
options.dodns = true;
+ options.donis = true;
options.dontp = true;
options.dogateway = true;
options.timeout = DEFAULT_TIMEOUT;
#define PACKAGE "dhcpcd"
+#define RESOLVCONF "/sbin/resolvconf"
+
#define ETCDIR "/etc"
#define RESOLVFILE ETCDIR "/resolv.conf"
#define NISFILE ETCDIR "/yp.conf"