linux/include/net
Eric W. Biederman 426b5303eb [NETNS]: Modify the neighbour table code so it handles multiple network namespaces
I'm actually surprised at how much was involved.  At first glance it
appears that the neighbour table data structures are already split by
network device so all that should be needed is to modify the user
interface commands to filter the set of neighbours by the network
namespace of their devices.

However a couple things turned up while I was reading through the
code.  The proxy neighbour table allows entries with no network
device, and the neighbour parms are per network device (except for the
defaults) so they now need a per network namespace default.

So I updated the two structures (which surprised me) with their very
own network namespace parameter.  Updated the relevant lookup and
destroy routines with a network namespace parameter and modified the
code that interacts with users to filter out neighbour table entries
for devices of other namespaces.

I'm a little concerned that we can modify and display the global table
configuration and from all network namespaces.  But this appears good
enough for now.

I keep thinking modifying the neighbour table to have per network
namespace instances of each table type would should be cleaner.  The
hash table is already dynamically sized so there are it is not a
limiter.  The default parameter would be straight forward to take care
of.  However when I look at the how the network table is built and
used I still find some assumptions that there is only a single
neighbour table for each type of table in the kernel.  The netlink
operations, neigh_seq_start, the non-core network users that call
neigh_lookup.  So while it might be doable it would require more
refactoring than my current approach of just doing a little extra
filtering in the code.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-01-28 15:00:03 -08:00
..
9p Use helpers to obtain task pid in printks 2007-10-19 11:53:43 -07:00
bluetooth [NET]: Remove FASTCALL macro 2008-01-28 14:57:23 -08:00
irda [NET] include/net/: Spelling fixes 2007-12-20 13:56:32 -08:00
iucv [AF_IUCV]: postpone receival of iucv-packets 2007-10-10 16:54:51 -07:00
netfilter [NETFILTER]: Introduce nf_inet_address 2008-01-28 14:59:07 -08:00
netns [IPV4]: Move the devinet pointers on the struct net 2008-01-28 14:58:11 -08:00
sctp [SCTP]: Implement ADD-IP special case processing for ABORT chunk 2008-01-28 14:59:24 -08:00
tc_act [PKT_SCHED]: Add stateless NAT 2007-10-10 16:53:11 -07:00
tipc [TIPC]: Optimize stream send routine to avoid fragmentation 2007-07-10 22:06:12 -07:00
act_api.h [NET_SCHED]: Kill CONFIG_NET_CLS_POLICE 2007-07-15 00:03:05 -07:00
addrconf.h [IPV4] include/net: Use ipv4_is_<type> 2008-01-28 14:58:14 -08:00
af_rxrpc.h [AF_RXRPC]: Add an interface to the AF_RXRPC module for the AFS filesystem to use 2007-04-26 15:50:17 -07:00
af_unix.h [AF_UNIX]: Remove unused declaration of sysctl_unix_max_dgram_qlen. 2008-01-28 14:57:13 -08:00
ah.h [IPSEC]: Get rid of ipv6_{auth,esp,comp}_hdr 2007-10-10 16:55:55 -07:00
arp.h [IPV4]: Pass the net pointer to the arp_req_set_proxy() 2008-01-28 14:58:09 -08:00
atmclip.h [ATM]: Annotations. 2006-12-02 21:22:55 -08:00
ax25.h [NET] include/net/: Spelling fixes 2007-12-20 13:56:32 -08:00
ax88796.h ax88796: add 93cx6 eeprom support 2007-10-10 16:53:56 -07:00
cfg80211.h cfg80211/nl80211: implement station attribute retrieval 2008-01-28 14:59:52 -08:00
checksum.h [NET]: Move netfilter checksum helpers to net/core/utils.c 2008-01-28 14:55:14 -08:00
cipso_ipv4.h [NetLabel]: consolidate the struct socket/sock handling to just struct sock 2007-06-08 13:33:09 -07:00
compat.h [NET]: Introduce SIOCGSTAMPNS ioctl to get timestamps with nanosec resolution 2007-04-25 22:24:04 -07:00
datalink.h
dn_dev.h
dn_fib.h [DECNet]: Use rtnl registration interface 2007-04-25 22:27:12 -07:00
dn_neigh.h
dn_nsp.h
dn_route.h [NET]: Wrap netdevice hardware header creation. 2007-10-10 16:52:50 -07:00
dn.h [DECNET]: Another unnecessary net/tcp.h inclusion in net/dn.h 2007-07-10 23:02:12 -07:00
dsfield.h [NET]: Constify include/net/dsfield.h 2008-01-28 14:55:58 -08:00
dst.h [IPSEC]: Add ICMP host relookup support 2008-01-28 14:57:23 -08:00
esp.h cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
fib_rules.h [IPV6]: Make fib6_rules_init to return an error code. 2008-01-28 14:56:46 -08:00
flow.h [IPV6] MIP6: Kill unnecessary ifdefs. 2007-07-10 22:15:41 -07:00
gen_stats.h
genetlink.h [GENETLINK]: Dynamic multicast groups. 2007-07-18 15:47:52 -07:00
icmp.h [IPV4]: Add ICMPMsgStats MIB (RFC 4293) 2007-10-10 16:51:28 -07:00
ieee80211_crypt.h [PATCH] Update my email address from jkmaline@cc.hut.fi to j@w1.fi 2007-04-28 11:01:01 -04:00
ieee80211_radiotap.h [MAC80211]: Add get_unaligned to ieee80211_get_radiotap_len 2007-10-10 16:47:40 -07:00
ieee80211.h ieee80211: Stop net_ratelimit/IEEE80211_DEBUG_DROP log pollution 2007-11-20 16:43:17 -05:00
ieee80211softmac_wx.h [PATCH] softmac: add SIOCSIWMLME 2006-04-24 16:15:58 -04:00
ieee80211softmac.h [IEEE80211]: Fix softmac lockdep reports. 2007-10-10 16:52:22 -07:00
if_inet6.h IPoIB: improve IPv4/IPv6 to IB mcast mapping functions 2008-01-25 14:15:37 -08:00
inet6_connection_sock.h [TCP]: Restore SKB socket owner setting in tcp_transmit_skb(). 2007-01-26 01:04:55 -08:00
inet6_hashtables.h [INET]: Use jhash + random secret for ehash. 2007-04-25 22:28:06 -07:00
inet_common.h [INET]: Remove leftover prototypes from include/net/inet_common.h 2007-11-12 21:02:51 -08:00
inet_connection_sock.h [TCP]: Restore SKB socket owner setting in tcp_transmit_skb(). 2007-01-26 01:04:55 -08:00
inet_ecn.h [INET]: Give outer DSCP directly to ip*_copy_dscp 2008-01-28 14:53:45 -08:00
inet_frag.h [INET]: Remove no longer needed ->equal callback 2007-10-17 19:47:56 -07:00
inet_hashtables.h [INET]: Uninline the __inet_lookup_established function. 2008-01-28 14:59:27 -08:00
inet_sock.h [UDP]: Make use of inet_iif() when doing socket lookups. 2007-10-25 18:54:46 -07:00
inet_timewait_sock.h [INET]: Uninline the inet_twsk_put function. 2008-01-28 14:59:28 -08:00
inetpeer.h [INET]: Use list_head-s in inetpeer.c 2007-11-12 21:27:28 -08:00
ip6_checksum.h [IPV6]: Dumb typo in generic csum_ipv6_magic() 2006-12-22 11:12:07 -08:00
ip6_fib.h [XFRM] IPv6: Fix dst/routing check at transformation. 2008-01-28 14:59:36 -08:00
ip6_route.h [IPV6]: Make ip6_route_init to return an error code. 2008-01-28 14:56:47 -08:00
ip6_tunnel.h [NET] include/net/: Spelling fixes 2007-12-20 13:56:32 -08:00
ip_fib.h [IPV4]: last default route is a fib table property 2008-01-28 14:57:01 -08:00
ip_vs.h [IPVS]: Move remaining sysctl handlers over to CTL_UNNUMBERED 2007-11-19 21:51:13 -08:00
ip.h [NET]: Remove unused "mibalign" argument for snmp_mib_init(). 2008-01-28 14:57:02 -08:00
ipcomp.h [IPSEC]: Get rid of ipv6_{auth,esp,comp}_hdr 2007-10-10 16:55:55 -07:00
ipconfig.h [NET]: ipconfig and nfsroot annotations 2006-12-02 21:21:09 -08:00
ipip.h [IPV4]: Add ip_local_out 2008-01-28 14:53:47 -08:00
ipv6.h [IPV6]: make the protocol initialization to return an error code 2008-01-28 14:57:13 -08:00
ipx.h [SK_BUFF]: Introduce skb_transport_header(skb) 2007-04-25 22:25:31 -07:00
iw_handler.h [NL80211]: add netlink interface to cfg80211 2007-10-10 16:52:14 -07:00
lapb.h
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h [NET]: Make socket creation namespace safe. 2007-10-10 16:49:07 -07:00
llc_if.h [LLC]: add multicast support for datagrams 2006-06-17 21:26:08 -07:00
llc_pdu.h [SK_BUFF]: Introduce skb_network_header() 2007-04-25 22:24:59 -07:00
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
llc.h
mac80211.h mac80211: support getting key sequence counters via cfg80211 2008-01-28 14:59:50 -08:00
mip6.h [IPV6] MIP6: Loadable module support for MIPv6. 2007-07-10 22:15:42 -07:00
ndisc.h [IPv6]: Export userland ND options through netlink (RDNSS support) 2007-10-10 21:22:05 -07:00
neighbour.h [NETNS]: Modify the neighbour table code so it handles multiple network namespaces 2008-01-28 15:00:03 -08:00
net_namespace.h [NETNS]: Add the netns_ipv4 struct 2008-01-28 14:58:08 -08:00
netdma.h Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
netevent.h [NET]: Remove unnecessary inclusion of dst.h 2008-01-28 14:53:38 -08:00
netlabel.h SELinux: restore proper NetLabel caching behavior 2007-08-02 11:52:21 -04:00
netlink.h [NETLINK]: Add NLA_PUT_BE16/nla_get_be16() 2008-01-28 14:58:53 -08:00
netrom.h [PATCH] mark struct file_operations const 1 2007-02-12 09:48:44 -08:00
nexthop.h [IPv4]: FIB configuration using struct fib_config 2006-09-22 14:55:04 -07:00
p8022.h
pkt_cls.h [NET]: netns compilation speedup 2008-01-28 14:55:51 -08:00
pkt_sched.h [NET]: Move hardware header operations out of netdevice. 2007-10-10 16:52:52 -07:00
protocol.h [IPV6]: make inet6_register_protosw to return an error code 2008-01-28 14:57:12 -08:00
psnap.h
raw.h [RAW]: Consolidate proc interface. 2008-01-28 14:54:32 -08:00
rawv6.h [IPv6] RAW: Compact the API for the kernel 2008-01-28 14:54:29 -08:00
red.h [NET_SCHED]: turn PSCHED_GET_TIME into inline function 2007-04-25 22:27:55 -07:00
request_sock.h [INET]: Fix potential kfree on vmalloc-ed area of request_sock_queue 2007-11-15 02:57:06 -08:00
rose.h [ROSE]: Fix rose.ko oops on unload 2007-10-07 23:44:17 -07:00
route.h [IPV4]: Add inet_dev_addr_type() 2008-01-28 14:55:56 -08:00
rtnetlink.h [NET]: Make the device list and device lookups per namespace. 2007-10-10 16:49:10 -07:00
sch_generic.h [NET]: Move Qdisc_class_ops and Qdisc_ops in appropriate sections. 2008-01-28 14:53:58 -08:00
scm.h pid namespaces: changes to show virtual ids to user 2007-10-19 11:53:40 -07:00
slhc_vj.h
snmp.h [XFRM]: Define packet dropping statistics. 2008-01-28 14:59:38 -08:00
sock.h [SOCK] Avoid integer divides where not necessary in include/net/sock.h 2008-01-28 14:59:59 -08:00
syncppp.h
tcp_states.h
tcp.h [TCP]: Convert several length variable to unsigned. 2008-01-28 14:59:56 -08:00
timewait_sock.h [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
transp_v6.h [IPV6]: make the protocol initialization to return an error code 2008-01-28 14:57:13 -08:00
udp.h [UDP]: Restore missing inDatagrams increments 2008-01-28 14:56:33 -08:00
udplite.h [UDP]: Restore missing inDatagrams increments 2008-01-28 14:56:33 -08:00
wext.h [NET]: Make the device list and device lookups per namespace. 2007-10-10 16:49:10 -07:00
wireless.h [WIRELESS] cfg80211: New wireless config infrastructure. 2007-04-25 22:29:41 -07:00
x25.h [X.25]: Adds /proc/sys/net/x25/x25_forward to control forwarding. 2007-02-08 13:34:36 -08:00
x25device.h [SK_BUFF]: Introduce skb_reset_mac_header(skb) 2007-04-25 22:24:32 -07:00
xfrm.h [XFRM]: RFC4303 compliant auditing 2008-01-28 15:00:01 -08:00