diff options
author | melifaro <melifaro@FreeBSD.org> | 2015-01-08 18:02:05 +0000 |
---|---|---|
committer | melifaro <melifaro@FreeBSD.org> | 2015-01-08 18:02:05 +0000 |
commit | abec420f04cfc04d27c1e212da060f4ad48a07c8 (patch) | |
tree | 4aa36dabcf9127cae1a5ea7a3624e205913a0b2e /sys/netinet6/nd6.h | |
parent | 4b9397186833c1449b3030825f5204e501e73611 (diff) | |
download | FreeBSD-src-abec420f04cfc04d27c1e212da060f4ad48a07c8.zip FreeBSD-src-abec420f04cfc04d27c1e212da060f4ad48a07c8.tar.gz |
* Use newly-created nd6_grab_holdchain() function to retrieve lle
hold mbuf chain instead of calling full-blown nd6_output_lle()
for each packet. This simplifies both callers and nd6_output_lle()
implementation.
* Make nd6_output_lle() static and remove now-unused lle and chain
arguments.
* Rename nd6_output_flush() -> nd6_flush_holdchain() to be consistent.
* Move all pre-send transmit hooks to newly-created nd6_output_ifp().
Now nd6_output(), nd6_output_lle() and nd6_flush_holdchain() are using
it to send mbufs to if_output.
* Remove SeND hook from nd6_na_input() because it was implemented
incorrectly since the beginning (r211501):
- it tagged initial input mbuf (m) instead of m_hold
- tagging _all_ mbufs in holdchain seems to be wrong anyway.
Diffstat (limited to 'sys/netinet6/nd6.h')
-rw-r--r-- | sys/netinet6/nd6.h | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/sys/netinet6/nd6.h b/sys/netinet6/nd6.h index 9253820..284fbfa 100644 --- a/sys/netinet6/nd6.h +++ b/sys/netinet6/nd6.h @@ -409,11 +409,10 @@ struct llentry *nd6_cache_lladdr(struct ifnet *, struct in6_addr *, char *, int, int, int); int nd6_output(struct ifnet *, struct ifnet *, struct mbuf *, struct sockaddr_in6 *, struct rtentry *); -int nd6_output_lle(struct ifnet *, struct ifnet *, struct mbuf *, - struct sockaddr_in6 *, struct rtentry *, struct llentry *, - struct mbuf **); -int nd6_output_flush(struct ifnet *, struct ifnet *, struct mbuf *, - struct sockaddr_in6 *); +void nd6_grab_holdchain(struct llentry *, struct mbuf **, + struct sockaddr_in6 *); +int nd6_flush_holdchain(struct ifnet *, struct ifnet *, struct mbuf *, + struct sockaddr_in6 *); int nd6_need_cache(struct ifnet *); int nd6_add_ifa_lle(struct in6_ifaddr *); void nd6_rem_ifa_lle(struct in6_ifaddr *); |