diff options
Diffstat (limited to 'package/network/utils/ethtool/patches/100-uapi-Bring-in-if-h.patch')
-rw-r--r-- | package/network/utils/ethtool/patches/100-uapi-Bring-in-if-h.patch | 465 |
1 files changed, 0 insertions, 465 deletions
diff --git a/package/network/utils/ethtool/patches/100-uapi-Bring-in-if-h.patch b/package/network/utils/ethtool/patches/100-uapi-Bring-in-if-h.patch deleted file mode 100644 index 09be05c1f6..0000000000 --- a/package/network/utils/ethtool/patches/100-uapi-Bring-in-if-h.patch +++ /dev/null @@ -1,465 +0,0 @@ -From: Florian Fainelli <f.fainelli@gmail.com> -To: netdev@vger.kernel.org -Subject: [PATCH ethtool v2 1/3] uapi: Bring in if.h -Date: Sat, 14 Jan 2023 08:34:09 -0800 - -Bring in if.h from commit eec517cdb481 ("net: Add IF_OPER_TESTING") as -well as uapi/linux/hdlc/ioctl.h. Ensure that we define all of the -necessary guards to provide updated definitions of ifmap, ifreq and -IFNAMSIZ. This resolves build issues with kernel headers < 4.11 which -lacked 2618be7dccf8739b89e1906b64bd8d551af351e6 ("uapi: fix linux/if.h -userspace compilation errors"). - -Fixes: 1fa60003a8b8 ("misc: header includes cleanup") -Reported-by: Markus Mayer <mmayer@broadcom.com> -Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> ---- - Makefile.am | 6 +- - internal.h | 7 +- - uapi/linux/hdlc/ioctl.h | 94 +++++++++++++ - uapi/linux/if.h | 296 ++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 397 insertions(+), 6 deletions(-) - create mode 100644 uapi/linux/hdlc/ioctl.h - create mode 100644 uapi/linux/if.h - ---- a/Makefile.am -+++ b/Makefile.am -@@ -7,7 +7,8 @@ EXTRA_DIST = LICENSE ethtool.8 ethtool.s - - sbin_PROGRAMS = ethtool - ethtool_SOURCES = ethtool.c uapi/linux/ethtool.h internal.h \ -- uapi/linux/net_tstamp.h rxclass.c common.c common.h \ -+ uapi/linux/net_tstamp.h uapi/linux/if.h uapi/linux/hdlc/ioctl.h \ -+ rxclass.c common.c common.h \ - json_writer.c json_writer.h json_print.c json_print.h \ - list.h - if ETHTOOL_ENABLE_PRETTY_DUMP -@@ -43,7 +44,8 @@ ethtool_SOURCES += \ - netlink/desc-rtnl.c netlink/cable_test.c netlink/tunnels.c \ - uapi/linux/ethtool_netlink.h \ - uapi/linux/netlink.h uapi/linux/genetlink.h \ -- uapi/linux/rtnetlink.h uapi/linux/if_link.h -+ uapi/linux/rtnetlink.h uapi/linux/if_link.h \ -+ uapi/linux/if.h uapi/linux/hdlc/ioctl.h - AM_CPPFLAGS += @MNL_CFLAGS@ - LDADD += @MNL_LIBS@ - endif ---- a/internal.h -+++ b/internal.h -@@ -21,6 +21,9 @@ - #include <unistd.h> - #include <endian.h> - #include <sys/ioctl.h> -+#define __UAPI_DEF_IF_IFNAMSIZ 1 -+#define __UAPI_DEF_IF_IFMAP 1 -+#define __UAPI_DEF_IF_IFREQ 1 - #include <linux/if.h> - - #include "json_writer.h" -@@ -52,10 +55,6 @@ typedef int32_t s32; - #define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) - #endif - --#ifndef ALTIFNAMSIZ --#define ALTIFNAMSIZ 128 --#endif -- - #include <linux/ethtool.h> - #include <linux/net_tstamp.h> - ---- /dev/null -+++ b/uapi/linux/hdlc/ioctl.h -@@ -0,0 +1,94 @@ -+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ -+#ifndef __HDLC_IOCTL_H__ -+#define __HDLC_IOCTL_H__ -+ -+ -+#define GENERIC_HDLC_VERSION 4 /* For synchronization with sethdlc utility */ -+ -+#define CLOCK_DEFAULT 0 /* Default setting */ -+#define CLOCK_EXT 1 /* External TX and RX clock - DTE */ -+#define CLOCK_INT 2 /* Internal TX and RX clock - DCE */ -+#define CLOCK_TXINT 3 /* Internal TX and external RX clock */ -+#define CLOCK_TXFROMRX 4 /* TX clock derived from external RX clock */ -+ -+ -+#define ENCODING_DEFAULT 0 /* Default setting */ -+#define ENCODING_NRZ 1 -+#define ENCODING_NRZI 2 -+#define ENCODING_FM_MARK 3 -+#define ENCODING_FM_SPACE 4 -+#define ENCODING_MANCHESTER 5 -+ -+ -+#define PARITY_DEFAULT 0 /* Default setting */ -+#define PARITY_NONE 1 /* No parity */ -+#define PARITY_CRC16_PR0 2 /* CRC16, initial value 0x0000 */ -+#define PARITY_CRC16_PR1 3 /* CRC16, initial value 0xFFFF */ -+#define PARITY_CRC16_PR0_CCITT 4 /* CRC16, initial 0x0000, ITU-T version */ -+#define PARITY_CRC16_PR1_CCITT 5 /* CRC16, initial 0xFFFF, ITU-T version */ -+#define PARITY_CRC32_PR0_CCITT 6 /* CRC32, initial value 0x00000000 */ -+#define PARITY_CRC32_PR1_CCITT 7 /* CRC32, initial value 0xFFFFFFFF */ -+ -+#define LMI_DEFAULT 0 /* Default setting */ -+#define LMI_NONE 1 /* No LMI, all PVCs are static */ -+#define LMI_ANSI 2 /* ANSI Annex D */ -+#define LMI_CCITT 3 /* ITU-T Annex A */ -+#define LMI_CISCO 4 /* The "original" LMI, aka Gang of Four */ -+ -+#ifndef __ASSEMBLY__ -+ -+typedef struct { -+ unsigned int clock_rate; /* bits per second */ -+ unsigned int clock_type; /* internal, external, TX-internal etc. */ -+ unsigned short loopback; -+} sync_serial_settings; /* V.35, V.24, X.21 */ -+ -+typedef struct { -+ unsigned int clock_rate; /* bits per second */ -+ unsigned int clock_type; /* internal, external, TX-internal etc. */ -+ unsigned short loopback; -+ unsigned int slot_map; -+} te1_settings; /* T1, E1 */ -+ -+typedef struct { -+ unsigned short encoding; -+ unsigned short parity; -+} raw_hdlc_proto; -+ -+typedef struct { -+ unsigned int t391; -+ unsigned int t392; -+ unsigned int n391; -+ unsigned int n392; -+ unsigned int n393; -+ unsigned short lmi; -+ unsigned short dce; /* 1 for DCE (network side) operation */ -+} fr_proto; -+ -+typedef struct { -+ unsigned int dlci; -+} fr_proto_pvc; /* for creating/deleting FR PVCs */ -+ -+typedef struct { -+ unsigned int dlci; -+ char master[IFNAMSIZ]; /* Name of master FRAD device */ -+}fr_proto_pvc_info; /* for returning PVC information only */ -+ -+typedef struct { -+ unsigned int interval; -+ unsigned int timeout; -+} cisco_proto; -+ -+typedef struct { -+ unsigned short dce; /* 1 for DCE (network side) operation */ -+ unsigned int modulo; /* modulo (8 = basic / 128 = extended) */ -+ unsigned int window; /* frame window size */ -+ unsigned int t1; /* timeout t1 */ -+ unsigned int t2; /* timeout t2 */ -+ unsigned int n2; /* frame retry counter */ -+} x25_hdlc_proto; -+ -+/* PPP doesn't need any info now - supply length = 0 to ioctl */ -+ -+#endif /* __ASSEMBLY__ */ -+#endif /* __HDLC_IOCTL_H__ */ ---- /dev/null -+++ b/uapi/linux/if.h -@@ -0,0 +1,296 @@ -+/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ -+/* -+ * INET An implementation of the TCP/IP protocol suite for the LINUX -+ * operating system. INET is implemented using the BSD Socket -+ * interface as the means of communication with the user level. -+ * -+ * Global definitions for the INET interface module. -+ * -+ * Version: @(#)if.h 1.0.2 04/18/93 -+ * -+ * Authors: Original taken from Berkeley UNIX 4.3, (c) UCB 1982-1988 -+ * Ross Biro -+ * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version -+ * 2 of the License, or (at your option) any later version. -+ */ -+#ifndef _LINUX_IF_H -+#define _LINUX_IF_H -+ -+#include <linux/libc-compat.h> /* for compatibility with glibc */ -+#include <linux/types.h> /* for "__kernel_caddr_t" et al */ -+#include <linux/socket.h> /* for "struct sockaddr" et al */ -+ /* for "__user" et al */ -+ -+#include <sys/socket.h> /* for struct sockaddr. */ -+ -+#if __UAPI_DEF_IF_IFNAMSIZ -+#define IFNAMSIZ 16 -+#endif /* __UAPI_DEF_IF_IFNAMSIZ */ -+#define IFALIASZ 256 -+#define ALTIFNAMSIZ 128 -+#include <linux/hdlc/ioctl.h> -+ -+/* For glibc compatibility. An empty enum does not compile. */ -+#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || \ -+ __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0 -+/** -+ * enum net_device_flags - &struct net_device flags -+ * -+ * These are the &struct net_device flags, they can be set by drivers, the -+ * kernel and some can be triggered by userspace. Userspace can query and -+ * set these flags using userspace utilities but there is also a sysfs -+ * entry available for all dev flags which can be queried and set. These flags -+ * are shared for all types of net_devices. The sysfs entries are available -+ * via /sys/class/net/<dev>/flags. Flags which can be toggled through sysfs -+ * are annotated below, note that only a few flags can be toggled and some -+ * other flags are always preserved from the original net_device flags -+ * even if you try to set them via sysfs. Flags which are always preserved -+ * are kept under the flag grouping @IFF_VOLATILE. Flags which are __volatile__ -+ * are annotated below as such. -+ * -+ * You should have a pretty good reason to be extending these flags. -+ * -+ * @IFF_UP: interface is up. Can be toggled through sysfs. -+ * @IFF_BROADCAST: broadcast address valid. Volatile. -+ * @IFF_DEBUG: turn on debugging. Can be toggled through sysfs. -+ * @IFF_LOOPBACK: is a loopback net. Volatile. -+ * @IFF_POINTOPOINT: interface is has p-p link. Volatile. -+ * @IFF_NOTRAILERS: avoid use of trailers. Can be toggled through sysfs. -+ * Volatile. -+ * @IFF_RUNNING: interface RFC2863 OPER_UP. Volatile. -+ * @IFF_NOARP: no ARP protocol. Can be toggled through sysfs. Volatile. -+ * @IFF_PROMISC: receive all packets. Can be toggled through sysfs. -+ * @IFF_ALLMULTI: receive all multicast packets. Can be toggled through -+ * sysfs. -+ * @IFF_MASTER: master of a load balancer. Volatile. -+ * @IFF_SLAVE: slave of a load balancer. Volatile. -+ * @IFF_MULTICAST: Supports multicast. Can be toggled through sysfs. -+ * @IFF_PORTSEL: can set media type. Can be toggled through sysfs. -+ * @IFF_AUTOMEDIA: auto media select active. Can be toggled through sysfs. -+ * @IFF_DYNAMIC: dialup device with changing addresses. Can be toggled -+ * through sysfs. -+ * @IFF_LOWER_UP: driver signals L1 up. Volatile. -+ * @IFF_DORMANT: driver signals dormant. Volatile. -+ * @IFF_ECHO: echo sent packets. Volatile. -+ */ -+enum net_device_flags { -+/* for compatibility with glibc net/if.h */ -+#if __UAPI_DEF_IF_NET_DEVICE_FLAGS -+ IFF_UP = 1<<0, /* sysfs */ -+ IFF_BROADCAST = 1<<1, /* __volatile__ */ -+ IFF_DEBUG = 1<<2, /* sysfs */ -+ IFF_LOOPBACK = 1<<3, /* __volatile__ */ -+ IFF_POINTOPOINT = 1<<4, /* __volatile__ */ -+ IFF_NOTRAILERS = 1<<5, /* sysfs */ -+ IFF_RUNNING = 1<<6, /* __volatile__ */ -+ IFF_NOARP = 1<<7, /* sysfs */ -+ IFF_PROMISC = 1<<8, /* sysfs */ -+ IFF_ALLMULTI = 1<<9, /* sysfs */ -+ IFF_MASTER = 1<<10, /* __volatile__ */ -+ IFF_SLAVE = 1<<11, /* __volatile__ */ -+ IFF_MULTICAST = 1<<12, /* sysfs */ -+ IFF_PORTSEL = 1<<13, /* sysfs */ -+ IFF_AUTOMEDIA = 1<<14, /* sysfs */ -+ IFF_DYNAMIC = 1<<15, /* sysfs */ -+#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS */ -+#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO -+ IFF_LOWER_UP = 1<<16, /* __volatile__ */ -+ IFF_DORMANT = 1<<17, /* __volatile__ */ -+ IFF_ECHO = 1<<18, /* __volatile__ */ -+#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */ -+}; -+#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0 */ -+ -+/* for compatibility with glibc net/if.h */ -+#if __UAPI_DEF_IF_NET_DEVICE_FLAGS -+#define IFF_UP IFF_UP -+#define IFF_BROADCAST IFF_BROADCAST -+#define IFF_DEBUG IFF_DEBUG -+#define IFF_LOOPBACK IFF_LOOPBACK -+#define IFF_POINTOPOINT IFF_POINTOPOINT -+#define IFF_NOTRAILERS IFF_NOTRAILERS -+#define IFF_RUNNING IFF_RUNNING -+#define IFF_NOARP IFF_NOARP -+#define IFF_PROMISC IFF_PROMISC -+#define IFF_ALLMULTI IFF_ALLMULTI -+#define IFF_MASTER IFF_MASTER -+#define IFF_SLAVE IFF_SLAVE -+#define IFF_MULTICAST IFF_MULTICAST -+#define IFF_PORTSEL IFF_PORTSEL -+#define IFF_AUTOMEDIA IFF_AUTOMEDIA -+#define IFF_DYNAMIC IFF_DYNAMIC -+#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS */ -+ -+#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO -+#define IFF_LOWER_UP IFF_LOWER_UP -+#define IFF_DORMANT IFF_DORMANT -+#define IFF_ECHO IFF_ECHO -+#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */ -+ -+#define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\ -+ IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT) -+ -+#define IF_GET_IFACE 0x0001 /* for querying only */ -+#define IF_GET_PROTO 0x0002 -+ -+/* For definitions see hdlc.h */ -+#define IF_IFACE_V35 0x1000 /* V.35 serial interface */ -+#define IF_IFACE_V24 0x1001 /* V.24 serial interface */ -+#define IF_IFACE_X21 0x1002 /* X.21 serial interface */ -+#define IF_IFACE_T1 0x1003 /* T1 telco serial interface */ -+#define IF_IFACE_E1 0x1004 /* E1 telco serial interface */ -+#define IF_IFACE_SYNC_SERIAL 0x1005 /* can't be set by software */ -+#define IF_IFACE_X21D 0x1006 /* X.21 Dual Clocking (FarSite) */ -+ -+/* For definitions see hdlc.h */ -+#define IF_PROTO_HDLC 0x2000 /* raw HDLC protocol */ -+#define IF_PROTO_PPP 0x2001 /* PPP protocol */ -+#define IF_PROTO_CISCO 0x2002 /* Cisco HDLC protocol */ -+#define IF_PROTO_FR 0x2003 /* Frame Relay protocol */ -+#define IF_PROTO_FR_ADD_PVC 0x2004 /* Create FR PVC */ -+#define IF_PROTO_FR_DEL_PVC 0x2005 /* Delete FR PVC */ -+#define IF_PROTO_X25 0x2006 /* X.25 */ -+#define IF_PROTO_HDLC_ETH 0x2007 /* raw HDLC, Ethernet emulation */ -+#define IF_PROTO_FR_ADD_ETH_PVC 0x2008 /* Create FR Ethernet-bridged PVC */ -+#define IF_PROTO_FR_DEL_ETH_PVC 0x2009 /* Delete FR Ethernet-bridged PVC */ -+#define IF_PROTO_FR_PVC 0x200A /* for reading PVC status */ -+#define IF_PROTO_FR_ETH_PVC 0x200B -+#define IF_PROTO_RAW 0x200C /* RAW Socket */ -+ -+/* RFC 2863 operational status */ -+enum { -+ IF_OPER_UNKNOWN, -+ IF_OPER_NOTPRESENT, -+ IF_OPER_DOWN, -+ IF_OPER_LOWERLAYERDOWN, -+ IF_OPER_TESTING, -+ IF_OPER_DORMANT, -+ IF_OPER_UP, -+}; -+ -+/* link modes */ -+enum { -+ IF_LINK_MODE_DEFAULT, -+ IF_LINK_MODE_DORMANT, /* limit upward transition to dormant */ -+ IF_LINK_MODE_TESTING, /* limit upward transition to testing */ -+}; -+ -+/* -+ * Device mapping structure. I'd just gone off and designed a -+ * beautiful scheme using only loadable modules with arguments -+ * for driver options and along come the PCMCIA people 8) -+ * -+ * Ah well. The get() side of this is good for WDSETUP, and it'll -+ * be handy for debugging things. The set side is fine for now and -+ * being very small might be worth keeping for clean configuration. -+ */ -+ -+/* for compatibility with glibc net/if.h */ -+#if __UAPI_DEF_IF_IFMAP -+struct ifmap { -+ unsigned long mem_start; -+ unsigned long mem_end; -+ unsigned short base_addr; -+ unsigned char irq; -+ unsigned char dma; -+ unsigned char port; -+ /* 3 bytes spare */ -+}; -+#endif /* __UAPI_DEF_IF_IFMAP */ -+ -+struct if_settings { -+ unsigned int type; /* Type of physical device or protocol */ -+ unsigned int size; /* Size of the data allocated by the caller */ -+ union { -+ /* {atm/eth/dsl}_settings anyone ? */ -+ raw_hdlc_proto *raw_hdlc; -+ cisco_proto *cisco; -+ fr_proto *fr; -+ fr_proto_pvc *fr_pvc; -+ fr_proto_pvc_info *fr_pvc_info; -+ x25_hdlc_proto *x25; -+ -+ /* interface settings */ -+ sync_serial_settings *sync; -+ te1_settings *te1; -+ } ifs_ifsu; -+}; -+ -+/* -+ * Interface request structure used for socket -+ * ioctl's. All interface ioctl's must have parameter -+ * definitions which begin with ifr_name. The -+ * remainder may be interface specific. -+ */ -+ -+/* for compatibility with glibc net/if.h */ -+#if __UAPI_DEF_IF_IFREQ -+struct ifreq { -+#define IFHWADDRLEN 6 -+ union -+ { -+ char ifrn_name[IFNAMSIZ]; /* if name, e.g. "en0" */ -+ } ifr_ifrn; -+ -+ union { -+ struct sockaddr ifru_addr; -+ struct sockaddr ifru_dstaddr; -+ struct sockaddr ifru_broadaddr; -+ struct sockaddr ifru_netmask; -+ struct sockaddr ifru_hwaddr; -+ short ifru_flags; -+ int ifru_ivalue; -+ int ifru_mtu; -+ struct ifmap ifru_map; -+ char ifru_slave[IFNAMSIZ]; /* Just fits the size */ -+ char ifru_newname[IFNAMSIZ]; -+ void * ifru_data; -+ struct if_settings ifru_settings; -+ } ifr_ifru; -+}; -+#endif /* __UAPI_DEF_IF_IFREQ */ -+ -+#define ifr_name ifr_ifrn.ifrn_name /* interface name */ -+#define ifr_hwaddr ifr_ifru.ifru_hwaddr /* MAC address */ -+#define ifr_addr ifr_ifru.ifru_addr /* address */ -+#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-p lnk */ -+#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */ -+#define ifr_netmask ifr_ifru.ifru_netmask /* interface net mask */ -+#define ifr_flags ifr_ifru.ifru_flags /* flags */ -+#define ifr_metric ifr_ifru.ifru_ivalue /* metric */ -+#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */ -+#define ifr_map ifr_ifru.ifru_map /* device map */ -+#define ifr_slave ifr_ifru.ifru_slave /* slave device */ -+#define ifr_data ifr_ifru.ifru_data /* for use by interface */ -+#define ifr_ifindex ifr_ifru.ifru_ivalue /* interface index */ -+#define ifr_bandwidth ifr_ifru.ifru_ivalue /* link bandwidth */ -+#define ifr_qlen ifr_ifru.ifru_ivalue /* Queue length */ -+#define ifr_newname ifr_ifru.ifru_newname /* New name */ -+#define ifr_settings ifr_ifru.ifru_settings /* Device/proto settings*/ -+ -+/* -+ * Structure used in SIOCGIFCONF request. -+ * Used to retrieve interface configuration -+ * for machine (useful for programs which -+ * must know all networks accessible). -+ */ -+ -+/* for compatibility with glibc net/if.h */ -+#if __UAPI_DEF_IF_IFCONF -+struct ifconf { -+ int ifc_len; /* size of buffer */ -+ union { -+ char *ifcu_buf; -+ struct ifreq *ifcu_req; -+ } ifc_ifcu; -+}; -+#endif /* __UAPI_DEF_IF_IFCONF */ -+ -+#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */ -+#define ifc_req ifc_ifcu.ifcu_req /* array of structures */ -+ -+#endif /* _LINUX_IF_H */ |