svn commit: r247526 - in stable/8/sys: netinet sys

John Baldwin jhb at FreeBSD.org
Fri Mar 1 03:05:09 UTC 2013


Author: jhb
Date: Fri Mar  1 03:05:08 2013
New Revision: 247526
URL: http://svnweb.freebsd.org/changeset/base/247526

Log:
  MFC 245823,245824,246210
  - Use decimal values for UDP, TCP, and UNIX domain socket options rather
    than hex to avoid implying that these constants should be treated as bit
    masks.
  - Add placeholder constants to reserve a portion of the socket option
    name space for use by downstream vendors to add custom options.

Modified:
  stable/8/sys/netinet/tcp.h
  stable/8/sys/netinet/udp.h
  stable/8/sys/sys/socket.h
  stable/8/sys/sys/un.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/netinet/   (props changed)
  stable/8/sys/sys/   (props changed)

Modified: stable/8/sys/netinet/tcp.h
==============================================================================
--- stable/8/sys/netinet/tcp.h	Fri Mar  1 03:04:57 2013	(r247525)
+++ stable/8/sys/netinet/tcp.h	Fri Mar  1 03:05:08 2013	(r247526)
@@ -140,16 +140,21 @@ struct tcphdr {
 #endif /* __BSD_VISIBLE */
 
 /*
- * User-settable options (used with setsockopt).
+ * User-settable options (used with setsockopt).  These are discrete
+ * values and are not masked together.  Some values appear to be
+ * bitmasks for historical reasons.
  */
-#define	TCP_NODELAY	0x01	/* don't delay send to coalesce packets */
+#define	TCP_NODELAY	1	/* don't delay send to coalesce packets */
 #if __BSD_VISIBLE
-#define	TCP_MAXSEG	0x02	/* set maximum segment size */
-#define TCP_NOPUSH	0x04	/* don't push last block of write */
-#define TCP_NOOPT	0x08	/* don't use TCP options */
-#define TCP_MD5SIG	0x10	/* use MD5 digests (RFC2385) */
-#define	TCP_INFO	0x20	/* retrieve tcp_info structure */
-#define	TCP_CONGESTION	0x40	/* get/set congestion control algorithm */
+#define	TCP_MAXSEG	2	/* set maximum segment size */
+#define TCP_NOPUSH	4	/* don't push last block of write */
+#define TCP_NOOPT	8	/* don't use TCP options */
+#define TCP_MD5SIG	16	/* use MD5 digests (RFC2385) */
+#define	TCP_INFO	32	/* retrieve tcp_info structure */
+#define	TCP_CONGESTION	64	/* get/set congestion control algorithm */
+
+/* Start of reserved space for third-party user-settable options. */
+#define	TCP_VENDOR	SO_VENDOR
 
 #define	TCP_CA_NAME_MAX	16	/* max congestion control name length */
 

Modified: stable/8/sys/netinet/udp.h
==============================================================================
--- stable/8/sys/netinet/udp.h	Fri Mar  1 03:04:57 2013	(r247525)
+++ stable/8/sys/netinet/udp.h	Fri Mar  1 03:05:08 2013	(r247526)
@@ -48,8 +48,10 @@ struct udphdr {
 /* 
  * User-settable options (used with setsockopt).
  */
-#define	UDP_ENCAP			0x01
+#define	UDP_ENCAP			1
 
+/* Start of reserved space for third-party user-settable options. */
+#define	UDP_VENDOR			SO_VENDOR
 
 /*
  * UDP Encapsulation of IPsec Packets options.

Modified: stable/8/sys/sys/socket.h
==============================================================================
--- stable/8/sys/sys/socket.h	Fri Mar  1 03:04:57 2013	(r247525)
+++ stable/8/sys/sys/socket.h	Fri Mar  1 03:05:08 2013	(r247526)
@@ -144,6 +144,15 @@ typedef	__uid_t		uid_t;
 #endif
 
 /*
+ * Space reserved for new socket options added by third-party vendors.
+ * This range applies to all socket option levels.  New socket options
+ * in FreeBSD should always use an option value less than SO_VENDOR.
+ */
+#if __BSD_VISIBLE
+#define	SO_VENDOR	0x80000000
+#endif
+
+/*
  * Structure used for manipulating linger option.
  */
 struct linger {

Modified: stable/8/sys/sys/un.h
==============================================================================
--- stable/8/sys/sys/un.h	Fri Mar  1 03:04:57 2013	(r247525)
+++ stable/8/sys/sys/un.h	Fri Mar  1 03:05:08 2013	(r247526)
@@ -53,9 +53,12 @@ struct sockaddr_un {
 #if __BSD_VISIBLE
 
 /* Socket options. */
-#define	LOCAL_PEERCRED		0x001	/* retrieve peer credentials */
-#define	LOCAL_CREDS		0x002	/* pass credentials to receiver */
-#define	LOCAL_CONNWAIT		0x004	/* connects block until accepted */
+#define	LOCAL_PEERCRED		1	/* retrieve peer credentials */
+#define	LOCAL_CREDS		2	/* pass credentials to receiver */
+#define	LOCAL_CONNWAIT		4	/* connects block until accepted */
+
+/* Start of reserved space for third-party socket options. */
+#define	LOCAL_VENDOR		SO_VENDOR
 
 #ifndef _KERNEL
 


More information about the svn-src-stable-8 mailing list