[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