Module Name:    src
Committed By:   thorpej
Date:           Wed Jan 29 05:47:12 UTC 2020

Modified Files:
        src/sys/compat/common: rtsock_14.c rtsock_50.c

Log Message:
Don't reference ifp->if_data directly; use if_export_if_data().


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/compat/common/rtsock_14.c
cvs rdiff -u -r1.15 -r1.16 src/sys/compat/common/rtsock_50.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/compat/common/rtsock_14.c
diff -u src/sys/compat/common/rtsock_14.c:1.9 src/sys/compat/common/rtsock_14.c:1.10
--- src/sys/compat/common/rtsock_14.c:1.9	Thu Dec 12 02:15:42 2019
+++ src/sys/compat/common/rtsock_14.c	Wed Jan 29 05:47:12 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: rtsock_14.c,v 1.9 2019/12/12 02:15:42 pgoyette Exp $	*/
+/*	$NetBSD: rtsock_14.c,v 1.10 2020/01/29 05:47:12 thorpej Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rtsock_14.c,v 1.9 2019/12/12 02:15:42 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtsock_14.c,v 1.10 2020/01/29 05:47:12 thorpej Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -99,6 +99,7 @@ void
 compat_14_rt_oifmsg(struct ifnet *ifp)
 {
 	struct if_msghdr14 oifm;
+	struct if_data ifi;
 	struct mbuf *m;
 	struct rt_addrinfo info;
 	struct timeval tv;
@@ -107,26 +108,27 @@ compat_14_rt_oifmsg(struct ifnet *ifp)
 		return;
 	(void)memset(&info, 0, sizeof(info));
 	(void)memset(&oifm, 0, sizeof(oifm));
+	if_export_if_data(ifp, &ifi, false);
 	oifm.ifm_index = ifp->if_index;
 	oifm.ifm_flags = ifp->if_flags;
-	oifm.ifm_data.ifi_type = ifp->if_data.ifi_type;
-	oifm.ifm_data.ifi_addrlen = ifp->if_data.ifi_addrlen;
-	oifm.ifm_data.ifi_hdrlen = ifp->if_data.ifi_hdrlen;
-	oifm.ifm_data.ifi_mtu = ifp->if_data.ifi_mtu;
-	oifm.ifm_data.ifi_metric = ifp->if_data.ifi_metric;
-	oifm.ifm_data.ifi_baudrate = ifp->if_data.ifi_baudrate;
-	oifm.ifm_data.ifi_ipackets = ifp->if_data.ifi_ipackets;
-	oifm.ifm_data.ifi_ierrors = ifp->if_data.ifi_ierrors;
-	oifm.ifm_data.ifi_opackets = ifp->if_data.ifi_opackets;
-	oifm.ifm_data.ifi_oerrors = ifp->if_data.ifi_oerrors;
-	oifm.ifm_data.ifi_collisions = ifp->if_data.ifi_collisions;
-	oifm.ifm_data.ifi_ibytes = ifp->if_data.ifi_ibytes;
-	oifm.ifm_data.ifi_obytes = ifp->if_data.ifi_obytes;
-	oifm.ifm_data.ifi_imcasts = ifp->if_data.ifi_imcasts;
-	oifm.ifm_data.ifi_omcasts = ifp->if_data.ifi_omcasts;
-	oifm.ifm_data.ifi_iqdrops = ifp->if_data.ifi_iqdrops;
-	oifm.ifm_data.ifi_noproto = ifp->if_data.ifi_noproto;
-	TIMESPEC_TO_TIMEVAL(&tv, &ifp->if_data.ifi_lastchange);
+	oifm.ifm_data.ifi_type = ifi.ifi_type;
+	oifm.ifm_data.ifi_addrlen = ifi.ifi_addrlen;
+	oifm.ifm_data.ifi_hdrlen = ifi.ifi_hdrlen;
+	oifm.ifm_data.ifi_mtu = ifi.ifi_mtu;
+	oifm.ifm_data.ifi_metric = ifi.ifi_metric;
+	oifm.ifm_data.ifi_baudrate = ifi.ifi_baudrate;
+	oifm.ifm_data.ifi_ipackets = ifi.ifi_ipackets;
+	oifm.ifm_data.ifi_ierrors = ifi.ifi_ierrors;
+	oifm.ifm_data.ifi_opackets = ifi.ifi_opackets;
+	oifm.ifm_data.ifi_oerrors = ifi.ifi_oerrors;
+	oifm.ifm_data.ifi_collisions = ifi.ifi_collisions;
+	oifm.ifm_data.ifi_ibytes = ifi.ifi_ibytes;
+	oifm.ifm_data.ifi_obytes = ifi.ifi_obytes;
+	oifm.ifm_data.ifi_imcasts = ifi.ifi_imcasts;
+	oifm.ifm_data.ifi_omcasts = ifi.ifi_omcasts;
+	oifm.ifm_data.ifi_iqdrops = ifi.ifi_iqdrops;
+	oifm.ifm_data.ifi_noproto = ifi.ifi_noproto;
+	TIMESPEC_TO_TIMEVAL(&tv, &ifi.ifi_lastchange);
 	timeval_to_timeval50(&tv, &oifm.ifm_data.ifi_lastchange);
 	oifm.ifm_addrs = 0;
 	m = compat_50_rt_msg1(RTM_OOIFINFO, &info, (void *)&oifm, sizeof(oifm));
@@ -140,30 +142,32 @@ compat_14_iflist(struct ifnet *ifp, stru
     struct rt_addrinfo *info, size_t len)
 {
 	struct if_msghdr14 *ifm;
+	struct if_data ifi;
 	struct timeval tv;
 	int error;
 
 	ifm = (struct if_msghdr14 *)w->w_tmem;
+	if_export_if_data(ifp, &ifi, false);
 	ifm->ifm_index = ifp->if_index;
 	ifm->ifm_flags = ifp->if_flags;
-	ifm->ifm_data.ifi_type = ifp->if_data.ifi_type;
-	ifm->ifm_data.ifi_addrlen = ifp->if_data.ifi_addrlen;
-	ifm->ifm_data.ifi_hdrlen = ifp->if_data.ifi_hdrlen;
-	ifm->ifm_data.ifi_mtu = ifp->if_data.ifi_mtu;
-	ifm->ifm_data.ifi_metric = ifp->if_data.ifi_metric;
-	ifm->ifm_data.ifi_baudrate = ifp->if_data.ifi_baudrate;
-	ifm->ifm_data.ifi_ipackets = ifp->if_data.ifi_ipackets;
-	ifm->ifm_data.ifi_ierrors = ifp->if_data.ifi_ierrors;
-	ifm->ifm_data.ifi_opackets = ifp->if_data.ifi_opackets;
-	ifm->ifm_data.ifi_oerrors = ifp->if_data.ifi_oerrors;
-	ifm->ifm_data.ifi_collisions = ifp->if_data.ifi_collisions;
-	ifm->ifm_data.ifi_ibytes = ifp->if_data.ifi_ibytes;
-	ifm->ifm_data.ifi_obytes = ifp->if_data.ifi_obytes;
-	ifm->ifm_data.ifi_imcasts = ifp->if_data.ifi_imcasts;
-	ifm->ifm_data.ifi_omcasts = ifp->if_data.ifi_omcasts;
-	ifm->ifm_data.ifi_iqdrops = ifp->if_data.ifi_iqdrops;
-	ifm->ifm_data.ifi_noproto = ifp->if_data.ifi_noproto;
-	TIMESPEC_TO_TIMEVAL(&tv, &ifp->if_data.ifi_lastchange);
+	ifm->ifm_data.ifi_type = ifi.ifi_type;
+	ifm->ifm_data.ifi_addrlen = ifi.ifi_addrlen;
+	ifm->ifm_data.ifi_hdrlen = ifi.ifi_hdrlen;
+	ifm->ifm_data.ifi_mtu = ifi.ifi_mtu;
+	ifm->ifm_data.ifi_metric = ifi.ifi_metric;
+	ifm->ifm_data.ifi_baudrate = ifi.ifi_baudrate;
+	ifm->ifm_data.ifi_ipackets = ifi.ifi_ipackets;
+	ifm->ifm_data.ifi_ierrors = ifi.ifi_ierrors;
+	ifm->ifm_data.ifi_opackets = ifi.ifi_opackets;
+	ifm->ifm_data.ifi_oerrors = ifi.ifi_oerrors;
+	ifm->ifm_data.ifi_collisions = ifi.ifi_collisions;
+	ifm->ifm_data.ifi_ibytes = ifi.ifi_ibytes;
+	ifm->ifm_data.ifi_obytes = ifi.ifi_obytes;
+	ifm->ifm_data.ifi_imcasts = ifi.ifi_imcasts;
+	ifm->ifm_data.ifi_omcasts = ifi.ifi_omcasts;
+	ifm->ifm_data.ifi_iqdrops = ifi.ifi_iqdrops;
+	ifm->ifm_data.ifi_noproto = ifi.ifi_noproto;
+	TIMESPEC_TO_TIMEVAL(&tv, &ifi.ifi_lastchange);
 	timeval_to_timeval50(&tv, &ifm->ifm_data.ifi_lastchange);
 	ifm->ifm_addrs = info->rti_addrs;
 	error = copyout(ifm, w->w_where, len);

Index: src/sys/compat/common/rtsock_50.c
diff -u src/sys/compat/common/rtsock_50.c:1.15 src/sys/compat/common/rtsock_50.c:1.16
--- src/sys/compat/common/rtsock_50.c:1.15	Thu Dec 12 02:15:42 2019
+++ src/sys/compat/common/rtsock_50.c	Wed Jan 29 05:47:12 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: rtsock_50.c,v 1.15 2019/12/12 02:15:42 pgoyette Exp $	*/
+/*	$NetBSD: rtsock_50.c,v 1.16 2020/01/29 05:47:12 thorpej Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rtsock_50.c,v 1.15 2019/12/12 02:15:42 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtsock_50.c,v 1.16 2020/01/29 05:47:12 thorpej Exp $");
 
 #define	COMPAT_RTSOCK	/* Use the COMPATNAME/COMPATCALL macros and the
 			 * various other compat definitions - see
@@ -77,6 +77,7 @@ void
 compat_50_rt_oifmsg(struct ifnet *ifp)
 {
 	struct if_msghdr50 oifm;
+	struct if_data ifi;
 	struct mbuf *m;
 	struct rt_addrinfo info;
 
@@ -84,28 +85,29 @@ compat_50_rt_oifmsg(struct ifnet *ifp)
 		return;
 	(void)memset(&info, 0, sizeof(info));
 	(void)memset(&oifm, 0, sizeof(oifm));
+	if_export_if_data(ifp, &ifi, false);
 	oifm.ifm_index = ifp->if_index;
 	oifm.ifm_flags = ifp->if_flags;
-	oifm.ifm_data.ifi_type = ifp->if_data.ifi_type;
-	oifm.ifm_data.ifi_addrlen = ifp->if_data.ifi_addrlen;
-	oifm.ifm_data.ifi_hdrlen = ifp->if_data.ifi_hdrlen;
-	oifm.ifm_data.ifi_link_state = ifp->if_data.ifi_link_state;
-	oifm.ifm_data.ifi_mtu = ifp->if_data.ifi_mtu;
-	oifm.ifm_data.ifi_metric = ifp->if_data.ifi_metric;
-	oifm.ifm_data.ifi_baudrate = ifp->if_data.ifi_baudrate;
-	oifm.ifm_data.ifi_ipackets = ifp->if_data.ifi_ipackets;
-	oifm.ifm_data.ifi_ierrors = ifp->if_data.ifi_ierrors;
-	oifm.ifm_data.ifi_opackets = ifp->if_data.ifi_opackets;
-	oifm.ifm_data.ifi_oerrors = ifp->if_data.ifi_oerrors;
-	oifm.ifm_data.ifi_collisions = ifp->if_data.ifi_collisions;
-	oifm.ifm_data.ifi_ibytes = ifp->if_data.ifi_ibytes;
-	oifm.ifm_data.ifi_obytes = ifp->if_data.ifi_obytes;
-	oifm.ifm_data.ifi_imcasts = ifp->if_data.ifi_imcasts;
-	oifm.ifm_data.ifi_omcasts = ifp->if_data.ifi_omcasts;
-	oifm.ifm_data.ifi_iqdrops = ifp->if_data.ifi_iqdrops;
-	oifm.ifm_data.ifi_noproto = ifp->if_data.ifi_noproto;
+	oifm.ifm_data.ifi_type = ifi.ifi_type;
+	oifm.ifm_data.ifi_addrlen = ifi.ifi_addrlen;
+	oifm.ifm_data.ifi_hdrlen = ifi.ifi_hdrlen;
+	oifm.ifm_data.ifi_link_state = ifi.ifi_link_state;
+	oifm.ifm_data.ifi_mtu = ifi.ifi_mtu;
+	oifm.ifm_data.ifi_metric = ifi.ifi_metric;
+	oifm.ifm_data.ifi_baudrate = ifi.ifi_baudrate;
+	oifm.ifm_data.ifi_ipackets = ifi.ifi_ipackets;
+	oifm.ifm_data.ifi_ierrors = ifi.ifi_ierrors;
+	oifm.ifm_data.ifi_opackets = ifi.ifi_opackets;
+	oifm.ifm_data.ifi_oerrors = ifi.ifi_oerrors;
+	oifm.ifm_data.ifi_collisions = ifi.ifi_collisions;
+	oifm.ifm_data.ifi_ibytes = ifi.ifi_ibytes;
+	oifm.ifm_data.ifi_obytes = ifi.ifi_obytes;
+	oifm.ifm_data.ifi_imcasts = ifi.ifi_imcasts;
+	oifm.ifm_data.ifi_omcasts = ifi.ifi_omcasts;
+	oifm.ifm_data.ifi_iqdrops = ifi.ifi_iqdrops;
+	oifm.ifm_data.ifi_noproto = ifi.ifi_noproto;
 	TIMESPEC_TO_TIMEVAL(&oifm.ifm_data.ifi_lastchange,
-	    &ifp->if_data.ifi_lastchange);
+	    &ifi.ifi_lastchange);
 	oifm.ifm_addrs = 0;
 	m = COMPATNAME(rt_msg1)(RTM_OIFINFO, &info, (void *)&oifm, sizeof(oifm));
 	if (m == NULL)
@@ -118,31 +120,33 @@ compat_50_iflist(struct ifnet *ifp, stru
     struct rt_addrinfo *info, size_t len)
 {
 	struct if_msghdr50 *ifm;
+	struct if_data ifi;
 	int error;
 
 	ifm = (struct if_msghdr50 *)w->w_tmem;
+	if_export_if_data(ifp, &ifi, false);
 	ifm->ifm_index = ifp->if_index;
 	ifm->ifm_flags = ifp->if_flags;
-	ifm->ifm_data.ifi_type = ifp->if_data.ifi_type;
-	ifm->ifm_data.ifi_addrlen = ifp->if_data.ifi_addrlen;
-	ifm->ifm_data.ifi_hdrlen = ifp->if_data.ifi_hdrlen;
-	ifm->ifm_data.ifi_link_state = ifp->if_data.ifi_link_state;
-	ifm->ifm_data.ifi_mtu = ifp->if_data.ifi_mtu;
-	ifm->ifm_data.ifi_metric = ifp->if_data.ifi_metric;
-	ifm->ifm_data.ifi_baudrate = ifp->if_data.ifi_baudrate;
-	ifm->ifm_data.ifi_ipackets = ifp->if_data.ifi_ipackets;
-	ifm->ifm_data.ifi_ierrors = ifp->if_data.ifi_ierrors;
-	ifm->ifm_data.ifi_opackets = ifp->if_data.ifi_opackets;
-	ifm->ifm_data.ifi_oerrors = ifp->if_data.ifi_oerrors;
-	ifm->ifm_data.ifi_collisions = ifp->if_data.ifi_collisions;
-	ifm->ifm_data.ifi_ibytes = ifp->if_data.ifi_ibytes;
-	ifm->ifm_data.ifi_obytes = ifp->if_data.ifi_obytes;
-	ifm->ifm_data.ifi_imcasts = ifp->if_data.ifi_imcasts;
-	ifm->ifm_data.ifi_omcasts = ifp->if_data.ifi_omcasts;
-	ifm->ifm_data.ifi_iqdrops = ifp->if_data.ifi_iqdrops;
-	ifm->ifm_data.ifi_noproto = ifp->if_data.ifi_noproto;
+	ifm->ifm_data.ifi_type = ifi.ifi_type;
+	ifm->ifm_data.ifi_addrlen = ifi.ifi_addrlen;
+	ifm->ifm_data.ifi_hdrlen = ifi.ifi_hdrlen;
+	ifm->ifm_data.ifi_link_state = ifi.ifi_link_state;
+	ifm->ifm_data.ifi_mtu = ifi.ifi_mtu;
+	ifm->ifm_data.ifi_metric = ifi.ifi_metric;
+	ifm->ifm_data.ifi_baudrate = ifi.ifi_baudrate;
+	ifm->ifm_data.ifi_ipackets = ifi.ifi_ipackets;
+	ifm->ifm_data.ifi_ierrors = ifi.ifi_ierrors;
+	ifm->ifm_data.ifi_opackets = ifi.ifi_opackets;
+	ifm->ifm_data.ifi_oerrors = ifi.ifi_oerrors;
+	ifm->ifm_data.ifi_collisions = ifi.ifi_collisions;
+	ifm->ifm_data.ifi_ibytes = ifi.ifi_ibytes;
+	ifm->ifm_data.ifi_obytes = ifi.ifi_obytes;
+	ifm->ifm_data.ifi_imcasts = ifi.ifi_imcasts;
+	ifm->ifm_data.ifi_omcasts = ifi.ifi_omcasts;
+	ifm->ifm_data.ifi_iqdrops = ifi.ifi_iqdrops;
+	ifm->ifm_data.ifi_noproto = ifi.ifi_noproto;
 	TIMESPEC_TO_TIMEVAL(&ifm->ifm_data.ifi_lastchange,
-	    &ifp->if_data.ifi_lastchange);
+	    &ifi.ifi_lastchange);
 	ifm->ifm_addrs = info->rti_addrs;
 	error = copyout(ifm, w->w_where, len);
 	if (error)

Reply via email to