David S. Miller
6431cbc25f
inet: Create a mechanism for upward inetpeer propagation into routes.
...
If we didn't have a routing cache, we would not be able to properly
propagate certain kinds of dynamic path attributes, for example
PMTU information and redirects.
The reason is that if we didn't have a routing cache, then there would
be no way to lookup all of the active cached routes hanging off of
sockets, tunnels, IPSEC bundles, etc.
Consider the case where we created a cached route, but no inetpeer
entry existed and also we were not asked to pre-COW the route metrics
and therefore did not force the creation a new inetpeer entry.
If we later get a PMTU message, or a redirect, and store this
information in a new inetpeer entry, there is no way to teach that
cached route about the newly existing inetpeer entry.
The facilities implemented here handle this problem.
First we create a generation ID. When we create a cached route of any
kind, we remember the generation ID at the time of attachment. Any
time we force-create an inetpeer entry in response to new path
information, we bump that generation ID.
The dst_ops->check() callback is where the knowledge of this event
is propagated. If the global generation ID does not equal the one
stored in the cached route, and the cached route has not attached
to an inetpeer yet, we look it up and attach if one is found. Now
that we've updated the cached route's information, we update the
route's generation ID too.
This clears the way for implementing PMTU and redirects directly in
the inetpeer cache. There is absolutely no need to consult cached
route information in order to maintain this information.
At this point nothing bumps the inetpeer genids, that comes in the
later changes which handle PMTUs and redirects using inetpeers.
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-02-10 13:33:41 -08:00
..
9p
9p: Add datasync to client side TFSYNC/RFSYNC for dotl
2010-10-28 09:08:49 -05:00
bluetooth
Bluetooth: Fix race condition with conn->sec_level
2011-01-19 14:43:11 -02:00
caif
include/net/caif/cfctrl.h: Remove unnecessary semicolons
2010-11-15 11:07:16 -08:00
irda
net: return operator cleanup
2010-09-23 14:33:39 -07:00
iucv
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
netfilter
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
2011-02-04 14:28:58 -08:00
netns
netfilter: nf_conntrack_tstamp: add flow-based timestamp extension
2011-01-19 16:00:07 +01:00
phonet
phonet: some signedness bugs
2011-01-10 13:33:17 -08:00
sctp
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
2011-01-19 20:25:45 -08:00
tc_act
net/sched: add ACT_CSUM action to update packets checksums
2010-08-20 01:42:59 -07:00
act_api.h
pkt_sched: gen_kill_estimator() rcu fixes
2010-06-11 18:37:08 -07:00
addrconf.h
net: kill unused macros from head file
2010-12-02 13:27:33 -08:00
af_ieee802154.h
af_ieee802154: add support for WANT_ACK socket option
2009-08-12 21:54:50 -07:00
af_rxrpc.h
af_unix.h
af_unix: limit recursion level
2010-11-29 09:45:15 -08:00
ah.h
ipsec: update MAX_AH_AUTH_LEN to support sha512
2011-01-13 21:48:25 -08:00
arp.h
arp: allow to invalidate specific ARP entries
2011-01-10 16:10:37 -08:00
atmclip.h
ax25.h
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
ax88796.h
ax88796: Add method to take MAC from platform data
2009-03-24 23:32:03 -07:00
cfg80211.h
cfg80211: Extend channel to frequency mapping for 802.11j
2011-01-21 15:34:17 -05:00
checksum.h
cipso_ipv4.h
netlabel: Label incoming TCP connections correctly in SELinux
2009-03-28 15:01:36 +11:00
cls_cgroup.h
Merge commit 'v2.6.36-rc7' into core/rcu
2010-10-07 09:43:45 +02:00
compat.h
net: fix compat_sys_recvmmsg parameter type
2009-12-11 15:07:56 -08:00
datalink.h
dcbevent.h
net_dcb: add application notifiers
2010-12-31 10:47:46 -08:00
dcbnl.h
dcbnl: adding DCBX feature flags get-set
2010-12-31 10:50:54 -08:00
dn.h
net: avoid limits overflow
2010-11-10 12:12:00 -08:00
dn_dev.h
decnet: RCU conversion and get rid of dev_base_lock
2010-11-08 13:50:08 -08:00
dn_fib.h
decnet: Remove unused FIB metric macros.
2010-03-27 19:23:46 -07:00
dn_neigh.h
dn_nsp.h
net: use __packed annotation
2010-06-03 03:21:52 -07:00
dn_route.h
ipv4: Make rt->fl.iif tests lest obscure.
2010-11-11 17:07:48 -08:00
dsa.h
dsa: add switch chip cascading support
2009-03-21 19:06:54 -07:00
dsfield.h
dst.h
net: Remove bogus barrier() in dst_allfrag().
2011-02-08 15:33:22 -08:00
dst_ops.h
net: Implement read-only protection and COW'ing of metrics.
2011-01-26 20:51:05 -08:00
esp.h
ethoc.h
net: Add support for the OpenCores 10/100 Mbps Ethernet MAC.
2009-03-27 00:16:21 -07:00
fib_rules.h
fib_rules: __rcu annotates ctarget
2010-10-27 11:37:32 -07:00
flow.h
net: Pre-COW metrics for TCP.
2011-01-27 22:01:53 -08:00
garp.h
net/802: add __rcu annotations
2010-10-25 13:09:44 -07:00
gen_stats.h
net: cleanup include/net
2009-11-04 05:06:25 -08:00
genetlink.h
include/net/genetlink.h: Allow genlmsg_cancel to accept a NULL argument
2011-02-03 20:47:08 -08:00
gre.h
PPTP: PPP over IPv4 (Point-to-Point Tunneling Protocol)
2010-08-21 23:05:39 -07:00
icmp.h
inetpeer: Move ICMP rate limiting state into inet_peer entries.
2011-02-04 15:59:53 -08:00
ieee80211_radiotap.h
mac80211: add MCS information to radiotap
2011-01-28 15:44:29 -05:00
ieee802154.h
ieee802154: move headers out of extra directory
2009-07-23 17:08:51 +04:00
ieee802154_netdev.h
ieee802154: add an mlme_ops call to retrieve PHY object
2009-11-06 14:32:18 +03:00
if_inet6.h
ipv6: mcast: RCU conversion
2010-11-24 11:16:42 -08:00
inet6_connection_sock.h
ipv6: Create inet6_csk_route_req().
2010-12-02 10:59:22 -08:00
inet6_hashtables.h
tcp: Fix a connect() race with timewait sockets
2009-12-08 20:17:51 -08:00
inet_common.h
inet, inet6: make tcp_sendmsg() and tcp_sendpage() through inet_sendmsg() and inet_sendpage()
2010-07-12 20:21:46 -07:00
inet_connection_sock.h
net: kill unused macros
2010-12-19 21:59:35 -08:00
inet_ecn.h
net: return operator cleanup
2010-09-23 14:33:39 -07:00
inet_frag.h
fragment: add fast path for in-order fragments
2010-06-30 13:44:29 -07:00
inet_hashtables.h
tproxy: fix hash locking issue when using port redirection in __inet_inherit_port()
2010-10-21 13:06:43 +02:00
inet_sock.h
net: Pre-COW metrics for TCP.
2011-01-27 22:01:53 -08:00
inet_timewait_sock.h
net: optimize INET input path further
2010-12-09 20:05:58 -08:00
inetpeer.h
inetpeer: Add redirect and PMTU discovery cached info.
2011-02-10 13:29:30 -08:00
ip.h
ipv4: Don't pre-seed hoplimit metric.
2010-12-12 22:08:17 -08:00
ip6_checksum.h
ip6_fib.h
inet: Create a mechanism for upward inetpeer propagation into routes.
2011-02-10 13:33:41 -08:00
ip6_route.h
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
2010-12-20 13:24:14 -08:00
ip6_tunnel.h
tunnels: add _rcu annotations
2010-10-25 13:09:45 -07:00
ip_fib.h
ipv4: Update some fib_hash centric interface names.
2011-02-01 15:35:25 -08:00
ip_vs.h
IPVS: Remove unused variables
2011-02-01 18:27:51 +01:00
ipcomp.h
percpu: add __percpu sparse annotations to net
2010-02-16 23:05:38 -08:00
ipconfig.h
ipip.h
tunnels: add __rcu annotations
2010-10-27 11:37:32 -07:00
ipv6.h
net: return operator cleanup
2010-09-23 14:33:39 -07:00
ipx.h
net: use __packed annotation
2010-06-03 03:21:52 -07:00
iw_handler.h
include/net/iw_handler.h: Use SIOCIWFIRST not SIOCSIWCOMMIT in comment
2010-03-31 14:49:12 -04:00
lapb.h
lib80211.h
lib80211: remove unused host_build_iv option
2010-07-26 15:09:04 -04:00
llc.h
llc: convert llc_sap_list to RCU
2009-12-26 20:46:28 -08:00
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h
llc: use a device based hash table to speed up multicast delivery
2009-12-26 20:43:57 -08:00
llc_if.h
llc_pdu.h
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
mac80211.h
mac80211: Add testing functionality for TKIP
2011-02-03 16:45:29 -05:00
mip6.h
net: use __packed annotation
2010-06-03 03:21:52 -07:00
mld.h
ipv6 mcast: Introduce include/net/mld.h for MLD definitions.
2010-04-23 13:35:55 +09:00
ndisc.h
net: kill unused macros from head file
2010-12-02 13:27:33 -08:00
neighbour.h
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
2010-11-19 13:13:47 -08:00
net_namespace.h
IPVS: netns, add basic init per netns.
2011-01-13 10:30:26 +09:00
netdma.h
netevent.h
net: Kill NETEVENT_PMTU_UPDATE.
2011-02-08 16:17:55 -08:00
netlabel.h
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
netlink.h
netfilter: NFNL_SUBSYS_IPSET id and NLA_PUT_NET* macros
2011-02-01 15:20:14 +01:00
netrom.h
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
nexthop.h
nl802154.h
ieee802154: add support for channel pages from IEEE 802.15.4-2006
2009-08-19 23:08:22 +04:00
p8022.h
pkt_cls.h
net: Fix range checks in tcf_valid_offset().
2010-12-21 12:43:16 -08:00
pkt_sched.h
net: Define accessors to manipulate QDISC_STATE_RUNNING
2010-06-02 03:23:51 -07:00
protocol.h
net: change netdev->features to u32
2011-01-24 15:32:47 -08:00
psnap.h
snap: use const for descriptor
2009-03-21 19:06:50 -07:00
raw.h
include/net/raw.h: Convert raw_seq_private macro to inline
2010-09-08 13:42:22 -07:00
rawv6.h
ipv6: Use correct data types for ICMPv6 type and code
2009-06-23 04:31:07 -07:00
red.h
sched: remove unused backlog in RED stats
2011-01-12 19:00:39 -08:00
regulatory.h
cfg80211: Fix regulatory bug with multiple cards and delays
2010-11-22 15:48:51 -05:00
request_sock.h
tcp: account SYN-ACK timeouts & retransmissions
2010-01-17 19:09:39 -08:00
rose.h
NET: ROSE: Don't use static buffer.
2009-07-26 19:11:14 -07:00
route.h
inet: Create a mechanism for upward inetpeer propagation into routes.
2011-02-10 13:33:41 -08:00
rtnetlink.h
rtnl: make link af-specific updates atomic
2010-11-27 22:56:08 -08:00
sch_generic.h
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
2011-01-24 14:09:35 -08:00
scm.h
scm: lower SCM_MAX_FD
2010-11-24 11:16:43 -08:00
slhc_vj.h
snmp.h
net: kill unused macros from head file
2010-12-02 13:27:33 -08:00
sock.h
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
2011-01-31 13:13:24 -08:00
stp.h
tcp.h
tcp: Add reference to initial CWND ietf draft.
2011-02-05 18:13:45 -08:00
tcp_states.h
timewait_sock.h
timewait_sock: Create and use getpeer op.
2010-12-01 18:09:13 -08:00
transp_v6.h
IPv6: Add dontfrag argument to relevant functions
2010-04-23 23:35:28 -07:00
udp.h
net: change netdev->features to u32
2011-01-24 15:32:47 -08:00
udplite.h
wext.h
wext: refactor
2009-10-07 16:39:43 -04:00
wimax.h
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-12-09 19:43:33 -08:00
wpan-phy.h
ieee802154: add support for creation/removal of logic interfaces
2009-11-06 14:32:24 +03:00
x25.h
X25 remove bkl in subscription ioctls
2010-11-28 11:12:20 -08:00
x25device.h
X25: Add if_x25.h and x25 to device identifiers
2010-04-22 16:12:36 -07:00
xfrm.h
ipsec: allow to align IPv4 AH on 32 bits
2011-02-08 14:00:40 -08:00