• Martin KaFai Lau's avatar
    net: ipv6: Handle delivery_time in ipv6 defrag · 335c8cf3
    Martin KaFai Lau authored
    A latter patch will postpone the delivery_time clearing until the stack
    knows the skb is being delivered locally (i.e. calling
    skb_clear_delivery_time() at ip_local_deliver_finish() for IPv4
    and at ip6_input_finish() for IPv6).  That will allow other kernel
    forwarding path (e.g. ip[6]_forward) to keep the delivery_time also.
    
    A very similar IPv6 defrag codes have been duplicated in
    multiple places: regular IPv6, nf_conntrack, and 6lowpan.
    
    Unlike the IPv4 defrag which is done before ip_local_deliver_finish(),
    the regular IPv6 defrag is done after ip6_input_finish().
    Thus, no change should be needed in the regular IPv6 defrag
    logic because skb_clear_delivery_time() should have been called.
    
    6lowpan also does not need special handling on delivery_time
    because it is a non-inet packet_type.
    
    However, cf_conntrack has a case in NF_INET_PRE_ROUTING that needs
    to do the IPv6 defrag earlier.  Thus, it needs to save the
    mono_delivery_time bit in the inet_frag_queue which is similar
    to how it is handled in the previous patch for the IPv4 defrag.
    
    This patch chooses to do it consistently and stores the mono_delivery_time
    in the inet_frag_queue for all cases such that it will be easier
    for the future refactoring effort on the IPv6 reasm code.
    Signed-off-by: default avatarMartin KaFai Lau <kafai@fb.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    335c8cf3
reassembly.c 12.9 KB