aboutsummaryrefslogtreecommitdiffstats
path: root/examples/old-patches/dhcpd-never-broadcast.diff
diff options
context:
space:
mode:
Diffstat (limited to 'examples/old-patches/dhcpd-never-broadcast.diff')
-rw-r--r--examples/old-patches/dhcpd-never-broadcast.diff88
1 files changed, 88 insertions, 0 deletions
diff --git a/examples/old-patches/dhcpd-never-broadcast.diff b/examples/old-patches/dhcpd-never-broadcast.diff
new file mode 100644
index 0000000..ac6d24d
--- /dev/null
+++ b/examples/old-patches/dhcpd-never-broadcast.diff
@@ -0,0 +1,88 @@
+diff -ur isc-dhcp-4.1.1-P1/includes/dhcpd.h isc-dhcp-4.1.1-P1.patched//includes/dhcpd.h
+--- isc-dhcp-4.1.1-P1/includes/dhcpd.h 2012-04-04 16:49:44.000000000 +0200
++++ isc-dhcp-4.1.1-P1.patched//includes/dhcpd.h 2012-04-04 14:56:43.000000000 +0200
+@@ -626,6 +626,7 @@
+ #define SV_LIMIT_PREFS_PER_IA 57
+ #define SV_DELAYED_ACK 58
+ #define SV_MAX_ACK_DELAY 59
++#define SV_NEVER_BROADCAST 60
+
+ #if !defined (DEFAULT_PING_TIMEOUT)
+ # define DEFAULT_PING_TIMEOUT 1
+diff -ur isc-dhcp-4.1.1-P1/server/bootp.c isc-dhcp-4.1.1-P1.patched//server/bootp.c
+--- isc-dhcp-4.1.1-P1/server/bootp.c 2009-07-25 00:04:52.000000000 +0200
++++ isc-dhcp-4.1.1-P1.patched//server/bootp.c 2012-04-04 14:55:21.000000000 +0200
+@@ -283,6 +283,15 @@
+ &lease -> scope, oc, MDL))
+ raw.flags |= htons (BOOTP_BROADCAST);
+
++ /* The inverse. */
++ if ((oc = lookup_option (&server_universe,
++ options, SV_NEVER_BROADCAST)) &&
++ evaluate_boolean_option_cache (&ignorep, packet, lease,
++ (struct client_state *)0,
++ packet -> options, options,
++ &lease -> scope, oc, MDL))
++ raw.flags &= htons (~BOOTP_BROADCAST);
++
+ /* Figure out the address of the next server. */
+ memset (&d1, 0, sizeof d1);
+ oc = lookup_option (&server_universe, options, SV_NEXT_SERVER);
+diff -ur isc-dhcp-4.1.1-P1/server/dhcp.c isc-dhcp-4.1.1-P1.patched//server/dhcp.c
+--- isc-dhcp-4.1.1-P1/server/dhcp.c 2012-04-04 16:48:46.000000000 +0200
++++ isc-dhcp-4.1.1-P1.patched//server/dhcp.c 2012-04-04 14:55:45.000000000 +0200
+@@ -2482,6 +2482,15 @@
+ &lease -> scope, oc, MDL))
+ state -> bootp_flags |= htons (BOOTP_BROADCAST);
+
++ /* The inverse. */
++ if ((oc = lookup_option (&server_universe, state -> options,
++ SV_NEVER_BROADCAST)) &&
++ evaluate_boolean_option_cache (&ignorep, packet, lease,
++ (struct client_state *)0,
++ packet -> options, state -> options,
++ &lease -> scope, oc, MDL))
++ state -> bootp_flags &= htons (~BOOTP_BROADCAST);
++
+ /* Get the Maximum Message Size option from the packet, if one
+ was sent. */
+ oc = lookup_option (&dhcp_universe, packet -> options,
+diff -ur isc-dhcp-4.1.1-P1/server/dhcpd.conf.5 isc-dhcp-4.1.1-P1.patched//server/dhcpd.conf.5
+--- isc-dhcp-4.1.1-P1/server/dhcpd.conf.5 2012-04-04 16:48:46.000000000 +0200
++++ isc-dhcp-4.1.1-P1.patched//server/dhcpd.conf.5 2012-04-04 16:45:44.000000000 +0200
+@@ -1914,6 +1914,24 @@
+ .RE
+ .PP
+ The
++.I never-broadcast
++statement
++.RS 0.25i
++.PP
++.B never-broadcast \fIflag\fR\fB;\fR
++.PP
++When using DHCP in routed networks, the router has to participate in rewriting
++and sending DHCP replies on to the user. Unfortunately, some devices,
++in particular Cisco's Nexus series of switches, drop such DHCP reply packets
++with the broadcast bit in the flags field of the DHCP message header set.
++Thi means that some operating systems, in particular Microsoft Windows Vista,
++can have problems getting DHCP to work in such environments. If you enable
++this flag, the DHCP server will never set the broadcast flags in the replies
++it sends, even if the client set the broadcast flag. This flag overrides
++the never-broadcast flag if both are set.
++.RE
++.PP
++The
+ .I always-reply-rfc1048
+ statement
+ .RS 0.25i
+diff -ur isc-dhcp-4.1.1-P1/server/stables.c isc-dhcp-4.1.1-P1.patched//server/stables.c
+--- isc-dhcp-4.1.1-P1/server/stables.c 2012-04-04 16:49:44.000000000 +0200
++++ isc-dhcp-4.1.1-P1.patched//server/stables.c 2012-04-04 14:56:43.000000000 +0200
+@@ -203,6 +203,7 @@
+ { "always-reply-rfc1048", "f", &server_universe, 20, 1 },
+ { "site-option-space", "X", &server_universe, 21, 1 },
+ { "always-broadcast", "f", &server_universe, 22, 1 },
++ { "never-broadcast", "f", &server_universe, 60, 1 },
+ { "ddns-domainname", "t", &server_universe, 23, 1 },
+ { "ddns-hostname", "t", &server_universe, 24, 1 },
+ { "ddns-rev-domainname", "t", &server_universe, 25, 1 },