<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/include/net/ip6_fib.h, branch v3.0.86</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/include/net/ip6_fib.h?h=v3.0.86</id>
<link rel='self' href='https://git.amat.us/linux/atom/include/net/ip6_fib.h?h=v3.0.86'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2011-04-24T17:54:56Z</updated>
<entry>
<title>net: Remove __KERNEL__ cpp checks from include/net</title>
<updated>2011-04-24T17:54:56Z</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2011-04-24T17:54:56Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2a9e9507011440a57d6356ded630ba0c0f5d4b77'/>
<id>urn:sha1:2a9e9507011440a57d6356ded630ba0c0f5d4b77</id>
<content type='text'>
These header files are never installed to user consumption, so any
__KERNEL__ cpp checks are superfluous.

Projects should also not copy these files into their userland utility
sources and try to use them there.  If they insist on doing so, the
onus is on them to sanitize the headers as needed.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>inet: constify ip headers and in6_addr</title>
<updated>2011-04-22T18:04:14Z</updated>
<author>
<name>Eric Dumazet</name>
<email>eric.dumazet@gmail.com</email>
</author>
<published>2011-04-22T04:53:02Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b71d1d426d263b0b6cb5760322efebbfc89d4463'/>
<id>urn:sha1:b71d1d426d263b0b6cb5760322efebbfc89d4463</id>
<content type='text'>
Add const qualifiers to structs iphdr, ipv6hdr and in6_addr pointers
where possible, to make code intention more obvious.

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ipv6: RTA_PREFSRC support for ipv6 route source address selection</title>
<updated>2011-04-15T22:44:37Z</updated>
<author>
<name>Daniel Walter</name>
<email>sahne@0x90.at</email>
</author>
<published>2011-04-13T21:10:57Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c3968a857a6b6c3d2ef4ead35776b055fb664d74'/>
<id>urn:sha1:c3968a857a6b6c3d2ef4ead35776b055fb664d74</id>
<content type='text'>
[ipv6] Add support for RTA_PREFSRC

This patch allows a user to select the preferred source address
for a specific IPv6-Route. It can be set via a netlink message
setting RTA_PREFSRC to a valid IPv6 address which must be
up on the device the route will be bound to.

Signed-off-by: Daniel Walter &lt;dwalter@barracuda.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ipv6: Convert to use flowi6 where applicable.</title>
<updated>2011-03-12T23:08:54Z</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2011-03-12T21:22:43Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=4c9483b2fb5d2548c3cc1fe03cdd4484ceeb5d1c'/>
<id>urn:sha1:4c9483b2fb5d2548c3cc1fe03cdd4484ceeb5d1c</id>
<content type='text'>
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>inet: Create a mechanism for upward inetpeer propagation into routes.</title>
<updated>2011-02-10T21:33:41Z</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2011-02-08T04:38:06Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6431cbc25fa21635ee04eb0516ba6c51389fbfac'/>
<id>urn:sha1:6431cbc25fa21635ee04eb0516ba6c51389fbfac</id>
<content type='text'>
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-&gt;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 &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ipv6: Add infrastructure to bind inet_peer objects to routes.</title>
<updated>2010-11-30T20:27:11Z</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2010-11-30T20:27:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b3419363808f2481b24a817f491878e1795db4c7'/>
<id>urn:sha1:b3419363808f2481b24a817f491878e1795db4c7</id>
<content type='text'>
They are only allowed on cached ipv6 routes.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net-next: remove useless union keyword</title>
<updated>2010-06-11T06:31:35Z</updated>
<author>
<name>Changli Gao</name>
<email>xiaosuo@gmail.com</email>
</author>
<published>2010-06-11T06:31:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d8d1f30b95a635dbd610dcc5eb641aca8f4768cf'/>
<id>urn:sha1:d8d1f30b95a635dbd610dcc5eb641aca8f4768cf</id>
<content type='text'>
remove useless union keyword in rtable, rt6_info and dn_route.

Since there is only one member in a union, the union keyword isn't useful.

Signed-off-by: Changli Gao &lt;xiaosuo@gmail.com&gt;
Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ipv6 fib: Make rt6_info{} more cache-line aware.</title>
<updated>2010-04-02T01:41:41Z</updated>
<author>
<name>YOSHIFUJI Hideaki / 吉藤英明</name>
<email>yoshfuji@linux-ipv6.org</email>
</author>
<published>2010-03-31T22:24:22Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=bd2c77a0a749589b45f2697ea446a4438d078f9b'/>
<id>urn:sha1:bd2c77a0a749589b45f2697ea446a4438d078f9b</id>
<content type='text'>
The head element of rt6_info{} is dst_entry{}, and
IPv6 specific elements follow.

