linux-stable/net/core
Tom Herbert 4465b46900 ipv4: Allow configuring subnets as local addresses
This patch allows a host to be configured to respond to any address in
a specified range as if it were local, without actually needing to
configure the address on an interface.  This is done through routing
table configuration.  For instance, to configure a host to respond
to any address in 10.1/16 received on eth0 as a local address we can do:

ip rule add from all iif eth0 lookup 200
ip route add local 10.1/16 dev lo proto kernel scope host src 127.0.0.1 table 200

This host is now reachable by any 10.1/16 address (route lookup on
input for packets received on eth0 can find the route).  On output, the
rule will not be matched so that this host can still send packets to
10.1/16 (not sent on loopback).  Presumably, external routing can be
configured to make sense out of this.

To make this work, we needed to modify the logic in finding the
interface which is assigned a given source address for output
(dev_ip_find).  We perform a normal fib_lookup instead of just a
lookup on the local table, and in the lookup we ignore the input
interface for matching.

This patch is useful to implement IP-anycast for subnets of virtual
addresses.

Signed-off-by: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-09-28 23:38:15 -07:00
..
datagram.c net: poll() optimizations 2010-09-06 18:48:45 -07:00
dev.c net: Allow changing number of RX queues after device allocation 2010-09-27 22:09:49 -07:00
dev_addr_lists.c net: include linux/proc_fs.h in dev_addr_lists.c 2010-04-07 16:46:36 -07:00
drop_monitor.c drop_monitor: use genl_register_family_with_ops() 2010-07-26 20:59:42 -07:00
dst.c __dst_free(): put EXPORT_SYMBOLS after the fct 2010-07-20 13:28:03 -07:00
ethtool.c ethtool: Fix build due to lack of ethtool.h include. 2010-09-21 16:12:11 -07:00
fib_rules.c ipv4: Allow configuring subnets as local addresses 2010-09-28 23:38:15 -07:00
filter.c net: sk_{detach|attach}_filter() rcu fixes 2010-09-27 21:30:44 -07:00
flow.c net: return operator cleanup 2010-09-23 14:33:39 -07:00
gen_estimator.c pkt_sched: remov unnecessary bh_disable 2010-09-10 12:47:59 -07:00
gen_stats.c net/core: EXPORT_SYMBOL cleanups 2010-07-12 12:57:55 -07:00
iovec.c net/core: remove address space warnings on verify_iovec() 2010-09-09 15:02:38 -07:00
kmap_skb.h
link_watch.c net/core: EXPORT_SYMBOL cleanups 2010-07-12 12:57:55 -07:00
Makefile net: support time stamping in phy devices. 2010-07-18 19:15:26 -07:00
neighbour.c net: return operator cleanup 2010-09-23 14:33:39 -07:00
net-sysfs.c net: Allow changing number of RX queues after device allocation 2010-09-27 22:09:49 -07:00
net-sysfs.h net: Allow changing number of RX queues after device allocation 2010-09-27 22:09:49 -07:00
net-traces.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
net_namespace.c net: disallow to use net_assign_generic externally 2010-04-27 15:49:02 -07:00
netevent.c net/core: EXPORT_SYMBOL cleanups 2010-07-12 12:57:55 -07:00
netpoll.c Revert "net: remove zap_completion_queue" 2010-08-03 00:24:04 -07:00
pktgen.c net: core: use kernel's converter from hex to bin 2010-09-21 18:04:45 -07:00
request_sock.c
rtnetlink.c net: copy_rtnl_link_stats64() simplification 2010-08-23 20:43:16 -07:00
scm.c net/core: EXPORT_SYMBOL cleanups 2010-07-12 12:57:55 -07:00
skbuff.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-09-09 22:27:33 -07:00
sock.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-09-27 01:03:03 -07:00
stream.c net/core: EXPORT_SYMBOL cleanups 2010-07-12 12:57:55 -07:00
sysctl_net_core.c net: Consistent skb timestamping 2010-05-15 23:57:10 -07:00
timestamping.c net: support time stamping in phy devices. 2010-07-18 19:15:26 -07:00
user_dma.c
utils.c net: return operator cleanup 2010-09-23 14:33:39 -07:00