Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next
authorDavid S. Miller <davem@davemloft.net>
Mon, 24 Nov 2014 21:00:58 +0000 (16:00 -0500)
committerDavid S. Miller <davem@davemloft.net>
Mon, 24 Nov 2014 21:00:58 +0000 (16:00 -0500)
Pablo Neira Ayuso says:

====================
netfilter/ipvs updates for net-next

The following patchset contains Netfilter updates for your net-next
tree, this includes the NAT redirection support for nf_tables, the
cgroup support for nft meta and conntrack zone support for the connlimit
match. Coming after those, a bunch of sparse warning fixes, missing
netns bits and cleanups. More specifically, they are:

1) Prepare IPv4 and IPv6 NAT redirect code to use it from nf_tables,
   patches from Arturo Borrero.

2) Introduce the nf_tables redir expression, from Arturo Borrero.

3) Remove an unnecessary assignment in ip_vs_xmit/__ip_vs_get_out_rt().
   Patch from Alex Gartrell.

4) Add nft_log_dereference() macro to the nf_log infrastructure, patch
   from Marcelo Leitner.

5) Add some extra validation when registering logger families, also
   from Marcelo.

6) Some spelling cleanups from stephen hemminger.

7) Fix sparse warning in nf_logger_find_get().

8) Add cgroup support to nf_tables meta, patch from Ana Rey.

9) A Kconfig fix for the new redir expression and fix sparse warnings in
   the new redir expression.

10) Fix several sparse warnings in the netfilter tree, from
    Florian Westphal.

11) Reduce verbosity when OOM in nfnetlink_log. User can basically do
    nothing when this situation occurs.

12) Add conntrack zone support to xt_connlimit, again from Florian.

13) Add netnamespace support to the h323 conntrack helper, contributed
    by Vasily Averin.

14) Remove unnecessary nul-pointer checks before free_percpu() and
    module_put(), from Markus Elfring.

15) Use pr_fmt in nfnetlink_log, again patch from Marcelo Leitner.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
1  2 
net/bridge/br_netfilter.c
net/ipv4/netfilter/nf_reject_ipv4.c
net/ipv6/netfilter/nf_reject_ipv6.c
net/netfilter/ipvs/ip_vs_xmit.c
net/netfilter/nf_tables_api.c
net/netfilter/nfnetlink_log.c

Simple merge
index 1baaa83dfe5ce63b8ed7cb8fb6e9e3798671e4de,cdcb9a5d67866fad0c483590ed520bbf8544f82d..536da7bc598ae9321224bb16c8d800571a163153
  #include <net/tcp.h>
  #include <net/route.h>
  #include <net/dst.h>
+ #include <net/netfilter/ipv4/nf_reject.h>
  #include <linux/netfilter_ipv4.h>
 +#include <net/netfilter/ipv4/nf_reject.h>
  
 -/* Send RST reply */
 -void nf_send_reset(struct sk_buff *oldskb, int hook)
 +const struct tcphdr *nf_reject_ip_tcphdr_get(struct sk_buff *oldskb,
 +                                           struct tcphdr *_oth, int hook)
  {
 -      struct sk_buff *nskb;
 -      const struct iphdr *oiph;
 -      struct iphdr *niph;
        const struct tcphdr *oth;
 -      struct tcphdr _otcph, *tcph;
  
        /* IP header checks: fragment. */
        if (ip_hdr(oldskb)->frag_off & htons(IP_OFFSET))
index 015eb8a80766f477ed797d496762f4fb2e6f7661,87576ff15e1bc808def7368ef364661ca6f7c966..d05b36440e8be341e3b22cc172acc05962c8a37a
  #include <net/ip6_route.h>
  #include <net/ip6_fib.h>
  #include <net/ip6_checksum.h>
+ #include <net/netfilter/ipv6/nf_reject.h>
  #include <linux/netfilter_ipv6.h>
 +#include <net/netfilter/ipv6/nf_reject.h>
  
 -void nf_send_reset6(struct net *net, struct sk_buff *oldskb, int hook)
 +const struct tcphdr *nf_reject_ip6_tcphdr_get(struct sk_buff *oldskb,
 +                                            struct tcphdr *otcph,
 +                                            unsigned int *otcplen, int hook)
  {
 -      struct sk_buff *nskb;
 -      struct tcphdr otcph, *tcph;
 -      unsigned int otcplen, hh_len;
 -      int tcphoff, needs_ack;
        const struct ipv6hdr *oip6h = ipv6_hdr(oldskb);
 -      struct ipv6hdr *ip6h;
 -#define DEFAULT_TOS_VALUE     0x0U
 -      const __u8 tclass = DEFAULT_TOS_VALUE;
 -      struct dst_entry *dst = NULL;
        u8 proto;
        __be16 frag_off;
 -      struct flowi6 fl6;
 -
 -      if ((!(ipv6_addr_type(&oip6h->saddr) & IPV6_ADDR_UNICAST)) ||
 -          (!(ipv6_addr_type(&oip6h->daddr) & IPV6_ADDR_UNICAST))) {
 -              pr_debug("addr is not unicast.\n");
 -              return;
 -      }
 +      int tcphoff;
  
        proto = oip6h->nexthdr;
 -      tcphoff = ipv6_skip_exthdr(oldskb, ((u8*)(oip6h+1) - oldskb->data), &proto, &frag_off);
 +      tcphoff = ipv6_skip_exthdr(oldskb, ((u8*)(oip6h+1) - oldskb->data),
 +                                 &proto, &frag_off);
  
        if ((tcphoff < 0) || (tcphoff > oldskb->len)) {
                pr_debug("Cannot get TCP header.\n");
Simple merge
Simple merge
Simple merge