1. 08 10月, 2015 2 次提交
  2. 18 9月, 2015 4 次提交
    • E
      netfilter: Add blank lines in callers of netfilter hooks · be10de0a
      Eric W. Biederman 提交于
      In code review it was noticed that I had failed to add some blank lines
      in places where they are customarily used.  Taking a second look at the
      code I have to agree blank lines would be nice so I have added them
      here.
      Reported-by: NNicolas Dichtel <nicolas.dichtel@6wind.com>
      Signed-off-by: N"Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      be10de0a
    • E
      netfilter: Pass net into okfn · 0c4b51f0
      Eric W. Biederman 提交于
      This is immediately motivated by the bridge code that chains functions that
      call into netfilter.  Without passing net into the okfns the bridge code would
      need to guess about the best expression for the network namespace to process
      packets in.
      
      As net is frequently one of the first things computed in continuation functions
      after netfilter has done it's job passing in the desired network namespace is in
      many cases a code simplification.
      
      To support this change the function dst_output_okfn is introduced to
      simplify passing dst_output as an okfn.  For the moment dst_output_okfn
      just silently drops the struct net.
      Signed-off-by: N"Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0c4b51f0
    • E
      netfilter: Pass struct net into the netfilter hooks · 29a26a56
      Eric W. Biederman 提交于
      Pass a network namespace parameter into the netfilter hooks.  At the
      call site of the netfilter hooks the path a packet is taking through
      the network stack is well known which allows the network namespace to
      be easily and reliabily.
      
      This allows the replacement of magic code like
      "dev_net(state->in?:state->out)" that appears at the start of most
      netfilter hooks with "state->net".
      
      In almost all cases the network namespace passed in is derived
      from the first network device passed in, guaranteeing those
      paths will not see any changes in practice.
      
      The exceptions are:
      xfrm/xfrm_output.c:xfrm_output_resume()         xs_net(skb_dst(skb)->xfrm)
      ipvs/ip_vs_xmit.c:ip_vs_nat_send_or_cont()      ip_vs_conn_net(cp)
      ipvs/ip_vs_xmit.c:ip_vs_send_or_cont()          ip_vs_conn_net(cp)
      ipv4/raw.c:raw_send_hdrinc()                    sock_net(sk)
      ipv6/ip6_output.c:ip6_xmit()			sock_net(sk)
      ipv6/ndisc.c:ndisc_send_skb()                   dev_net(skb->dev) not dev_net(dst->dev)
      ipv6/raw.c:raw6_send_hdrinc()                   sock_net(sk)
      br_netfilter_hooks.c:br_nf_pre_routing_finish() dev_net(skb->dev) before skb->dev is set to nf_bridge->physindev
      
      In all cases these exceptions seem to be a better expression for the
      network namespace the packet is being processed in then the historic
      "dev_net(in?in:out)".  I am documenting them in case something odd
      pops up and someone starts trying to track down what happened.
      Signed-off-by: N"Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      29a26a56
    • E
      net: Merge dst_output and dst_output_sk · 5a70649e
      Eric W. Biederman 提交于
      Add a sock paramter to dst_output making dst_output_sk superfluous.
      Add a skb->sk parameter to all of the callers of dst_output
      Have the callers of dst_output_sk call dst_output.
      Signed-off-by: N"Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5a70649e
  3. 08 4月, 2015 1 次提交
    • D
      netfilter: Pass socket pointer down through okfn(). · 7026b1dd
      David Miller 提交于
      On the output paths in particular, we have to sometimes deal with two
      socket contexts.  First, and usually skb->sk, is the local socket that
      generated the frame.
      
      And second, is potentially the socket used to control a tunneling
      socket, such as one the encapsulates using UDP.
      
      We do not want to disassociate skb->sk when encapsulating in order
      to fix this, because that would break socket memory accounting.
      
      The most extreme case where this can cause huge problems is an
      AF_PACKET socket transmitting over a vxlan device.  We hit code
      paths doing checks that assume they are dealing with an ipv4
      socket, but are actually operating upon the AF_PACKET one.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7026b1dd
  4. 09 2月, 2015 1 次提交
  5. 13 5月, 2014 1 次提交
  6. 16 4月, 2014 1 次提交
  7. 07 4月, 2014 1 次提交
  8. 26 8月, 2013 1 次提交
  9. 14 8月, 2013 2 次提交
  10. 02 7月, 2011 1 次提交
  11. 11 5月, 2011 1 次提交
    • S
      xfrm: Assign the inner mode output function to the dst entry · 43a4dea4
      Steffen Klassert 提交于
      As it is, we assign the outer modes output function to the dst entry
      when we create the xfrm bundle. This leads to two problems on interfamily
      scenarios. We might insert ipv4 packets into ip6_fragment when called
      from xfrm6_output. The system crashes if we try to fragment an ipv4
      packet with ip6_fragment. This issue was introduced with git commit
      ad0081e4 (ipv6: Fragment locally generated tunnel-mode IPSec6 packets
      as needed). The second issue is, that we might insert ipv4 packets in
      netfilter6 and vice versa on interfamily scenarios.
      
      With this patch we assign the inner mode output function to the dst entry
      when we create the xfrm bundle. So xfrm4_output/xfrm6_output from the inner
      mode is used and the right fragmentation and netfilter functions are called.
      We switch then to outer mode with the output_finish functions.
      Signed-off-by: NSteffen Klassert <steffen.klassert@secunet.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      43a4dea4
  12. 25 3月, 2010 1 次提交
  13. 03 6月, 2009 1 次提交
  14. 25 3月, 2008 1 次提交
  15. 29 1月, 2008 5 次提交
    • P
      [NETFILTER]: Introduce NF_INET_ hook values · 6e23ae2a
      Patrick McHardy 提交于
      The IPv4 and IPv6 hook values are identical, yet some code tries to figure
      out the "correct" value by looking at the address family. Introduce NF_INET_*
      values for both IPv4 and IPv6. The old values are kept in a #ifndef __KERNEL__
      section for userspace compatibility.
      Signed-off-by: NPatrick McHardy <kaber@trash.net>
      Acked-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6e23ae2a
    • H
      [IPSEC]: Remove nhoff from xfrm_input · 60d5fcfb
      Herbert Xu 提交于
      The nhoff field isn't actually necessary in xfrm_input.  For tunnel
      mode transforms we now throw away the output IP header so it makes no
      sense to fill in the nexthdr field.  For transport mode we can now let
      the function transport_finish do the setting and it knows where the
      nexthdr field is.
      
      The only other thing that needs the nexthdr field to be set is the
      header extraction code.  However, we can simply move the protocol
      extraction out of the generic header extraction.
      
      We want to minimise the amount of info we have to carry around between
      transforms as this simplifies the resumption process for async crypto.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      60d5fcfb
    • H
      [IPSEC]: Merge most of the output path · 862b82c6
      Herbert Xu 提交于
      As part of the work on asynchrnous cryptographic operations, we need
      to be able to resume from the spot where they occur.  As such, it
      helps if we isolate them to one spot.
      
      This patch moves most of the remaining family-specific processing into
      the common output code.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      862b82c6
    • H
      [IPV4]: Add ip_local_out · c439cb2e
      Herbert Xu 提交于
      Most callers of the LOCAL_OUT chain will set the IP packet length and
      header checksum before doing so.  They also share the same output
      function dst_output.
      
      This patch creates a new function called ip_local_out which does all
      of that and converts the appropriate users over to it.
      
      Apart from removing duplicate code, it will also help in merging the
      IPsec output path once the same thing is done for IPv6.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c439cb2e
    • H
      [IPSEC]: Separate inner/outer mode processing on output · 36cf9acf
      Herbert Xu 提交于
      With inter-family transforms the inner mode differs from the outer
      mode.  Attempting to handle both sides from the same function means
      that it needs to handle both IPv4 and IPv6 which creates duplication
      and confusion.
      
      This patch separates the two parts on the output path so that each
      function deals with one family only.
      
      In particular, the functions xfrm4_extract_output/xfrm6_extract_output
      moves the pertinent fields from the IPv4/IPv6 IP headers into a
      neutral format stored in skb->cb.  This is then used by the outer mode
      output functions to write the outer IP header.  In this way the output
      function no longer has to know about the inner address family.
      
      Since the extract functions are only called by tunnel modes (the only
      modes that can support inter-family transforms), I've also moved the
      xfrm*_tunnel_check_size calls into them.  This allows the correct ICMP
      message to be sent as opposed to now where you might call icmp_send
      with an IPv6 packet and vice versa.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      36cf9acf
  16. 18 10月, 2007 2 次提交
    • H
      [IPSEC]: Rename mode to outer_mode and add inner_mode · 13996378
      Herbert Xu 提交于
      This patch adds a new field to xfrm states called inner_mode.  The existing
      mode object is renamed to outer_mode.
      
      This is the first part of an attempt to fix inter-family transforms.  As it
      is we always use the outer family when determining which mode to use.  As a
      result we may end up shoving IPv4 packets into netfilter6 and vice versa.
      
      What we really want is to use the inner family for the first part of outbound
      processing and the outer family for the second part.  For inbound processing
      we'd use the opposite pairing.
      
      I've also added a check to prevent silly combinations such as transport mode
      with inter-family transforms.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      13996378
    • H
      [IPSEC]: Add missing BEET checks · 1bfcb10f
      Herbert Xu 提交于
      Currently BEET mode does not reinject the packet back into the stack
      like tunnel mode does.  Since BEET should behave just like tunnel mode
      this is incorrect.
      
      This patch fixes this by introducing a flags field to xfrm_mode that
      tells the IPsec code whether it should terminate and reinject the packet
      back into the stack.
      
      It then sets the flag for BEET and tunnel mode.
      
      I've also added a number of missing BEET checks elsewhere where we check
      whether a given mode is a tunnel or not.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1bfcb10f
  17. 16 10月, 2007 1 次提交
  18. 11 10月, 2007 2 次提交
  19. 26 4月, 2007 1 次提交
  20. 11 2月, 2007 1 次提交
  21. 23 9月, 2006 3 次提交
  22. 09 7月, 2006 1 次提交
  23. 23 6月, 2006 1 次提交
    • H
      [IPSEC]: Handle GSO packets · 09b8f7a9
      Herbert Xu 提交于
      This patch segments GSO packets received by the IPsec stack.  This can
      happen when a NIC driver injects GSO packets into the stack which are
      then forwarded to another host.
      
      The primary application of this is going to be Xen where its backend
      driver may inject GSO packets into dom0.
      
      Of course this also can be used by other virtualisation schemes such as
      VMWare or UML since the tap device could be modified to inject GSO packets
      received through splice.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      09b8f7a9
  24. 18 6月, 2006 1 次提交
  25. 30 4月, 2006 1 次提交
    • H
      [IPSEC]: Fix IP ID selection · a76e07ac
      Herbert Xu 提交于
      I was looking through the xfrm input/output code in order to abstract
      out the address family specific encapsulation/decapsulation code.  During
      that process I found this bug in the IP ID selection code in xfrm4_output.c.
      
      At that point dst is still the xfrm_dst for the current SA which
      represents an internal flow as far as the IPsec tunnel is concerned.
      Since the IP ID is going to sit on the outside of the encapsulated
      packet, we obviously want the external flow which is just dst->child.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a76e07ac
  26. 16 2月, 2006 1 次提交
    • P
      [XFRM]: Fix SNAT-related crash in xfrm4_output_finish · 48d5cad8
      Patrick McHardy 提交于
      When a packet matching an IPsec policy is SNATed so it doesn't match any
      policy anymore it looses its xfrm bundle, which makes xfrm4_output_finish
      crash because of a NULL pointer dereference.
      
      This patch directs these packets to the original output path instead. Since
      the packets have already passed the POST_ROUTING hook, but need to start at
      the beginning of the original output path which includes another
      POST_ROUTING invocation, a flag is added to the IPCB to indicate that the
      packet was rerouted and doesn't need to pass the POST_ROUTING hook again.
      Signed-off-by: NPatrick McHardy <kaber@trash.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      48d5cad8
  27. 08 1月, 2006 1 次提交