[ovs-dev] [PATCH 09/23] compat: Backport IPv4 reassembly.

Joe Stringer joestringer at nicira.com
Thu Dec 3 08:17:08 UTC 2015


On 25 November 2015 at 09:36, Pravin Shelar <pshelar at nicira.com> wrote:
> On Sun, Nov 8, 2015 at 1:29 AM, Joe Stringer <joestringer at nicira.com> wrote:
>> Backport IPv4 reassembly from the upstream commit caaecdd3d3f8 ("inet:
>> frags: remove INET_FRAG_EVICTED and use list_evictor for the test").
>>
>> This is necessary because kernels prior to upstream commit d6b915e29f4a
>> ("ip_fragment: don't forward defragmented DF packet") would not always
>> track the maximum received unit size during ip_defrag(). Without the
>> MRU, refragmentation cannot occur so reassembled packets are dropped.
>>
>> Signed-off-by: Joe Stringer <joestringer at nicira.com>
>> ---
>>  acinclude.m4                                  |   6 +
>>  datapath/compat.h                             |  15 +
>>  datapath/datapath.c                           |   9 +-
>>  datapath/linux/Modules.mk                     |   4 +
>>  datapath/linux/compat/include/net/inet_frag.h |  57 ++
>>  datapath/linux/compat/include/net/inetpeer.h  |  16 +
>>  datapath/linux/compat/include/net/ip.h        |  21 +
>>  datapath/linux/compat/include/net/vrf.h       |  26 +
>>  datapath/linux/compat/inet_fragment.c         | 557 +++++++++++++++++++
>>  datapath/linux/compat/ip_fragment.c           | 737 ++++++++++++++++++++++++++
>>  10 files changed, 1447 insertions(+), 1 deletion(-)
>>  create mode 100644 datapath/linux/compat/include/net/inetpeer.h
>>  create mode 100644 datapath/linux/compat/include/net/vrf.h
>>  create mode 100644 datapath/linux/compat/inet_fragment.c
>>  create mode 100644 datapath/linux/compat/ip_fragment.c
>>
>
> I would prefer to have ip-frag and ipv6-frag as separate modules if it
> does not complicate code alot. Have you considered it?

Update on this: short answer is it introduces a circular dependency on
rpl_pskb_expand_head(). I sent out a v2 with the other fixes I've
accumulated since this version.

As a side note of interest, some arcane magicks cause modules with
names like like "foo_bar" (note the underscore) defined in
datapath/Modules.mk to ignore the list of source files provided, and
only build a single source file with a name like "foo-bar.c". I
suspect it's related to the definitions of 'obj-m' and "foo_bar-y" in
datapath/linux/Kbuild.in, but this could only be verified by someone
more well-versed in the dark arts than I. The workaround is if you
want multiple source files in your module, don't place an
underscore/dash in the name.



More information about the dev mailing list