Message ID | 20210813120803.101-2-caihuoqing@baidu.com |
---|---|
State | New |
Headers | show |
Series | [1/2] net: Remove net/ipx.h and uapi/linux/ipx.h header files | expand |
On Fri, Aug 13, 2021 at 08:08:02PM +0800, Cai Huoqing wrote: > commit <47595e32869f> ("<MAINTAINERS: Mark some staging directories>") > indicated the ipx network layer as obsolete in Jan 2018, > updated in the MAINTAINERS file > > now, after being exposed for 3 years to refactoring, so to > delete uapi/linux/ipx.h and net/ipx.h header files for good. > additionally, there is no module that depends on ipx.h except > a broken staging driver(r8188eu) > > Signed-off-by: Cai Huoqing <caihuoqing@baidu.com> This removal breaks audit[1] and potentially breaks strace[2][3], at least. [1] https://github.com/linux-audit/audit-userspace/blob/ce58837d44b7d9fcb4e140c23f68e0c94d95ab6e/auparse/interpret.c#L48 [2] https://gitlab.com/strace/strace/-/blob/9fe63f42df8badd22fb7eef9c12fc07ed7106d6b/src/net.c#L34 [3] https://gitlab.com/strace/strace/-/blob/9fe63f42df8badd22fb7eef9c12fc07ed7106d6b/src/sockaddr.c#L30
Adding linux-audit, strace-devel, and linux-api to CC:. On Wed, Sep 01, 2021 at 06:02:44PM +0200, Eugene Syromiatnikov wrote: > On Fri, Aug 13, 2021 at 08:08:02PM +0800, Cai Huoqing wrote: > > commit <47595e32869f> ("<MAINTAINERS: Mark some staging directories>") > > indicated the ipx network layer as obsolete in Jan 2018, > > updated in the MAINTAINERS file > > > > now, after being exposed for 3 years to refactoring, so to > > delete uapi/linux/ipx.h and net/ipx.h header files for good. > > additionally, there is no module that depends on ipx.h except > > a broken staging driver(r8188eu) > > > > Signed-off-by: Cai Huoqing <caihuoqing@baidu.com> > > This removal breaks audit[1] and potentially breaks strace[2][3], at least. > > [1] https://github.com/linux-audit/audit-userspace/blob/ce58837d44b7d9fcb4e140c23f68e0c94d95ab6e/auparse/interpret.c#L48 > [2] https://gitlab.com/strace/strace/-/blob/9fe63f42df8badd22fb7eef9c12fc07ed7106d6b/src/net.c#L34 > [3] https://gitlab.com/strace/strace/-/blob/9fe63f42df8badd22fb7eef9c12fc07ed7106d6b/src/sockaddr.c#L30
Hello, Thanks for the heads up. On Wednesday, September 1, 2021 12:52:02 PM EDT Eugene Syromiatnikov wrote: > Adding linux-audit, strace-devel, and linux-api to CC:. > > On Wed, Sep 01, 2021 at 06:02:44PM +0200, Eugene Syromiatnikov wrote: > > On Fri, Aug 13, 2021 at 08:08:02PM +0800, Cai Huoqing wrote: > > > commit <47595e32869f> ("<MAINTAINERS: Mark some staging directories>") > > > indicated the ipx network layer as obsolete in Jan 2018, > > > updated in the MAINTAINERS file > > > > > > now, after being exposed for 3 years to refactoring, so to > > > delete uapi/linux/ipx.h and net/ipx.h header files for good. > > > additionally, there is no module that depends on ipx.h except > > > a broken staging driver(r8188eu) > > > > > > Signed-off-by: Cai Huoqing <caihuoqing@baidu.com> > > > > This removal breaks audit[1] and potentially breaks strace[2][3], at > > least. I wouldn't say breaks so much as needs coordination with. :-) If ipx is being dropped in its entirety, I can just make that part of the code conditional to the header existing. -Steve > > [1] > > https://github.com/linux-audit/audit-userspace/blob/ce58837d44b7d9fcb4e1 > > 40c23f68e0c94d95ab6e/auparse/interpret.c#L48 [2] > > https://gitlab.com/strace/strace/-/blob/9fe63f42df8badd22fb7eef9c12fc07e > > d7106d6b/src/net.c#L34 [3] > > https://gitlab.com/strace/strace/-/blob/9fe63f42df8badd22fb7eef9c12fc07e > > d7106d6b/src/sockaddr.c#L30
On 01 Sep 21 13:36:54, Steve Grubb wrote: > Hello, > > Thanks for the heads up. > > On Wednesday, September 1, 2021 12:52:02 PM EDT Eugene Syromiatnikov wrote: > > Adding linux-audit, strace-devel, and linux-api to CC:. > > > > On Wed, Sep 01, 2021 at 06:02:44PM +0200, Eugene Syromiatnikov wrote: > > > On Fri, Aug 13, 2021 at 08:08:02PM +0800, Cai Huoqing wrote: > > > > commit <47595e32869f> ("<MAINTAINERS: Mark some staging directories>") > > > > indicated the ipx network layer as obsolete in Jan 2018, > > > > updated in the MAINTAINERS file > > > > > > > > now, after being exposed for 3 years to refactoring, so to > > > > delete uapi/linux/ipx.h and net/ipx.h header files for good. > > > > additionally, there is no module that depends on ipx.h except > > > > a broken staging driver(r8188eu) > > > > > > > > Signed-off-by: Cai Huoqing <caihuoqing@baidu.com> > > > > > > This removal breaks audit[1] and potentially breaks strace[2][3], at > > > least. > > I wouldn't say breaks so much as needs coordination with. :-) If ipx is > being dropped in its entirety, I can just make that part of the code > conditional to the header existing. > > -Steve IPX is marked obsolete for serveral years. so remove it and the dependency in linux tree. I'm sorry to not thinking about linux-audit and strace. Might you remove the dependency or make the part of the code. Many thanks. -Cai > > > > [1] > > > https://github.com/linux-audit/audit-userspace/blob/ce58837d44b7d9fcb4e1 > > > 40c23f68e0c94d95ab6e/auparse/interpret.c#L48 [2] > > > https://gitlab.com/strace/strace/-/blob/9fe63f42df8badd22fb7eef9c12fc07e > > > d7106d6b/src/net.c#L34 [3] > > > https://gitlab.com/strace/strace/-/blob/9fe63f42df8badd22fb7eef9c12fc07e > > > d7106d6b/src/sockaddr.c#L30 > > > >
On Thu, Sep 02, 2021 at 09:35:29PM +0800, Cai Huoqing wrote: > On 01 Sep 21 13:36:54, Steve Grubb wrote: > > Hello, > > > > Thanks for the heads up. > > > > On Wednesday, September 1, 2021 12:52:02 PM EDT Eugene Syromiatnikov wrote: > > > Adding linux-audit, strace-devel, and linux-api to CC:. > > > > > > On Wed, Sep 01, 2021 at 06:02:44PM +0200, Eugene Syromiatnikov wrote: > > > > On Fri, Aug 13, 2021 at 08:08:02PM +0800, Cai Huoqing wrote: > > > > > commit <47595e32869f> ("<MAINTAINERS: Mark some staging directories>") > > > > > indicated the ipx network layer as obsolete in Jan 2018, > > > > > updated in the MAINTAINERS file > > > > > > > > > > now, after being exposed for 3 years to refactoring, so to > > > > > delete uapi/linux/ipx.h and net/ipx.h header files for good. > > > > > additionally, there is no module that depends on ipx.h except > > > > > a broken staging driver(r8188eu) > > > > > > > > > > Signed-off-by: Cai Huoqing <caihuoqing@baidu.com> > > > > > > > > This removal breaks audit[1] and potentially breaks strace[2][3], at > > > > least. > > > > I wouldn't say breaks so much as needs coordination with. :-) If ipx is > > being dropped in its entirety, I can just make that part of the code > > conditional to the header existing. > > > > -Steve > IPX is marked obsolete for serveral years. so remove it and the > dependency in linux tree. > I'm sorry to not thinking about linux-audit and strace. > Might you remove the dependency or make the part of the code. > Many thanks. Unfortunately, that is not how UAPI works. That change breaks building of the existing code; one cannot change already released versions of either audit, strace, or any other userspace program that happens to unconditionally include <linux/ipx.h> without any fallback (like <netipx/ipx.h> provided by glibc). > > -Cai > > > > > > [1] > > > > https://github.com/linux-audit/audit-userspace/blob/ce58837d44b7d9fcb4e1 > > > > 40c23f68e0c94d95ab6e/auparse/interpret.c#L48 [2] > > > > https://gitlab.com/strace/strace/-/blob/9fe63f42df8badd22fb7eef9c12fc07e > > > > d7106d6b/src/net.c#L34 [3] > > > > https://gitlab.com/strace/strace/-/blob/9fe63f42df8badd22fb7eef9c12fc07e > > > > d7106d6b/src/sockaddr.c#L30 > > > > > > > > >
Hi, >> IPX is marked obsolete for serveral years. so remove it and the >> dependency in linux tree. >> I'm sorry to not thinking about linux-audit and strace. >> Might you remove the dependency or make the part of the code. >> Many thanks. > > Unfortunately, that is not how UAPI works. That change breaks > building > of the existing code; one cannot change already released versions > of either audit, strace, or any other userspace program that happens > to unconditionally include <linux/ipx.h> without any fallback (like > <netipx/ipx.h> provided by glibc). Also, the <netipx/ipx.h> fallback is only provided by glibc (and maybe uclibc?). With this patch, it is now impossible to compile even the very latest version of "strace" with a musl toolchain. Cheers, -Paul
On Wednesday, September 22, 2021 1:01:58 PM EDT Paul Cercueil wrote: > >> IPX is marked obsolete for serveral years. so remove it and the > >> dependency in linux tree. > >> I'm sorry to not thinking about linux-audit and strace. > >> Might you remove the dependency or make the part of the code. > >> Many thanks. > > > > Unfortunately, that is not how UAPI works. That change breaks > > building > > of the existing code; one cannot change already released versions > > of either audit, strace, or any other userspace program that happens > > to unconditionally include <linux/ipx.h> without any fallback (like > > <netipx/ipx.h> provided by glibc). > > Also, the <netipx/ipx.h> fallback is only provided by glibc (and maybe > uclibc?). With this patch, it is now impossible to compile even the > very latest version of "strace" with a musl toolchain. I've made support for ipx optional in audit user space a couple weeks back. It's no longer a problem for us. -Steve
diff --git a/include/net/ipx.h b/include/net/ipx.h deleted file mode 100644 index 9d1342807b59..000000000000 --- a/include/net/ipx.h +++ /dev/null @@ -1,171 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef _NET_INET_IPX_H_ -#define _NET_INET_IPX_H_ -/* - * The following information is in its entirety obtained from: - * - * Novell 'IPX Router Specification' Version 1.10 - * Part No. 107-000029-001 - * - * Which is available from ftp.novell.com - */ - -#include <linux/netdevice.h> -#include <net/datalink.h> -#include <linux/ipx.h> -#include <linux/list.h> -#include <linux/slab.h> -#include <linux/refcount.h> - -struct ipx_address { - __be32 net; - __u8 node[IPX_NODE_LEN]; - __be16 sock; -}; - -#define ipx_broadcast_node "\377\377\377\377\377\377" -#define ipx_this_node "\0\0\0\0\0\0" - -#define IPX_MAX_PPROP_HOPS 8 - -struct ipxhdr { - __be16 ipx_checksum __packed; -#define IPX_NO_CHECKSUM cpu_to_be16(0xFFFF) - __be16 ipx_pktsize __packed; - __u8 ipx_tctrl; - __u8 ipx_type; -#define IPX_TYPE_UNKNOWN 0x00 -#define IPX_TYPE_RIP 0x01 /* may also be 0 */ -#define IPX_TYPE_SAP 0x04 /* may also be 0 */ -#define IPX_TYPE_SPX 0x05 /* SPX protocol */ -#define IPX_TYPE_NCP 0x11 /* $lots for docs on this (SPIT) */ -#define IPX_TYPE_PPROP 0x14 /* complicated flood fill brdcast */ - struct ipx_address ipx_dest __packed; - struct ipx_address ipx_source __packed; -}; - -/* From af_ipx.c */ -extern int sysctl_ipx_pprop_broadcasting; - -struct ipx_interface { - /* IPX address */ - __be32 if_netnum; - unsigned char if_node[IPX_NODE_LEN]; - refcount_t refcnt; - - /* physical device info */ - struct net_device *if_dev; - struct datalink_proto *if_dlink; - __be16 if_dlink_type; - - /* socket support */ - unsigned short if_sknum; - struct hlist_head if_sklist; - spinlock_t if_sklist_lock; - - /* administrative overhead */ - int if_ipx_offset; - unsigned char if_internal; - unsigned char if_primary; - - struct list_head node; /* node in ipx_interfaces list */ -}; - -struct ipx_route { - __be32 ir_net; - struct ipx_interface *ir_intrfc; - unsigned char ir_routed; - unsigned char ir_router_node[IPX_NODE_LEN]; - struct list_head node; /* node in ipx_routes list */ - refcount_t refcnt; -}; - -struct ipx_cb { - u8 ipx_tctrl; - __be32 ipx_dest_net; - __be32 ipx_source_net; - struct { - __be32 netnum; - int index; - } last_hop; -}; - -#include <net/sock.h> - -struct ipx_sock { - /* struct sock has to be the first member of ipx_sock */ - struct sock sk; - struct ipx_address dest_addr; - struct ipx_interface *intrfc; - __be16 port; -#ifdef CONFIG_IPX_INTERN - unsigned char node[IPX_NODE_LEN]; -#endif - unsigned short type; - /* - * To handle special ncp connection-handling sockets for mars_nwe, - * the connection number must be stored in the socket. - */ - unsigned short ipx_ncp_conn; -}; - -static inline struct ipx_sock *ipx_sk(struct sock *sk) -{ - return (struct ipx_sock *)sk; -} - -#define IPX_SKB_CB(__skb) ((struct ipx_cb *)&((__skb)->cb[0])) - -#define IPX_MIN_EPHEMERAL_SOCKET 0x4000 -#define IPX_MAX_EPHEMERAL_SOCKET 0x7fff - -extern struct list_head ipx_routes; -extern rwlock_t ipx_routes_lock; - -extern struct list_head ipx_interfaces; -struct ipx_interface *ipx_interfaces_head(void); -extern spinlock_t ipx_interfaces_lock; - -extern struct ipx_interface *ipx_primary_net; - -int ipx_proc_init(void); -void ipx_proc_exit(void); - -const char *ipx_frame_name(__be16); -const char *ipx_device_name(struct ipx_interface *intrfc); - -static __inline__ void ipxitf_hold(struct ipx_interface *intrfc) -{ - refcount_inc(&intrfc->refcnt); -} - -void ipxitf_down(struct ipx_interface *intrfc); -struct ipx_interface *ipxitf_find_using_net(__be32 net); -int ipxitf_send(struct ipx_interface *intrfc, struct sk_buff *skb, char *node); -__be16 ipx_cksum(struct ipxhdr *packet, int length); -int ipxrtr_add_route(__be32 network, struct ipx_interface *intrfc, - unsigned char *node); -void ipxrtr_del_routes(struct ipx_interface *intrfc); -int ipxrtr_route_packet(struct sock *sk, struct sockaddr_ipx *usipx, - struct msghdr *msg, size_t len, int noblock); -int ipxrtr_route_skb(struct sk_buff *skb); -struct ipx_route *ipxrtr_lookup(__be32 net); -int ipxrtr_ioctl(unsigned int cmd, void __user *arg); - -static __inline__ void ipxitf_put(struct ipx_interface *intrfc) -{ - if (refcount_dec_and_test(&intrfc->refcnt)) - ipxitf_down(intrfc); -} - -static __inline__ void ipxrtr_hold(struct ipx_route *rt) -{ - refcount_inc(&rt->refcnt); -} - -static __inline__ void ipxrtr_put(struct ipx_route *rt) -{ - if (refcount_dec_and_test(&rt->refcnt)) - kfree(rt); -} -#endif /* _NET_INET_IPX_H_ */ diff --git a/include/uapi/linux/ipx.h b/include/uapi/linux/ipx.h deleted file mode 100644 index 3168137adae8..000000000000 --- a/include/uapi/linux/ipx.h +++ /dev/null @@ -1,87 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ -#ifndef _IPX_H_ -#define _IPX_H_ -#include <linux/libc-compat.h> /* for compatibility with glibc netipx/ipx.h */ -#include <linux/types.h> -#include <linux/sockios.h> -#include <linux/socket.h> -#define IPX_NODE_LEN 6 -#define IPX_MTU 576 - -#if __UAPI_DEF_SOCKADDR_IPX -struct sockaddr_ipx { - __kernel_sa_family_t sipx_family; - __be16 sipx_port; - __be32 sipx_network; - unsigned char sipx_node[IPX_NODE_LEN]; - __u8 sipx_type; - unsigned char sipx_zero; /* 16 byte fill */ -}; -#endif /* __UAPI_DEF_SOCKADDR_IPX */ - -/* - * So we can fit the extra info for SIOCSIFADDR into the address nicely - */ -#define sipx_special sipx_port -#define sipx_action sipx_zero -#define IPX_DLTITF 0 -#define IPX_CRTITF 1 - -#if __UAPI_DEF_IPX_ROUTE_DEFINITION -struct ipx_route_definition { - __be32 ipx_network; - __be32 ipx_router_network; - unsigned char ipx_router_node[IPX_NODE_LEN]; -}; -#endif /* __UAPI_DEF_IPX_ROUTE_DEFINITION */ - -#if __UAPI_DEF_IPX_INTERFACE_DEFINITION -struct ipx_interface_definition { - __be32 ipx_network; - unsigned char ipx_device[16]; - unsigned char ipx_dlink_type; -#define IPX_FRAME_NONE 0 -#define IPX_FRAME_SNAP 1 -#define IPX_FRAME_8022 2 -#define IPX_FRAME_ETHERII 3 -#define IPX_FRAME_8023 4 -#define IPX_FRAME_TR_8022 5 /* obsolete */ - unsigned char ipx_special; -#define IPX_SPECIAL_NONE 0 -#define IPX_PRIMARY 1 -#define IPX_INTERNAL 2 - unsigned char ipx_node[IPX_NODE_LEN]; -}; -#endif /* __UAPI_DEF_IPX_INTERFACE_DEFINITION */ - -#if __UAPI_DEF_IPX_CONFIG_DATA -struct ipx_config_data { - unsigned char ipxcfg_auto_select_primary; - unsigned char ipxcfg_auto_create_interfaces; -}; -#endif /* __UAPI_DEF_IPX_CONFIG_DATA */ - -/* - * OLD Route Definition for backward compatibility. - */ - -#if __UAPI_DEF_IPX_ROUTE_DEF -struct ipx_route_def { - __be32 ipx_network; - __be32 ipx_router_network; -#define IPX_ROUTE_NO_ROUTER 0 - unsigned char ipx_router_node[IPX_NODE_LEN]; - unsigned char ipx_device[16]; - unsigned short ipx_flags; -#define IPX_RT_SNAP 8 -#define IPX_RT_8022 4 -#define IPX_RT_BLUEBOOK 2 -#define IPX_RT_ROUTED 1 -}; -#endif /* __UAPI_DEF_IPX_ROUTE_DEF */ - -#define SIOCAIPXITFCRT (SIOCPROTOPRIVATE) -#define SIOCAIPXPRISLT (SIOCPROTOPRIVATE + 1) -#define SIOCIPXCFGDATA (SIOCPROTOPRIVATE + 2) -#define SIOCIPXNCPCONN (SIOCPROTOPRIVATE + 3) -#endif /* _IPX_H_ */
commit <47595e32869f> ("<MAINTAINERS: Mark some staging directories>") indicated the ipx network layer as obsolete in Jan 2018, updated in the MAINTAINERS file now, after being exposed for 3 years to refactoring, so to delete uapi/linux/ipx.h and net/ipx.h header files for good. additionally, there is no module that depends on ipx.h except a broken staging driver(r8188eu) Signed-off-by: Cai Huoqing <caihuoqing@baidu.com> --- include/net/ipx.h | 171 --------------------------------------- include/uapi/linux/ipx.h | 87 -------------------- 2 files changed, 258 deletions(-) delete mode 100644 include/net/ipx.h delete mode 100644 include/uapi/linux/ipx.h