--- client/dhcpc_subr.c.orig Wed Sep 9 17:06:39 1998 +++ client/dhcpc_subr.c Sat Dec 5 02:52:57 1998 @@ -64,6 +64,12 @@ #ifdef __osf__ #include #endif +#ifdef __FreeBSD__ +#include +#if (__FreeBSD_version == 199702) || (__FreeBSD_version >= 300000) +#include +#endif +#endif #include #include #include @@ -71,6 +77,8 @@ #include #include #include +#include +#include #ifdef VIP #include #endif @@ -165,6 +173,8 @@ int config_if(); void set_route(); +void set_resolv(); +void set_hostname(); void make_decline(); void make_release(); Long generate_xid(); @@ -1856,6 +1866,10 @@ register char *cp = m_rtmsg.m_space; register int l; + if (!ISSET(param->got_option, ROUTER) || + param->router == NULL || param->router->addr == NULL) + return; + bzero(&so_dst, sizeof(struct sockaddr)); bzero(&so_mask, sizeof(struct sockaddr)); bzero(&so_gate, sizeof(struct sockaddr)); @@ -1898,6 +1912,45 @@ #endif +void +set_resolv(param) +struct dhcp_param *param; +{ + FILE *fp; + int i; + + if (param == NULL) { + return; + } + + /* + * set resolv.conf + */ + if (param->dns_server != NULL) { + if (param->dns_server->num && param->dns_server->addr != NULL) { + unlink(_PATH_RESCONF); + if ((fp = fopen(_PATH_RESCONF, "w")) == NULL) { + return; + } + if (param->dns_domain != NULL) + fprintf(fp, "domain %s\n", param->dns_domain); + for (i = 0; i < param->dns_server->num; i++) { + fprintf(fp,"nameserver %s\n",inet_ntoa(param->dns_server->addr[i])); + } + fclose(fp); + } + } +} + +void +set_hostname(param) +struct dhcp_param *param; +{ + if (param->hostname != NULL) { + sethostname(param->hostname,strlen(param->hostname)); + } + return; +} void make_decline(lsbuf, reqspecp)