mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-19 19:27:27 +00:00
netifd: fix IPv4 route target masking
A previous commit supposed to mask out excess host bits in route targets failed to correctly calculate the mask value, causing it to produce improper results for certain mask lengths. Fixes: https://github.com/openwrt/netifd/issues/17 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
51bb178824
commit
842932a63d
@ -1,7 +1,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=netifd
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=1.1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
|
||||
|
@ -0,0 +1,32 @@
|
||||
From 8587c074f1eb2064c42adb0a6aa5073f695ab89d Mon Sep 17 00:00:00 2001
|
||||
From: Jo-Philipp Wich <jo@mein.io>
|
||||
Date: Tue, 14 Nov 2023 14:01:44 +0100
|
||||
Subject: [PATCH] interface-ip: fix IPv4 route target masking
|
||||
|
||||
A previous commit supposed to mask out excess host bits in route targets
|
||||
failed to correctly calculate the mask value, causing it to produce
|
||||
improper results for certain mask lengths.
|
||||
|
||||
Fixes: #17
|
||||
Fixes: 76eb342 ("interface-ip: mask out host bits in IPv4 route targets")
|
||||
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
|
||||
---
|
||||
interface-ip.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/interface-ip.c b/interface-ip.c
|
||||
index d2fe385..28e7106 100644
|
||||
--- a/interface-ip.c
|
||||
+++ b/interface-ip.c
|
||||
@@ -448,7 +448,7 @@ interface_ip_add_route(struct interface *iface, struct blob_attr *attr, bool v6)
|
||||
|
||||
/* Mask out IPv4 host bits to avoid "Invalid prefix for given prefix length" */
|
||||
if (af == AF_INET && route->mask < 32)
|
||||
- route->addr.in.s_addr &= ((1u << route->mask) - 1);
|
||||
+ clear_if_addr(&route->addr, route->mask);
|
||||
}
|
||||
|
||||
if ((cur = tb[ROUTE_GATEWAY]) != NULL) {
|
||||
--
|
||||
2.39.1
|
||||
|
Loading…
Reference in New Issue
Block a user