git: 3a151e31ac6e - main - route: fix RTF_HOST & non-empty mask handling in netlink translation.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 26 Mar 2023 18:07:31 UTC
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: