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> */