[OpenWrt-Devel,netifd] interface-ip: transfer prefix route ownership for deprecated ipv6addr to kernel
diff mbox series

Message ID 1580909793-24142-1-git-send-email-alin.nastac@technicolor.com
State New
Delegated to: Hans Dedecker
Headers show
Series
  • [OpenWrt-Devel,netifd] interface-ip: transfer prefix route ownership for deprecated ipv6addr to kernel
Related show

Commit Message

Alin Năstac Feb. 5, 2020, 1:36 p.m. UTC
From: Alin Nastac <alin.nastac@gmail.com>

When netifd manages the prefix route directly, it will remove it
the moment prefix gets deprecated. This will make it impossible
for the target to send ICMPv6 errors back to LAN devices still
using the deprecated prefix, thus breaking the L-14 requirement
of RFC 7084.

Signed-off-by: Alin Nastac <alin.nastac@gmail.com>
---
 interface-ip.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Patch
diff mbox series

diff --git a/interface-ip.c b/interface-ip.c
index 91c305b..ff8f219 100644
--- a/interface-ip.c
+++ b/interface-ip.c
@@ -913,7 +913,7 @@  interface_set_prefix_address(struct device_prefix_assignment *assignment,
 
 	addr.addr.in6 = assignment->addr;
 	addr.mask = assignment->length;
-	addr.flags = DEVADDR_INET6 | DEVADDR_OFFLINK;
+	addr.flags = DEVADDR_INET6;
 	addr.preferred_until = prefix->preferred_until;
 	addr.valid_until = prefix->valid_until;
 
@@ -960,6 +960,7 @@  interface_set_prefix_address(struct device_prefix_assignment *assignment,
 			route.addr = addr.addr;
 		}
 
+		addr.flags |= DEVADDR_OFFLINK;
 		if (system_add_address(l3_downlink, &addr))
 			return;