[PATCH] Don't imply TCP and UDP socket options are bitmasks

John Baldwin jhb at freebsd.org
Tue Jan 15 20:27:55 UTC 2013


On Monday, January 14, 2013 5:17:12 pm Alfred Perlstein wrote:
> On 1/14/13 4:56 PM, John Baldwin wrote:
> > On Monday, January 14, 2013 4:42:16 pm Alfred Perlstein wrote:
> >> Wouldn't a comment over the code suffice?
> >>
> >> Something like your email as a header would actually work very nicely!
> >>
> >> I think just using decimal would be more confusing than explicitly
> >> calling it out like:
> >>
> >> /* begin enumerated (not bitmask) socket option specifiers */
> >> #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) */
> >> /* end enumerated socket option specifiers */
> > I have a patch I'll post next which will add a new option as '3'.  I think that
> > will make it more obvious and avoid having new options follow the old pattern.
> >
> Any objection to adding the contents of that email as a comment 
> section?  It really would help.

We don't generally do this for other enumerations like ioctl values as it
is generally obvious to the reader.  I think for UDP having one constant
called '1' should be obvious enough.  TCP might indeed warrany a comment
since it has several existing values that are powers of 2.  How about
this:

/*
 * User-settable options (used with setsockopt).  These are discrete
 * values and should not be masked together.  Many values appear to be
 * bitmasks for legacy reasons.
 */


-- 
John Baldwin


More information about the freebsd-net mailing list