--- client/dhcpc.c.orig Fri Jan 1 05:20:08 1999 +++ client/dhcpc.c Sun Feb 7 11:17:59 1999 @@ -88,6 +88,7 @@ struct dhcp_reqspec reqspec; struct if_info intface; struct dhcp_param *param_list; +int f_resolv, f_hostname; char pid_filename[MAXPATHLEN]; char cache_filename[MAXPATHLEN]; @@ -256,6 +257,14 @@ if (config_if(&intface, &addr, &mask, &brdaddr) == 0) { set_route(paramp); } +#ifdef __FreeBSD__ + if (f_resolv) { + set_resolv(param_list); + } + if (f_hostname) { + set_hostname(param_list); + } +#endif #endif return; @@ -293,7 +302,7 @@ /* * split conditions into pieces for debugging */ -#ifndef sun +#if !defined(sun) && !defined(__FreeBSD__) if (ntohs(rcv.ip->ip_len) < MINDHCPLEN + UDPHL + IPHL) return(0); if (ntohs(rcv.udp->uh_ulen) < MINDHCPLEN + UDPHL) @@ -350,7 +359,7 @@ /* * split conditions into pieces for debugging */ -#ifndef sun +#if !defined(sun) && !defined(__FreeBSD__) if (ntohs(rcv.ip->ip_len) < MINDHCPLEN + UDPHL + IPHL) return(0); if (ntohs(rcv.udp->uh_ulen) < MINDHCPLEN + UDPHL) @@ -1789,7 +1798,11 @@ void usage() { - fprintf(stderr, "Usage: dhcpc [-d] if_name\n"); +#ifdef __FreeBSD__ + fprintf(stderr, "Usage: dhcpc [-v] [-drn] if_name\n"); +#else + fprintf(stderr, "Usage: dhcpc [-v] [-d] if_name\n"); +#endif exit(1); } @@ -1809,26 +1822,39 @@ { int debug = 0; int n = 0; + int count; struct if_info ifinfo; bzero(&reqspec, sizeof(reqspec)); bzero(&ifinfo, sizeof(ifinfo)); - while (*++argv && argv[0][0] == '-') { - switch (argv[0][1]) { - case 'v': - version(); - break; - case 'd': - debug = 1; - break; - default: - usage(); - break; - } - } - if (argv[0] == NULL) usage(); +#ifdef __FreeBSD__ +#define COM_OPTS "vdrn" +#else +#define COM_OPTS "vd" +#endif + while ((count = getopt(argc, argv, COM_OPTS)) != EOF) { + switch (count) { + case 'v': + version(); + case 'd': + debug = 1; + break; +#ifdef __FreeBSD__ + case 'r': + f_resolv = 1; + break; + case 'n': + f_hostname = 1; + break; +#endif + } + } + argc -= optind; + argv += optind; + + if (argc < 1) usage(); strcpy(ifinfo.name, argv[0]); /* @@ -1859,6 +1885,11 @@ reqspec.reqlist.list[reqspec.reqlist.len++] = SUBNET_MASK; reqspec.reqlist.list[reqspec.reqlist.len++] = ROUTER; reqspec.reqlist.list[reqspec.reqlist.len++] = BRDCAST_ADDR; +#ifdef __FreeBSD__ + reqspec.reqlist.list[reqspec.reqlist.len++] = DNS_DOMAIN; + reqspec.reqlist.list[reqspec.reqlist.len++] = DNS_SERVER; + reqspec.reqlist.list[reqspec.reqlist.len++] = HOSTNAME; +#endif n = dhcp_client(&ifinfo); unlink(pid_filename);