#
303458 |
|
28-Jul-2016 |
sbruno |
MFC r296063 r297397 r299213
296063: Lock the NDP default router list and count defrouter references.
This addresses a number of race conditions that can cause crashes as a result of unsynchronized access to the list.
297397 Modify nd6_llinfo_timer() to acquire the nd6 lock before the LLE lock.
When expiring a neighbour cache entry we may need to look up the associated default router, which requires the nd6 read lock. To avoid an LOR, the nd6 lock should be acquired first.
299213 Clean up callers of nd6_prelist_add().
nd6_prelist_add() sets *newp if and only if it is successful, so there's no need for code that handles the case where the return value is 0 and *newp == NULL. Fix some style bugs in nd6_prelist_add() while here.
Submitted by: Jason Wolfe <j@nitrology.com>
|
#
294503 |
|
21-Jan-2016 |
bz |
MFC 292953:
This code is not in modules that need KPI stability so no need to use the wrapper functions as used in r252511 (head). We can directly use the locking macros.
|
#
293358 |
|
07-Jan-2016 |
wollman |
MFH r292836:
in6_if2idlen: treat bridge(4) interfaces like other Ethernet interfaces
bridge(4) interfaces have an if_type of IFT_BRIDGE, rather than IFT_ETHER, even though they only support Ethernet-style links. This caused in6_if2idlen to emit an "unknown link type (209)" warning to the console every time it was called. Add IFT_BRIDGE to the case statement in the appropriate place, indicating that it uses the same IPv6 address format as other Ethernet-like interfaces.
|
#
288109 |
|
22-Sep-2015 |
garga |
Remove extra space introduced in r287734. This is a stable/10 only fix since original commit (r287094) is correct.
Approved by: loos Sponsored by: Rubicon Communications (Netgate)
|
#
287734 |
|
13-Sep-2015 |
hrs |
MFC 287094:
- Deprecate IN6_IFF_NODAD. It was used to prevent DAD on a loopback interface but in6if_do_dad() already had a check for IFF_LOOPBACK.
- Remove in6if_do_dad() check in in6_broadcast_ifa(). An address which needs DAD always has IN6_IFF_TENTATIVE there.
- in6if_do_dad() now returns EAGAIN when the interface is not ready since DAD callout handler ignores such an interface.
- In DAD callout handler, mark an address as IN6_IFF_TENTATIVE when the interface has ND6_IFF_IFDISABLED. And Do IFF_UP and IFF_DRV_RUNNING check consistently when DAD is required.
- draft-ietf-6man-enhanced-dad is now published as RFC 7527.
- Fix some typos.
|
#
287733 |
|
13-Sep-2015 |
hrs |
MFC 287095, 287610, 287611, 287617:
Remove obsolete API (SIOCGDRLST_IN6 and SIOCGPRLST_IN6) support.
|
#
287732 |
|
12-Sep-2015 |
hrs |
MFC 287609:
Do not add IN6_IFF_TENTATIVE when ND6_IFF_NO_DAD.
|
#
286316 |
|
05-Aug-2015 |
ae |
MFC r285710: Invoke LLE event handler when entry is deleted.
|
#
285822 |
|
23-Jul-2015 |
hrs |
MFC r273992:
Fix a bug which prevented ND6_IFF_IFDISABLED flag from clearing when the newly-added IPv6 address was /128.
Approved by: re (gjb)
|
#
284016 |
|
05-Jun-2015 |
ae |
Rework r281868 to not skip RTM announces for tunneling interfaces. This is direct commit to stable/10.
Tested by: tuexen@
|
#
282622 |
|
08-May-2015 |
hiren |
MFC r261708, r261847, r268525, r274316, r274347, r275593, r276844, r276847, r279531, r279559, r279564, r279676
A bunch of IPv6 fixes by melifaro, hrs and ae
Major changes: Simplify nd6_output_lle() Add refcounting to DAD and fix races and other errors Implement Enhanced DAD algorithm for IPv6
Suggested by: ae Tested by: Jason Wolfe <j at nitrology.com> Sponsored by: Limelight Networks
|
#
281868 |
|
22-Apr-2015 |
ae |
MFC r274988 (with modification): Skip L2 addresses lookups for tunneling interfaces.
PR: 197286
|
#
278801 |
|
15-Feb-2015 |
rrs |
MFC of r278472 This fixes a bug in the way that the LLE timers for nd6 and arp were being used. They basically would pass in the mutex to the callout_init. Because they used this method to the callout system, it was possible to "stop" the callout. When flushing the table and you stopped the running callout, the callout_stop code would return 1 indicating that it was going to stop the callout (that was about to run on the callout_wheel blocked by the function calling the stop). Now when 1 was returned, it would lower the reference count one extra time for the stopped timer, then a few lines later delete the memory. Of course the callout_wheel was stuck in the lock code and would then crash since it was accessing freed memory. By using callout_init(c, 1) we always get a 0 back and the reference counting bug does not rear its head. We do have to make a few adjustments to the callouts themselves though to make sure it does the proper thing if rescheduled as well as gets the lock.
Sponsored by: Netflix Inc.
|
#
278620 |
|
12-Feb-2015 |
ae |
MFC r278268: Print IPv6 address in log message instead of address of pointer.
|
#
271185 |
|
06-Sep-2014 |
markj |
MFC r270348: Add some missing checks for unsupported interfaces (e.g. pflog(4)) when handling ioctls. While here, remove duplicated checks for a NULL ifp in in6_control(): this check is already done near the beginning of the function.
MFC r270349: Suppress warnings when retrieving protocol stats from interfaces that don't support IPv6 (e.g. pflog(4)).
PR: 189117 Approved by: re (gjb)
|
#
260504 |
|
10-Jan-2014 |
ae |
MFC r260151 (by adrian): Use an RLOCK here instead of an RWLOCK - matching all the other calls to lla_lookup().
This drastically reduces the very high lock contention when doing parallel TCP throughput tests (> 1024 sockets) with IPv6.
MFC r260187: lla_lookup() does modification only when LLE_CREATE is specified. Thus we can use IF_AFDATA_RLOCK() instead of IF_AFDATA_LOCK() when doing lla_lookup() without LLE_CREATE flag.
MFC r260217: Add IF_AFDATA_WLOCK_ASSERT() in case lla_lookup() is called with LLE_CREATE flag.
|
#
288109 |
|
22-Sep-2015 |
garga |
Remove extra space introduced in r287734. This is a stable/10 only fix since original commit (r287094) is correct.
Approved by: loos Sponsored by: Rubicon Communications (Netgate)
|
#
287734 |
|
13-Sep-2015 |
hrs |
MFC 287094:
- Deprecate IN6_IFF_NODAD. It was used to prevent DAD on a loopback interface but in6if_do_dad() already had a check for IFF_LOOPBACK.
- Remove in6if_do_dad() check in in6_broadcast_ifa(). An address which needs DAD always has IN6_IFF_TENTATIVE there.
- in6if_do_dad() now returns EAGAIN when the interface is not ready since DAD callout handler ignores such an interface.
- In DAD callout handler, mark an address as IN6_IFF_TENTATIVE when the interface has ND6_IFF_IFDISABLED. And Do IFF_UP and IFF_DRV_RUNNING check consistently when DAD is required.
- draft-ietf-6man-enhanced-dad is now published as RFC 7527.
- Fix some typos.
|
#
287733 |
|
13-Sep-2015 |
hrs |
MFC 287095, 287610, 287611, 287617:
Remove obsolete API (SIOCGDRLST_IN6 and SIOCGPRLST_IN6) support.
|
#
287732 |
|
12-Sep-2015 |
hrs |
MFC 287609:
Do not add IN6_IFF_TENTATIVE when ND6_IFF_NO_DAD.
|
#
286316 |
|
05-Aug-2015 |
ae |
MFC r285710: Invoke LLE event handler when entry is deleted.
|
#
285822 |
|
23-Jul-2015 |
hrs |
MFC r273992:
Fix a bug which prevented ND6_IFF_IFDISABLED flag from clearing when the newly-added IPv6 address was /128.
Approved by: re (gjb)
|
#
284016 |
|
05-Jun-2015 |
ae |
Rework r281868 to not skip RTM announces for tunneling interfaces. This is direct commit to stable/10.
Tested by: tuexen@
|
#
282622 |
|
08-May-2015 |
hiren |
MFC r261708, r261847, r268525, r274316, r274347, r275593, r276844, r276847, r279531, r279559, r279564, r279676
A bunch of IPv6 fixes by melifaro, hrs and ae
Major changes: Simplify nd6_output_lle() Add refcounting to DAD and fix races and other errors Implement Enhanced DAD algorithm for IPv6
Suggested by: ae Tested by: Jason Wolfe <j at nitrology.com> Sponsored by: Limelight Networks
|
#
281868 |
|
22-Apr-2015 |
ae |
MFC r274988 (with modification): Skip L2 addresses lookups for tunneling interfaces.
PR: 197286
|
#
278801 |
|
15-Feb-2015 |
rrs |
MFC of r278472 This fixes a bug in the way that the LLE timers for nd6 and arp were being used. They basically would pass in the mutex to the callout_init. Because they used this method to the callout system, it was possible to "stop" the callout. When flushing the table and you stopped the running callout, the callout_stop code would return 1 indicating that it was going to stop the callout (that was about to run on the callout_wheel blocked by the function calling the stop). Now when 1 was returned, it would lower the reference count one extra time for the stopped timer, then a few lines later delete the memory. Of course the callout_wheel was stuck in the lock code and would then crash since it was accessing freed memory. By using callout_init(c, 1) we always get a 0 back and the reference counting bug does not rear its head. We do have to make a few adjustments to the callouts themselves though to make sure it does the proper thing if rescheduled as well as gets the lock.
Sponsored by: Netflix Inc.
|
#
278620 |
|
12-Feb-2015 |
ae |
MFC r278268: Print IPv6 address in log message instead of address of pointer.
|
#
271185 |
|
06-Sep-2014 |
markj |
MFC r270348: Add some missing checks for unsupported interfaces (e.g. pflog(4)) when handling ioctls. While here, remove duplicated checks for a NULL ifp in in6_control(): this check is already done near the beginning of the function.
MFC r270349: Suppress warnings when retrieving protocol stats from interfaces that don't support IPv6 (e.g. pflog(4)).
PR: 189117 Approved by: re (gjb)
|
#
260504 |
|
10-Jan-2014 |
ae |
MFC r260151 (by adrian): Use an RLOCK here instead of an RWLOCK - matching all the other calls to lla_lookup().
This drastically reduces the very high lock contention when doing parallel TCP throughput tests (> 1024 sockets) with IPv6.
MFC r260187: lla_lookup() does modification only when LLE_CREATE is specified. Thus we can use IF_AFDATA_RLOCK() instead of IF_AFDATA_LOCK() when doing lla_lookup() without LLE_CREATE flag.
MFC r260217: Add IF_AFDATA_WLOCK_ASSERT() in case lla_lookup() is called with LLE_CREATE flag.
|