This series gets rid of the remaining indirect calls in the conntrack packet
path (except the conntrack entry points themselves).

To do this, the last remaining modular l4 tracker (GRE) is made built-in.
The second upside is that this allows to remove all the 'dynamic registration'
infrastructure.  While at it, this also moves the l4 sysctl handling into
a single location.

The nat core still contains several indirect calls, those are not addressed
here.

Before this series:
  text     data     bss     dec     hex filename
  6281     1732       4    8017    1f51 nf_conntrack_proto_gre.ko
108356    20613     236  129205   1f8b5 nf_conntrack.ko

After:
294864  net/netfilter/nf_conntrack.ko
  text     data     bss     dec     hex filename
106979    19557     240  126776   1ef38 nf_conntrack.ko

So even with PROTO_GRE=y, total size is reduced.

Florian Westphal (16):
      netfilter: conntrack: handle builtin l4proto packet functions via direct 
calls
      netfilter: conntrack: handle icmp pkt_to_tuple helper via direct calls
      netfilter: conntrack: gre: convert rwlock to rcu
      netfilter: conntrack: gre: switch module to be built-in
      netfilter: conntrack: remove net_id
      netfilter: conntrack: remove pkt_to_tuple callback
      netfilter: conntrack: remove invert_tuple callback
      netfilter: conntrack: remove module owner field
      netfilter: conntrack: remove remaining l4proto indirect packet calls
      netfilter: conntrack: remove pernet l4 proto register interface
      netfilter: conntrack: avoid unneeded nf_conntrack_l4proto lookups
      netfilter: conntrack: unify sysctl handling
      netfilter: conntrack: remove sysctl registration helpers
      netfilter: conntrack: remove l4proto init and get_net callbacks
      netfilter: conntrack: remove l4proto destroy hook
      netfilter: conntrack: remove nf_ct_l4proto_find_get

 include/linux/netfilter/nf_conntrack_proto_gre.h |   17 
 include/net/netfilter/ipv4/nf_conntrack_ipv4.h   |    3 
 include/net/netfilter/nf_conntrack.h             |    2 
 include/net/netfilter/nf_conntrack_core.h        |    5 
 include/net/netfilter/nf_conntrack_l4proto.h     |  126 ++++---
 include/net/netns/conntrack.h                    |   32 -
 net/ipv4/netfilter/nf_nat_l3proto_ipv4.c         |    2 
 net/ipv6/netfilter/nf_nat_l3proto_ipv6.c         |    2 
 net/netfilter/Kconfig                            |    2 
 net/netfilter/Makefile                           |    3 
 net/netfilter/nf_conntrack_core.c                |  170 +++++----
 net/netfilter/nf_conntrack_expect.c              |    2 
 net/netfilter/nf_conntrack_netlink.c             |   14 
 net/netfilter/nf_conntrack_pptp.c                |    2 
 net/netfilter/nf_conntrack_proto.c               |  406 +++--------------------
 net/netfilter/nf_conntrack_proto_dccp.c          |  136 +------
 net/netfilter/nf_conntrack_proto_generic.c       |   87 ----
 net/netfilter/nf_conntrack_proto_gre.c           |  208 ++---------
 net/netfilter/nf_conntrack_proto_icmp.c          |   69 ---
 net/netfilter/nf_conntrack_proto_icmpv6.c        |   71 ----
 net/netfilter/nf_conntrack_proto_sctp.c          |  130 -------
 net/netfilter/nf_conntrack_proto_tcp.c           |  162 ---------
 net/netfilter/nf_conntrack_proto_udp.c           |   82 ----
 net/netfilter/nf_conntrack_standalone.c          |  397 +++++++++++++++++++++-
 net/netfilter/nf_flow_table_core.c               |    2 
 net/netfilter/nf_nat_core.c                      |   12 
 net/netfilter/nfnetlink_cttimeout.c              |   19 -
 net/netfilter/nft_ct.c                           |    4 
 net/netfilter/xt_CT.c                            |    2 
 net/openvswitch/conntrack.c                      |    2 
 30 files changed, 808 insertions(+), 1363 deletions(-)

Reply via email to