summaryrefslogtreecommitdiff
path: root/net-mgmt/wide-dhcp/files/patch-as
diff options
context:
space:
mode:
Diffstat (limited to 'net-mgmt/wide-dhcp/files/patch-as')
-rw-r--r--net-mgmt/wide-dhcp/files/patch-as153
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));
+ }