linux/net/ipv6
Arnaldo Carvalho de Melo ab1e0a13d7 [SOCK] proto: Add hashinfo member to struct proto
This way we can remove TCP and DCCP specific versions of

sk->sk_prot->get_port: both v4 and v6 use inet_csk_get_port
sk->sk_prot->hash:     inet_hash is directly used, only v6 need
                       a specific version to deal with mapped sockets
sk->sk_prot->unhash:   both v4 and v6 use inet_hash directly

struct inet_connection_sock_af_ops also gets a new member, bind_conflict, so
that inet_csk_get_port can find the per family routine.

Now only the lookup routines receive as a parameter a struct inet_hashtable.

With this we further reuse code, reducing the difference among INET transport
protocols.

Eventually work has to be done on UDP and SCTP to make them share this
infrastructure and get as a bonus inet_diag interfaces so that iproute can be
used with these protocols.

net-2.6/net/ipv4/inet_hashtables.c:
  struct proto			     |   +8
  struct inet_connection_sock_af_ops |   +8
 2 structs changed
  __inet_hash_nolisten               |  +18
  __inet_hash                        | -210
  inet_put_port                      |   +8
  inet_bind_bucket_create            |   +1
  __inet_hash_connect                |   -8
 5 functions changed, 27 bytes added, 218 bytes removed, diff: -191

net-2.6/net/core/sock.c:
  proto_seq_show                     |   +3
 1 function changed, 3 bytes added, diff: +3

net-2.6/net/ipv4/inet_connection_sock.c:
  inet_csk_get_port                  |  +15
 1 function changed, 15 bytes added, diff: +15

net-2.6/net/ipv4/tcp.c:
  tcp_set_state                      |   -7
 1 function changed, 7 bytes removed, diff: -7

net-2.6/net/ipv4/tcp_ipv4.c:
  tcp_v4_get_port                    |  -31
  tcp_v4_hash                        |  -48
  tcp_v4_destroy_sock                |   -7
  tcp_v4_syn_recv_sock               |   -2
  tcp_unhash                         | -179
 5 functions changed, 267 bytes removed, diff: -267

net-2.6/net/ipv6/inet6_hashtables.c:
  __inet6_hash |   +8
 1 function changed, 8 bytes added, diff: +8

net-2.6/net/ipv4/inet_hashtables.c:
  inet_unhash                        | +190
  inet_hash                          | +242
 2 functions changed, 432 bytes added, diff: +432

vmlinux:
 16 functions changed, 485 bytes added, 492 bytes removed, diff: -7

/home/acme/git/net-2.6/net/ipv6/tcp_ipv6.c:
  tcp_v6_get_port                    |  -31
  tcp_v6_hash                        |   -7
  tcp_v6_syn_recv_sock               |   -9
 3 functions changed, 47 bytes removed, diff: -47

/home/acme/git/net-2.6/net/dccp/proto.c:
  dccp_destroy_sock                  |   -7
  dccp_unhash                        | -179
  dccp_hash                          |  -49
  dccp_set_state                     |   -7
  dccp_done                          |   +1
 5 functions changed, 1 bytes added, 242 bytes removed, diff: -241

/home/acme/git/net-2.6/net/dccp/ipv4.c:
  dccp_v4_get_port                   |  -31
  dccp_v4_request_recv_sock          |   -2
 2 functions changed, 33 bytes removed, diff: -33

