netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* UDP Wide Broadcast patch
@ 2002-08-18 18:22 John Tobin
  0 siblings, 0 replies; only message in thread
From: John Tobin @ 2002-08-18 18:22 UTC (permalink / raw)
  To: netdev; +Cc: ttimo

[-- Attachment #1: Type: text/plain, Size: 451 bytes --]

Hi,
DocWilco and I came up with this patch for the linux kernel at Quakecon
last night based off of his BSD patch that works around the programming
oversight in Quake 3 that causes packets from the dedicated server to
not broadcast when the +set net_ip option is used on a LAN, it isn't an
issue with internet servers since the send heartbeats to the id master
server. The behavior is off by default and can be turned on using a
sysctl.

John Tobin



[-- Attachment #2: udp_wide_broadcast.patch --]
[-- Type: text/plain, Size: 1889 bytes --]

--- linux/include/linux/sysctl.h.orig	2002-08-17 19:52:27.000000000 -0500
+++ linux/include/linux/sysctl.h	2002-08-17 19:53:00.000000000 -0500
@@ -291,7 +291,8 @@
 	NET_IPV4_NONLOCAL_BIND=88,
 	NET_IPV4_ICMP_RATELIMIT=89,
 	NET_IPV4_ICMP_RATEMASK=90,
-	NET_TCP_TW_REUSE=91
+	NET_TCP_TW_REUSE=91,
+	NET_UDP_WIDE_BROADCAST=92
 };
 
 enum {
--- linux-modified/net/ipv4/sysctl_net_ipv4.c.orig	2002-08-17 19:48:19.000000000 -0500
+++ linux-modified/net/ipv4/sysctl_net_ipv4.c	2002-08-17 19:52:03.000000000 -0500
@@ -45,6 +45,9 @@
 extern int inet_peer_gc_mintime;
 extern int inet_peer_gc_maxtime;
 
+/* From udp.c */
+extern int sysctl_udp_wide_broadcast;
+
 #ifdef CONFIG_SYSCTL
 static int tcp_retr1_max = 255; 
 static int ip_local_port_range_min[] = { 1, 1 };
@@ -221,6 +224,8 @@
 	 &sysctl_icmp_ratemask, sizeof(int), 0644, NULL, &proc_dointvec},
 	{NET_TCP_TW_REUSE, "tcp_tw_reuse",
 	 &sysctl_tcp_tw_reuse, sizeof(int), 0644, NULL, &proc_dointvec},
+	{NET_UDP_WIDE_BROADCAST, "udp_wide_broadcast",
+	 &sysctl_udp_wide_broadcast, sizeof(int), 0644, NULL, &proc_dointvec},
 	{0}
 };
 
--- linux-modified/net/ipv4/udp.c.orig	2002-08-17 19:40:59.000000000 -0500
+++ linux-modified/net/ipv4/udp.c	2002-08-17 23:37:47.000000000 -0500
@@ -94,6 +94,8 @@
 #include <net/inet_common.h>
 #include <net/checksum.h>
 
+int sysctl_udp_wide_broadcast = 0;
+
 /*
  *	Snmp MIB for the UDP layer
  */
@@ -272,9 +274,10 @@
 		if ((s->num != hnum)					||
 		    (s->daddr && s->daddr!=rmt_addr)			||
 		    (s->dport != rmt_port && s->dport != 0)			||
-		    (s->rcv_saddr  && s->rcv_saddr != loc_addr)		||
-		    (s->bound_dev_if && s->bound_dev_if != dif))
+		    !(sysctl_udp_wide_broadcast || !(s->rcv_saddr  && s->rcv_saddr != loc_addr))	||
+		    (s->bound_dev_if && s->bound_dev_if != dif)) {
 			continue;
+		}
 		break;
   	}
   	return s;

[-- Attachment #3: readme.txt --]
[-- Type: text/plain, Size: 729 bytes --]

UDP Wide Broadcast Patch for Kernel 2.4.19

Main purpose is to allow Quake 3 servers, and all games powered by the
engine, to be visible in the server browser when the servers are being run on
aliased IP addresses and multiple NICs using the +set net_ip option.

To apply the patch run "patch -p1 < udp_wide_broadcast.patch" from your
source directory and recompile.

Add "echo "1" > /proc/sys/net/ipv4/udp_wide_broadcast" to one of your startup
scripts, i.e./etc/rc.d/rc.local, and run thousands of servers from your
computer.


Patch by:
Rogier Mulhujzen <linux@bsdchicks.com>
John Tobin <ogre@sirinet.net>

A patch with the same functionality for FreeBSD is available from
http://www.bsdchicks.com/patches

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2002-08-18 18:22 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-08-18 18:22 UDP Wide Broadcast patch John Tobin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).