Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Mar 2023 18:07:31 GMT
From:      "Alexander V. Chernikov" <melifaro@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 3a151e31ac6e - main - route: fix RTF_HOST & non-empty mask handling in netlink translation.
Message-ID:  <202303261807.32QI7V1f049887@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by melifaro:

URL: https://cgit.FreeBSD.org/src/commit/?id=3a151e31ac6ea7e4555dd874fc23f70527eb359b

commit 3a151e31ac6ea7e4555dd874fc23f70527eb359b
Author:     Alexander V. Chernikov <melifaro@FreeBSD.org>
AuthorDate: 2023-03-26 18:06:34 +0000
Commit:     Alexander V. Chernikov <melifaro@FreeBSD.org>
CommitDate: 2023-03-26 18:07:23 +0000

    route: fix RTF_HOST & non-empty mask handling in netlink translation.
---
 sbin/route/route_netlink.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/sbin/route/route_netlink.c b/sbin/route/route_netlink.c
index 648d866670fc..0b9bb4ff5750 100644
--- a/sbin/route/route_netlink.c
+++ b/sbin/route/route_netlink.c
@@ -154,14 +154,20 @@ rtmsg_nl_int(struct nl_helper *h, int cmd, int rtm_flags, int fib,
 	    {
 		struct sockaddr_in *mask4 = (struct sockaddr_in *)mask;
 
-		plen = mask4 ? bitcount32(mask4->sin_addr.s_addr) : 32;
+		if ((rtm_flags & RTF_HOST) == 0 && mask4 != NULL)
+			plen = bitcount32(mask4->sin_addr.s_addr);
+		else
+			plen = 32;
 		break;
 	    }
 	case AF_INET6:
 	    {
 		struct sockaddr_in6 *mask6 = (struct sockaddr_in6 *)mask;
 
-		plen = mask6 ? inet6_get_plen(&mask6->sin6_addr) : 128;
+		if ((rtm_flags & RTF_HOST) == 0 && mask6 != NULL)
+			plen = inet6_get_plen(&mask6->sin6_addr);
+		else
+			plen = 128;
 		break;
 	    }
 	default:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202303261807.32QI7V1f049887>