Module Name: src Committed By: martin Date: Wed Feb 28 18:54:43 UTC 2018
Modified Files: src/sys/net [netbsd-8]: if.c rtsock.c Log Message: Pull up following revision(s) (requested by mrg in ticket #595): sys/net/if.c: revision 1.398 sys/net/rtsock.c: revision 1.231 remove useless cast, initialize family. Avoid using a zero family mask. To generate a diff of this commit: cvs rdiff -u -r1.394.2.8 -r1.394.2.9 src/sys/net/if.c cvs rdiff -u -r1.213.2.6 -r1.213.2.7 src/sys/net/rtsock.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/net/if.c diff -u src/sys/net/if.c:1.394.2.8 src/sys/net/if.c:1.394.2.9 --- src/sys/net/if.c:1.394.2.8 Sun Feb 11 21:17:34 2018 +++ src/sys/net/if.c Wed Feb 28 18:54:43 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: if.c,v 1.394.2.8 2018/02/11 21:17:34 snj Exp $ */ +/* $NetBSD: if.c,v 1.394.2.9 2018/02/28 18:54:43 martin Exp $ */ /*- * Copyright (c) 1999, 2000, 2001, 2008 The NetBSD Foundation, Inc. @@ -90,7 +90,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.394.2.8 2018/02/11 21:17:34 snj Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.394.2.9 2018/02/28 18:54:43 martin Exp $"); #if defined(_KERNEL_OPT) #include "opt_inet.h" @@ -450,13 +450,14 @@ if_dl_create(const struct ifnet *ifp, co addrlen = ifp->if_addrlen; socksize = roundup(sockaddr_dl_measure(namelen, addrlen), sizeof(long)); ifasize = sizeof(*ifa) + 2 * socksize; - ifa = (struct ifaddr *)malloc(ifasize, M_IFADDR, M_WAITOK|M_ZERO); + ifa = malloc(ifasize, M_IFADDR, M_WAITOK|M_ZERO); sdl = (struct sockaddr_dl *)(ifa + 1); mask = (struct sockaddr_dl *)(socksize + (char *)sdl); sockaddr_dl_init(sdl, socksize, ifp->if_index, ifp->if_type, ifp->if_xname, namelen, NULL, addrlen); + mask->sdl_family = AF_LINK; mask->sdl_len = sockaddr_dl_measure(namelen, 0); memset(&mask->sdl_data[0], 0xff, namelen); ifa->ifa_rtrequest = link_rtrequest; Index: src/sys/net/rtsock.c diff -u src/sys/net/rtsock.c:1.213.2.6 src/sys/net/rtsock.c:1.213.2.7 --- src/sys/net/rtsock.c:1.213.2.6 Sat Feb 3 22:07:26 2018 +++ src/sys/net/rtsock.c Wed Feb 28 18:54:43 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: rtsock.c,v 1.213.2.6 2018/02/03 22:07:26 snj Exp $ */ +/* $NetBSD: rtsock.c,v 1.213.2.7 2018/02/28 18:54:43 martin Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.213.2.6 2018/02/03 22:07:26 snj Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.213.2.7 2018/02/28 18:54:43 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -836,8 +836,13 @@ COMPATNAME(route_output)(struct mbuf *m, * (padded with 0's). We keep the original length of the sockaddr. */ if (info.rti_info[RTAX_NETMASK]) { + /* + * Use the family of RTAX_DST, because RTAX_NETMASK + * can have a zero family if it comes from the radix + * tree via rt_mask(). + */ socklen_t sa_len = sockaddr_getsize_by_family( - info.rti_info[RTAX_NETMASK]->sa_family); + info.rti_info[RTAX_DST]->sa_family); socklen_t masklen = sockaddr_getlen( info.rti_info[RTAX_NETMASK]); if (sa_len != 0 && sa_len > masklen) {