lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CALoOobMSXp4x_+En2gyHmpXcxq=sECQvMZN1LX_j3Yve7Ha6Aw@mail.gmail.com>
Date:	Tue, 6 Mar 2012 16:14:09 -0800
From:	Paul Pluzhnikov <ppluzhnikov@...gle.com>
To:	Jiri Kosina <jkosina@...e.cz>
Cc:	netdev@...r.kernel.org
Subject: Re: [PATCH torvalds/linux.git] Make linux/tcp.h C++ friendly (trivial)

Ping?

I am attaching the patch again so it doesn't get mangled by quoting
and is easier to apply.

Thanks,

On Fri, Feb 3, 2012 at 1:33 PM, Jiri Kosina <jkosina@...e.cz> wrote:
> On Thu, 29 Dec 2011, Paul Pluzhnikov wrote:
>
>> Greetings,
>>
>> Using linux/tcp.h from C++ results in:
>>
>> cat t.cc
>>
>> #include <linux/tcp.h>
>> int main() { }
>>
>> g++ -c t.cc
>>
>> In file included from t.cc:1:
>> /usr/include/linux/tcp.h:72: error: '__u32 __fswab32(__u32)' cannot appear in a constant-expression
>> /usr/include/linux/tcp.h:72: error: a function call cannot appear in a constant-expression
>> ...
>
> Paul,
>
> thanks for the patch. I'd however prefer this to go through netdev, not
> feeling like this is fully appropriate for trivial tree.
>
> Adding netdev to CC and keeping the changelog and patch below for
> reference.
>
>>
>> Attached trivial patch fixes this problem.
>>
>> Tested:
>> - the t.cc above compiles with g++ and
>> - the following program generates the same output before/after
>>   the patch:
>>
>> #include <linux/tcp.h>
>> #include <stdio.h>
>>
>> int main ()
>> {
>> #define P(a) printf("%s: %08x\n", #a, (int)a)
>>   P(TCP_FLAG_CWR);
>>   P(TCP_FLAG_ECE);
>>   P(TCP_FLAG_URG);
>>   P(TCP_FLAG_ACK);
>>   P(TCP_FLAG_PSH);
>>   P(TCP_FLAG_RST);
>>   P(TCP_FLAG_SYN);
>>   P(TCP_FLAG_FIN);
>>   P(TCP_RESERVED_BITS);
>>   P(TCP_DATA_OFFSET);
>> #undef P
>>   return 0;
>> }
>>
>> Signed-off-by: Paul Pluzhnikov <ppluzhnikov@...gle.com>
>>
>>
>> Thanks,
>>
>> P.S. Google has blanket copyright assignment to FSF.
>> --
>> Paul Pluzhnikov
>>
>>
>> diff --git a/include/linux/tcp.h b/include/linux/tcp.h
>> index 7f59ee9..63334f7 100644
>> --- a/include/linux/tcp.h
>> +++ b/include/linux/tcp.h
>> @@ -69,16 +69,16 @@ union tcp_word_hdr {
>>  #define tcp_flag_word(tp) ( ((union tcp_word_hdr *)(tp))->words [3])
>>
>>  enum {
>> -     TCP_FLAG_CWR = __cpu_to_be32(0x00800000),
>> -     TCP_FLAG_ECE = __cpu_to_be32(0x00400000),
>> -     TCP_FLAG_URG = __cpu_to_be32(0x00200000),
>> -     TCP_FLAG_ACK = __cpu_to_be32(0x00100000),
>> -     TCP_FLAG_PSH = __cpu_to_be32(0x00080000),
>> -     TCP_FLAG_RST = __cpu_to_be32(0x00040000),
>> -     TCP_FLAG_SYN = __cpu_to_be32(0x00020000),
>> -     TCP_FLAG_FIN = __cpu_to_be32(0x00010000),
>> -     TCP_RESERVED_BITS = __cpu_to_be32(0x0F000000),
>> -     TCP_DATA_OFFSET = __cpu_to_be32(0xF0000000)
>> +     TCP_FLAG_CWR = __constant_cpu_to_be32(0x00800000),
>> +     TCP_FLAG_ECE = __constant_cpu_to_be32(0x00400000),
>> +     TCP_FLAG_URG = __constant_cpu_to_be32(0x00200000),
>> +     TCP_FLAG_ACK = __constant_cpu_to_be32(0x00100000),
>> +     TCP_FLAG_PSH = __constant_cpu_to_be32(0x00080000),
>> +     TCP_FLAG_RST = __constant_cpu_to_be32(0x00040000),
>> +     TCP_FLAG_SYN = __constant_cpu_to_be32(0x00020000),
>> +     TCP_FLAG_FIN = __constant_cpu_to_be32(0x00010000),
>> +     TCP_RESERVED_BITS = __constant_cpu_to_be32(0x0F000000),
>> +     TCP_DATA_OFFSET = __constant_cpu_to_be32(0xF0000000)
>>  };
>>
>>  /*
>>
>
> --
> Jiri Kosina
> SUSE Labs



-- 
Paul Pluzhnikov

View attachment "linux-tcp_h-patch-20111229.txt" of type "text/plain" (1255 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