• Amerigo Wang's avatar
    ipv6: unify conntrack reassembly expire code with standard one · b836c99f
    Amerigo Wang authored
    Two years ago, Shan Wei tried to fix this:
    http://patchwork.ozlabs.org/patch/43905/
    
    The problem is that RFC2460 requires an ICMP Time
    Exceeded -- Fragment Reassembly Time Exceeded message should be
    sent to the source of that fragment, if the defragmentation
    times out.
    
    "
       If insufficient fragments are received to complete reassembly of a
       packet within 60 seconds of the reception of the first-arriving
       fragment of that packet, reassembly of that packet must be
       abandoned and all the fragments that have been received for that
       packet must be discarded.  If the first fragment (i.e., the one
       with a Fragment Offset of zero) has been received, an ICMP Time
       Exceeded -- Fragment Reassembly Time Exceeded message should be
       sent to the source of that fragment.
    "
    
    As Herbert suggested, we could actually use the standard IPv6
    reassembly code which follows RFC2460.
    
    With this patch applied, I can see ICMP Time Exceeded sent
    from the receiver when the sender sent out 3/4 fragmented
    IPv6 UDP packet.
    
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: Michal Kubeček <mkubecek@suse.cz>
    Cc: David Miller <davem@davemloft.net>
    Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
    Cc: Patrick McHardy <kaber@trash.net>
    Cc: Pablo Neira Ayuso <pablo@netfilter.org>
    Cc: netfilter-devel@vger.kernel.org
    Signed-off-by: default avatarCong Wang <amwang@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b836c99f
reassembly.c 18.8 KB