diff options
Diffstat (limited to 'net-mgmt/wide-dhcp/files/patch-as')
| -rw-r--r-- | net-mgmt/wide-dhcp/files/patch-as | 153 |
1 files changed, 147 insertions, 6 deletions
diff --git a/net-mgmt/wide-dhcp/files/patch-as b/net-mgmt/wide-dhcp/files/patch-as index fd057ececff7..d41aee411404 100644 --- a/net-mgmt/wide-dhcp/files/patch-as +++ b/net-mgmt/wide-dhcp/files/patch-as @@ -1,22 +1,163 @@ --- client/dhcpc.c.orig Fri Nov 3 01:40:40 1995 -+++ client/dhcpc.c Tue Mar 26 18:06:39 1996 -@@ -1760,6 +1760,7 @@ ++++ client/dhcpc.c Thu Mar 27 15:11:20 1997 +@@ -53,6 +53,12 @@ + #ifndef sun + #include <net/bpf.h> + #endif ++#ifdef __FreeBSD__ ++#include <osreldate.h> ++#if (__FreeBSD_version == 199702) || (__FreeBSD_version >= 300000) ++#include <net/if_var.h> ++#endif ++#endif + #include <netinet/in.h> + #include <netinet/in_systm.h> + #include <netinet/if_ether.h> +@@ -86,6 +92,7 @@ + struct dhcp_reqspec reqspec; + struct if_info intface; + struct dhcp_param *param_list; ++int f_resolv, f_hostname; + + int (*fsm[MAX_STATES])(); + +@@ -227,6 +234,14 @@ + ((brdaddr.s_addr != 0) ? &brdaddr : NULL)) != 1) { + set_route(paramp); + } ++#ifdef __FreeBSD__ ++ if (f_resolv) { ++ set_resolv(param_list); ++ } ++ if (f_hostname) { ++ set_hostname(param_list); ++ } ++#endif + #endif + + return; +@@ -264,15 +279,8 @@ + /* + * split conditions into pieces for debugging + */ +-#ifndef sun +- if (ntohs(rcv.ip->ip_len) < DFLTBOOTPLEN + UDPHL + IPHL) +- return(0); +- if (ntohs(rcv.udp->uh_ulen) < DFLTBOOTPLEN + UDPHL) +- return(0); +-#else + if (rcv.udp->uh_dport != dhcpc_port) + return(0); +-#endif + if (ripcksum != cksum((u_short *) rcv.ip, rcv.ip->ip_hl * 2)) + return(0); + if (rcv.udp->uh_sum != 0 && +@@ -321,15 +329,8 @@ + /* + * split conditions into pieces for debugging + */ +-#ifndef sun +- if (ntohs(rcv.ip->ip_len) < DFLTBOOTPLEN + UDPHL + IPHL) +- return(0); +- if (ntohs(rcv.udp->uh_ulen) < DFLTBOOTPLEN + UDPHL) +- return(0); +-#else + if (rcv.udp->uh_dport != dhcpc_port) + return(0); +-#endif + if (ripcksum != cksum((u_short *) rcv.ip, rcv.ip->ip_hl * 2)) + return(0); + if (rcv.udp->uh_sum != 0 && +@@ -1740,7 +1741,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); + } + +@@ -1760,17 +1765,42 @@ { int debug = 0; int n = 0; ++ int count; + FILE *pid_file; struct if_info ifinfo; ++#ifdef __FreeBSD__ ++ char pid_filename[MAXPATHLEN]; ++#endif bzero(&reqspec, sizeof(reqspec)); -@@ -1789,6 +1790,11 @@ - ioctl(n, TIOCNOTTY, (char *) 0); + bzero(&ifinfo, sizeof(ifinfo)); ++#ifdef __FreeBSD__ ++#define COM_OPTS "vdrn" ++#else ++#define COM_OPTS "vd" ++#endif ++ + if (argc < 2) usage(); +- --argc, ++argv; +- if (argv[0][0] == '-' && argv[0][1] == 'v') version(); +- if (argv[0][0] == '-' && argv[0][1] == 'd') { +- debug = 1; +- --argc, ++argv; ++ ++ 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]); +@@ -1790,6 +1820,19 @@ close(n); } -+ } + } + /* initialization works well, so recored its own pid */ ++#ifdef __FreeBSD__ ++ strncpy(pid_filename, PATH_PID, MAXPATHLEN); ++ strncat(pid_filename, "/dhcpc.", (MAXPATHLEN - strlen(pid_filename))); ++ strncat(pid_filename, ifinfo.name, (MAXPATHLEN - strlen(pid_filename))); ++ strncat(pid_filename, ".pid", (MAXPATHLEN - strlen(pid_filename))); ++ if ((pid_file = fopen(pid_filename, "w")) != NULL) { ++#else + if ((pid_file = fopen(PATH_PID, "w")) != NULL) { ++#endif + fprintf(pid_file, "%d\n", (int) getpid()); + fclose(pid_file); - } ++ } /* + * set request specification +@@ -1802,6 +1845,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 + + return(dhcp_client(&ifinfo)); + } |
