The branch main has been updated by melifaro:

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

commit 3a151e31ac6ea7e4555dd874fc23f70527eb359b
Author:     Alexander V. Chernikov <[email protected]>
AuthorDate: 2023-03-26 18:06:34 +0000
Commit:     Alexander V. Chernikov <[email protected]>
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:

Reply via email to