From: Daniel Borkmann <dborkman@redhat.com>
To: David Laight <David.Laight@ACULAB.COM>
Cc: "'Florian Westphal'" <fw@strlen.de>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>
Subject: Re: [PATCH -next v3 1/3] syncookies: avoid magic values and document which-bit-is-what-option
Date: Mon, 03 Nov 2014 16:27:55 +0100 [thread overview]
Message-ID: <54579EFB.2070705@redhat.com> (raw)
In-Reply-To: <063D6719AE5E284EB5DD2968C1650D6D1C9E44D6@AcuExch.aculab.com>
On 11/03/2014 03:41 PM, David Laight wrote:
...
>>>> +/* TCP Timestamp: 6 lowest bits of timestamp sent in the cookie SYN-ACK
>>>> + * stores TCP options:
>>>> + *
>>>> + * MSB LSB
>>>> + * | 31 ... 6 | 5 | 4 | 3 2 1 0 |
>>>> + * | Timestamp | ECN | SACK | WScale |
>>>> + *
>>>> + * When we receive a valid cookie-ACK, we look at the echoed tsval (if
>>>> + * any) to figure out which TCP options we should use for the rebuilt
>>>> + * connection.
>>>> + *
>>>> + * A WScale setting of '0xf' (which is an invalid scaling value)
>>>> + * means that original syn did not include the TCP window scaling option.
>>>> + */
>>>> +#define TS_OPT_WSCALE_MASK 0xf
>>>> +#define TS_OPT_SACK BIT(4)
>>>> +#define TS_OPT_ECN BIT(5)
>>>> +/* There is no TS_OPT_TIMESTAMP:
>>>> + * if ACK contains timestamp option, we already know it was
>>>> + * requested/supported by the syn/synack exchange.
>>>> + */
>>>> +#define TSBITS 6
>>>> +#define TSMASK (((__u32)1 << TSBITS) - 1)
>>>
>>> Personally I'd define all the values as hex constants instead of mixing
>>> and matching the defines.
>>>
>>> So probably just:
>>> #define TS_OPT_WSCALE_MASK 0x0f
>>> #define TS_OPT_SACK 0x10
>>> #define TS_OPT_ECN 0x20
>>> #define TSMASK 0x3f
>>
>> If you look at the above comment and then take a peek at the actual TS_OPT_*,
>> it is much easier to follow. Moreover, how is having TSMASK as 0x3f better?!
>> Currently, it is a constant calculated based upon TSBITS.
>
> TSMASK is also (TS_OPT_WSCALE_MASK | TS_OPT_SACK | TS_OPT_ECN) defining
> the values in hex makes this even more clear.
Right, that's your personal taste. ;) Besides, the definition of TSBITS/TSMASK
itself is not even altered here.
> Defining TSBITS from the mask would save the extra definition - which might
> be easier done by replacing the shifts with multiply/divide by (TSMASK + 1)
> (probably in a #define/inline function to make the code easier to read.
Sure, lets make it more complicated than it actually needs to be ... again,
I think the code is fine as is, sorry.
next prev parent reply other threads:[~2014-11-03 15:28 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-03 13:01 [PATCH -next v3 0/3] net: allow setting ecn via routing table Florian Westphal
2014-11-03 13:01 ` [PATCH -next v3 1/3] syncookies: avoid magic values and document which-bit-is-what-option Florian Westphal
2014-11-03 14:24 ` David Laight
2014-11-03 14:33 ` Daniel Borkmann
2014-11-03 14:41 ` David Laight
2014-11-03 15:27 ` Daniel Borkmann [this message]
2014-11-03 15:41 ` Eric Dumazet
2014-11-03 13:01 ` [PATCH -next v3 2/3] syncookies: split cookie_check_timestamp() into two functions Florian Westphal
2014-11-03 16:07 ` Eric Dumazet
2014-11-03 13:02 ` [PATCH -next v3 3/3] net: allow setting ecn via routing table Florian Westphal
2014-11-03 16:11 ` Eric Dumazet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54579EFB.2070705@redhat.com \
--to=dborkman@redhat.com \
--cc=David.Laight@ACULAB.COM \
--cc=fw@strlen.de \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.