PERFORCE change 86090 for review

Robert Watson rwatson at FreeBSD.org
Sun Oct 30 15:19:10 PST 2005


http://perforce.freebsd.org/chv.cgi?CH=86090

Change 86090 by rwatson at rwatson_zoo on 2005/10/30 23:18:31

	Modify UDP so it uses sosend_dgram(), although only for consumers
	that properly call pru_sosend() rather than sosend() (i.e., user
	space, but probably not all kernel consumers, which may assume
	sosend()).  A sysctl allows this to be changed at run-time, using
	sosend() as the default.

Affected files ...

.. //depot/projects/netsmp/src/sys/netinet/udp_usrreq.c#4 edit

Differences ...

==== //depot/projects/netsmp/src/sys/netinet/udp_usrreq.c#4 (text+ko) ====

@@ -1114,5 +1114,32 @@
 	.pru_send =		udp_send,
 	.pru_shutdown =		udp_shutdown,
 	.pru_sockaddr =		udp_sockaddr,
+	.pru_sosend =		sosend,
 	.pru_sosetlabel =	in_pcbsosetlabel
 };
+
+static int
+sysctl_net_inet_udp_sosend_dgram(SYSCTL_HANDLER_ARGS)
+{
+	int error, mode;
+
+	if (udp_usrreqs.pru_sosend == sosend_dgram)
+		mode = 1;
+	else
+		mode = 0;
+
+	error = sysctl_handle_int(oidp, &mode, 0, req);
+	if (error || !req->newptr)
+	        return (error);
+ 
+	if (mode)
+	        udp_usrreqs.pru_sosend = sosend_dgram;
+	else
+	        udp_usrreqs.pru_sosend = sosend;
+
+	return (0);
+}
+
+SYSCTL_PROC(_net_inet_udp, OID_AUTO, sosend_dgram, CTLTYPE_INT |
+    CTLFLAG_RW, 0, 0, sysctl_net_inet_udp_sosend_dgram, "I",
+    "Use optimized sosend_dgram instead of sosend for UDP");


More information about the p4-projects mailing list