Because elements at the end of dst_entry{} are frequently
updated, it is not good to put frequently-used static
elements, such as rt6i_idev, rt6i_dst or rt6i_flags in the
same cache line.

On the other hand, fib6_table, rt6i_node or rt6i_gateway are
rarely used, so it is okay to stay in the same cache line.

Let's rearrange rt6_info{}.

Signed-off-by: YOSHIFUJI Hideaki &lt;yoshfuji@linux-ipv6.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ipv6: use standard lists for FIB walks</title>
<updated>2010-02-18T22:30:17Z</updated>
<author>
<name>Alexey Dobriyan</name>
<email>adobriyan@gmail.com</email>
</author>
<published>2010-02-18T08:13:30Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=bbef49daca35d4fd21bf606a10b6980f17d9df5d'/>
<id>urn:sha1:bbef49daca35d4fd21bf606a10b6980f17d9df5d</id>
<content type='text'>
Signed-off-by: Alexey Dobriyan &lt;adobriyan@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ipv6: fib: fix crash when changing large fib while dumping it</title>
<updated>2010-02-12T20:06:35Z</updated>
<author>
<name>Patrick McHardy</name>
<email>kaber@trash.net</email>
</author>
<published>2010-02-08T05:19:03Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2bec5a369ee79576a3eea2c23863325089785a2c'/>
<id>urn:sha1:2bec5a369ee79576a3eea2c23863325089785a2c</id>
<content type='text'>
When the fib size exceeds what can be dumped in a single skb, the
dump is suspended and resumed once the last skb has been received
by userspace. When the fib is changed while the dump is suspended,
the walker might contain stale pointers, causing a crash when the
dump is resumed.

BUG: unable to handle kernel NULL pointer dereference at 0000000000000018
IP: [&lt;ffffffffa01bce04&gt;] fib6_walk_continue+0xbb/0x124 [ipv6]
PGD 5347a067 PUD 65c7067 PMD 0
Oops: 0000 [#1] PREEMPT SMP
...
RIP: 0010:[&lt;ffffffffa01bce04&gt;]
[&lt;ffffffffa01bce04&gt;] fib6_walk_continue+0xbb/0x124 [ipv6]
...
Call Trace:
 [&lt;ffffffff8104aca3&gt;] ? mutex_spin_on_owner+0x59/0x71
 [&lt;ffffffffa01bd105&gt;] inet6_dump_fib+0x11b/0x1b9 [ipv6]
 [&lt;ffffffff81371af4&gt;] netlink_dump+0x5b/0x19e
 [&lt;ffffffff8134f288&gt;] ? consume_skb+0x28/0x2a
 [&lt;ffffffff81373b69&gt;] netlink_recvmsg+0x1ab/0x2c6
 [&lt;ffffffff81372781&gt;] ? netlink_unicast+0xfa/0x151
 [&lt;ffffffff813483e0&gt;] __sock_recvmsg+0x6d/0x79
 [&lt;ffffffff81348a53&gt;] sock_recvmsg+0xca/0xe3
 [&lt;ffffffff81066d4b&gt;] ? autoremove_wake_function+0x0/0x38
 [&lt;ffffffff811ed1f8&gt;] ? radix_tree_lookup_slot+0xe/0x10
 [&lt;ffffffff810b3ed7&gt;] ? find_get_page+0x90/0xa5
 [&lt;ffffffff810b5dc5&gt;] ? filemap_fault+0x201/0x34f
 [&lt;ffffffff810ef152&gt;] ? fget_light+0x2f/0xac
 [&lt;ffffffff813519e7&gt;] ? verify_iovec+0x4f/0x94
 [&lt;ffffffff81349a65&gt;] sys_recvmsg+0x14d/0x223

Store the serial number when beginning to walk the fib and reload
pointers when continuing to walk after a change occured. Similar
to other dumping functions, this might cause unrelated entries to
be missed when entries are deleted.

Tested-by: Ben Greear &lt;greearb@candelatech.com&gt;
Signed-off-by: Patrick McHardy &lt;kaber@trash.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