/home/acme/git/net-2.6/net/dccp/ipv6.c:
  dccp_v6_get_port                   |  -31
  dccp_v6_hash                       |   -7
  dccp_v6_request_recv_sock          |   +5
 3 functions changed, 5 bytes added, 38 bytes removed, diff: -33

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-03 04:28:52 -08:00
..
netfilter [NETFILTER]: {ip,ip6}_queue: fix build error 2008-01-31 19:28:14 -08:00
addrconf_core.c [IPV6]: ipv6_addr_type() doesn't know about RFC4193 addresses. 2007-07-31 02:28:21 -07:00
addrconf.c [IPV6] ADDRCONF: Sparse: Make inet6_dump_addr() code paths more straight-forward. 2008-01-28 15:10:28 -08:00
addrlabel.c [IPV6] ADDRLABEL: Fix double free on label deletion. 2008-01-28 15:46:02 -08:00
af_inet6.c [NETNS][FRAGS]: Move ctl tables around. 2008-01-28 15:10:34 -08:00
ah6.c [XFRM]: constify 'struct xfrm_type' 2008-01-31 19:27:20 -08:00
anycast.c [NETNS][IPV6]: inet6_addr - check ipv6 address per namespace 2008-01-28 15:01:44 -08:00
datagram.c [NETNS][IPV6]: inet6_addr - check ipv6 address per namespace 2008-01-28 15:01:44 -08:00
esp6.c [XFRM]: constify 'struct xfrm_type' 2008-01-31 19:27:20 -08:00
exthdrs_core.c [NET] IPV6: Fix whitespace errors. 2007-02-10 23:19:42 -08:00
exthdrs.c [NETNS][IPV6]: inet6_addr - make ipv6_chk_home_addr namespace aware 2008-01-28 15:01:46 -08:00
fib6_rules.c [NETNS]: FIB rules API cleanup. 2008-01-28 15:08:13 -08:00
icmp.c [NETNS][IPV6]: inet6_addr - check ipv6 address per namespace 2008-01-28 15:01:44 -08:00
inet6_connection_sock.c [IPV6] __inet6_csk_dst_store(): fix check-after-use 2007-10-15 12:26:32 -07:00
inet6_hashtables.c [SOCK] proto: Add hashinfo member to struct proto 2008-02-03 04:28:52 -08:00
ip6_fib.c [NETNS]: Add netns to nl_info structure. 2008-01-28 15:01:29 -08:00
ip6_flowlabel.c [NET]: Add some acquires/releases sparse annotations. 2008-01-28 15:00:31 -08:00
ip6_input.c [IPv6] RAW: Compact the API for the kernel 2008-01-28 14:54:29 -08:00
ip6_output.c [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
ip6_tunnel.c [NETNS]: Add namespace parameter to ip_route_output_key. 2008-01-28 15:11:07 -08:00
ipcomp6.c [XFRM]: constify 'struct xfrm_type' 2008-01-31 19:27:20 -08:00
ipv6_sockglue.c [NET]: prot_inuse cleanups and optimizations 2008-01-28 15:00:36 -08:00
Kconfig [IPSEC]: Use crypto_aead and authenc in ESP 2008-01-31 19:27:02 -08:00
Makefile [IPV6]: Make the ipv6/sysctl_net_ipv6.c compilation cleaner 2008-01-28 14:56:29 -08:00
mcast.c [NET]: Add some acquires/releases sparse annotations. 2008-01-28 15:00:31 -08:00
mip6.c [XFRM]: constify 'struct xfrm_type' 2008-01-31 19:27:20 -08:00
ndisc.c [IPV6] NDISC: Sparse: Use different variable name for local use. 2008-01-28 15:10:28 -08:00
netfilter.c [NETFILTER]: constify nf_afinfo 2008-01-28 14:59:05 -08:00
proc.c [NETNS][FRAGS]: Make the mem counter per-namespace. 2008-01-28 15:10:36 -08:00
protocol.c [IPV6]: Decentralize EXPORT_SYMBOLs. 2007-04-25 22:23:36 -07:00
raw.c [RAW]: Wrong content of the /proc/net/raw6. 2008-01-31 19:27:26 -08:00
reassembly.c [NETNS][FRAGS]: Make the pernet subsystem for fragments. 2008-01-28 15:10:40 -08:00
route.c [IPV6]: Update MSS even if MTU is unchanged. 2008-01-31 19:28:21 -08:00
sit.c [NETNS]: Add namespace parameter to ip_route_output_key. 2008-01-28 15:11:07 -08:00
sysctl_net_ipv6.c [NETNS][FRAGS]: Move ctl tables around. 2008-01-28 15:10:34 -08:00
tcp_ipv6.c [SOCK] proto: Add hashinfo member to struct proto 2008-02-03 04:28:52 -08:00
tunnel6.c [IPV6]: Replace sk_buff ** with sk_buff * in input handlers 2007-10-15 12:50:28 -07:00
udp_impl.h [IPV6] UDPLITE: Sparse: Declare non-static symbols in header. 2008-01-28 15:10:26 -08:00
udp.c [NETNS]: Udp sockets per-net lookup. 2008-01-31 19:28:21 -08:00
udplite.c [IPV6] UDP,UDPLITE: Sparse: {__udp6_lib,udp,udplite}_err() are of void. 2008-01-28 15:10:25 -08:00
xfrm6_input.c [IPSEC]: Fix transport-mode async resume on intput without netfilter 2008-01-28 15:00:10 -08:00
xfrm6_mode_beet.c [IPSEC]: Separate inner/outer mode processing on input 2008-01-28 14:53:46 -08:00
xfrm6_mode_ro.c [IPSEC]: Make x->lastused an unsigned long 2008-01-28 14:53:52 -08:00
xfrm6_mode_transport.c [IPSEC]: Use IPv6 calling convention as the convention for x->mode->output 2007-10-10 16:55:54 -07:00
xfrm6_mode_tunnel.c [IPSEC]: Rename tunnel-mode functions to avoid collisions with tunnels 2008-01-28 14:59:18 -08:00
xfrm6_output.c [NETFILTER]: Introduce NF_INET_ hook values 2008-01-28 14:53:55 -08:00
xfrm6_policy.c [NET]: should explicitely initialize atomic_t field in struct dst_ops 2008-01-31 19:27:23 -08:00
xfrm6_state.c [IPV6]: Make xfrm6_init to return an error code. 2008-01-28 14:56:45 -08:00
xfrm6_tunnel.c [XFRM]: constify 'struct xfrm_type' 2008-01-31 19:27:20 -08:00