mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-25 00:52:45 -04:00
net: ipv4: update fnhe_pmtu when first hop's MTU changes
Since commit5aad1de5ea("ipv4: use separate genid for next hop exceptions"), exceptions get deprecated separately from cached routes. In particular, administrative changes don't clear PMTU anymore. As Stefano described in commite9fa1495d7("ipv6: Reflect MTU changes on PMTU of exceptions for MTU-less routes"), the PMTU discovered before the local MTU change can become stale: - if the local MTU is now lower than the PMTU, that PMTU is now incorrect - if the local MTU was the lowest value in the path, and is increased, we might discover a higher PMTU Similarly to what commite9fa1495d7did for IPv6, update PMTU in those cases. If the exception was locked, the discovered PMTU was smaller than the minimal accepted PMTU. In that case, if the new local MTU is smaller than the current PMTU, let PMTU discovery figure out if locking of the exception is still needed. To do this, we need to know the old link MTU in the NETDEV_CHANGEMTU notifier. By the time the notifier is called, dev->mtu has been changed. This patch adds the old MTU as additional information in the notifier structure, and a new call_netdevice_notifiers_u32() function. Fixes:5aad1de5ea("ipv4: use separate genid for next hop exceptions") Signed-off-by: Sabrina Dubroca <sd@queasysnail.net> Reviewed-by: Stefano Brivio <sbrivio@redhat.com> Reviewed-by: David Ahern <dsahern@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
7abab7b9b4
commit
af7d6cce53
@@ -2458,6 +2458,13 @@ struct netdev_notifier_info {
|
||||
struct netlink_ext_ack *extack;
|
||||
};
|
||||
|
||||
struct netdev_notifier_info_ext {
|
||||
struct netdev_notifier_info info; /* must be first */
|
||||
union {
|
||||
u32 mtu;
|
||||
} ext;
|
||||
};
|
||||
|
||||
struct netdev_notifier_change_info {
|
||||
struct netdev_notifier_info info; /* must be first */
|
||||
unsigned int flags_changed;
|
||||
|
||||
Reference in New Issue
Block a user