Module Name: src
Committed By: martin
Date: Sat Oct 26 15:53:47 UTC 2024
Modified Files:
src/sys/compat/netbsd32 [netbsd-10]: netbsd32_ioctl.c netbsd32_ioctl.h
Log Message:
Pull up following revision(s) (requested by rin in ticket #988):
sys/compat/netbsd32/netbsd32_ioctl.h: revision 1.80
sys/compat/netbsd32/netbsd32_ioctl.c: revision 1.121
PR 58235: add support for SIOCGIFDATA and SIOCZIFDATA ioctls.
To generate a diff of this commit:
cvs rdiff -u -r1.120 -r1.120.4.1 src/sys/compat/netbsd32/netbsd32_ioctl.c
cvs rdiff -u -r1.79 -r1.79.4.1 src/sys/compat/netbsd32/netbsd32_ioctl.h
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/netbsd32/netbsd32_ioctl.c
diff -u src/sys/compat/netbsd32/netbsd32_ioctl.c:1.120 src/sys/compat/netbsd32/netbsd32_ioctl.c:1.120.4.1
--- src/sys/compat/netbsd32/netbsd32_ioctl.c:1.120 Wed Dec 22 00:21:32 2021
+++ src/sys/compat/netbsd32/netbsd32_ioctl.c Sat Oct 26 15:53:47 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_ioctl.c,v 1.120 2021/12/22 00:21:32 roy Exp $ */
+/* $NetBSD: netbsd32_ioctl.c,v 1.120.4.1 2024/10/26 15:53:47 martin Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_ioctl.c,v 1.120 2021/12/22 00:21:32 roy Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_ioctl.c,v 1.120.4.1 2024/10/26 15:53:47 martin Exp $");
#if defined(_KERNEL_OPT)
#include "opt_ntp.h"
@@ -151,6 +151,20 @@ netbsd32_to_oifreq(struct netbsd32_oifre
}
static inline void
+netbsd32_to_ifdatareq(struct netbsd32_ifdatareq *s32p, struct ifdatareq *p, u_long cmd)
+{
+
+ memcpy(p, s32p, sizeof *s32p);
+ switch (cmd) {
+ case SIOCGIFDATA:
+ case SIOCZIFDATA:
+ netbsd32_to_timespec(&s32p->ifdr_data.ifi_lastchange,
+ &p->ifdr_data.ifi_lastchange);
+ break;
+ }
+}
+
+static inline void
netbsd32_to_if_addrprefreq(const struct netbsd32_if_addrprefreq *ifap32,
struct if_addrprefreq *ifap, u_long cmd)
{
@@ -693,6 +707,20 @@ netbsd32_from_oifreq(struct oifreq *p,
}
static inline void
+netbsd32_from_ifdatareq(const struct ifdatareq *p, struct netbsd32_ifdatareq *p32, u_long cmd)
+{
+
+ memcpy(p32, p, sizeof *p32);
+ switch (cmd) {
+ case SIOCGIFDATA:
+ case SIOCZIFDATA:
+ netbsd32_from_timespec(&p->ifdr_data.ifi_lastchange,
+ &p32->ifdr_data.ifi_lastchange);
+ break;
+ }
+}
+
+static inline void
netbsd32_from_if_addrprefreq(const struct if_addrprefreq *ifap,
struct netbsd32_if_addrprefreq *ifap32, u_long cmd)
{
@@ -1537,6 +1565,10 @@ netbsd32_ioctl(struct lwp *l,
case SIOCSIFADDRPREF32:
IOCTL_STRUCT_CONV_TO(SIOCSIFADDRPREF, if_addrprefreq);
+ case SIOCGIFDATA32:
+ IOCTL_STRUCT_CONV_TO(SIOCGIFDATA, ifdatareq);
+ case SIOCZIFDATA32:
+ IOCTL_STRUCT_CONV_TO(SIOCZIFDATA, ifdatareq);
case OSIOCGIFFLAGS32:
IOCTL_STRUCT_CONV_TO(OSIOCGIFFLAGS, oifreq);
Index: src/sys/compat/netbsd32/netbsd32_ioctl.h
diff -u src/sys/compat/netbsd32/netbsd32_ioctl.h:1.79 src/sys/compat/netbsd32/netbsd32_ioctl.h:1.79.4.1
--- src/sys/compat/netbsd32/netbsd32_ioctl.h:1.79 Wed Dec 22 00:21:32 2021
+++ src/sys/compat/netbsd32/netbsd32_ioctl.h Sat Oct 26 15:53:47 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_ioctl.h,v 1.79 2021/12/22 00:21:32 roy Exp $ */
+/* $NetBSD: netbsd32_ioctl.h,v 1.79.4.1 2024/10/26 15:53:47 martin Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@@ -316,6 +316,35 @@ struct netbsd32_if_clonereq {
netbsd32_charp ifcr_buffer;
};
+struct netbsd32_if_data {
+ u_char ifi_type;
+ u_char ifi_addrlen;
+ u_char ifi_hdrlen;
+ u_char __pack_dummy;
+ int ifi_link_state;
+ uint64_t ifi_mtu;
+ uint64_t ifi_metric;
+ uint64_t ifi_baudrate;
+ uint64_t ifi_ipackets;
+ uint64_t ifi_ierrors;
+ uint64_t ifi_opackets;
+ uint64_t ifi_oerrors;
+ uint64_t ifi_collisions;
+ uint64_t ifi_ibytes;
+ uint64_t ifi_obytes;
+ uint64_t ifi_imcasts;
+ uint64_t ifi_omcasts;
+ uint64_t ifi_iqdrops;
+ uint64_t ifi_noproto;
+ struct netbsd32_timespec ifi_lastchange;
+} __packed;
+
+struct netbsd32_ifdatareq {
+ char ifdr_name[IFNAMSIZ]; /* if name, e.g. "en0" */
+ struct netbsd32_if_data ifdr_data;
+};
+
+
/* from <dev/pci/if_devar.h> */
#define SIOCGADDRROM32 _IOW('i', 240, struct netbsd32_ifreq) /* get 128 bytes of ROM */
#define SIOCGCHIPID32 _IOWR('i', 241, struct netbsd32_ifreq) /* get chipid */
@@ -388,6 +417,10 @@ struct netbsd32_if_clonereq {
#define SIOCGIFMTU32 _IOWR('i', 126, struct netbsd32_ifreq) /* get ifnet mtu */
#define OSIOCGIFMTU32 _IOWR('i', 126, struct netbsd32_oifreq) /* get ifnet mtu */
+
+#define SIOCGIFDATA32 _IOWR('i', 133, struct netbsd32_ifdatareq)
+#define SIOCZIFDATA32 _IOWR('i', 134, struct netbsd32_ifdatareq)
+
/* was 125 SIOCSIFASYNCMAP32 */
/* was 124 SIOCGIFASYNCMAP32 */
/* from <net/bpf.h> */