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)