1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*4882a593Smuzhiyun #ifndef _IPX_H_ 3*4882a593Smuzhiyun #define _IPX_H_ 4*4882a593Smuzhiyun #include <linux/libc-compat.h> /* for compatibility with glibc netipx/ipx.h */ 5*4882a593Smuzhiyun #include <linux/types.h> 6*4882a593Smuzhiyun #include <linux/sockios.h> 7*4882a593Smuzhiyun #include <linux/socket.h> 8*4882a593Smuzhiyun #define IPX_NODE_LEN 6 9*4882a593Smuzhiyun #define IPX_MTU 576 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #if __UAPI_DEF_SOCKADDR_IPX 12*4882a593Smuzhiyun struct sockaddr_ipx { 13*4882a593Smuzhiyun __kernel_sa_family_t sipx_family; 14*4882a593Smuzhiyun __be16 sipx_port; 15*4882a593Smuzhiyun __be32 sipx_network; 16*4882a593Smuzhiyun unsigned char sipx_node[IPX_NODE_LEN]; 17*4882a593Smuzhiyun __u8 sipx_type; 18*4882a593Smuzhiyun unsigned char sipx_zero; /* 16 byte fill */ 19*4882a593Smuzhiyun }; 20*4882a593Smuzhiyun #endif /* __UAPI_DEF_SOCKADDR_IPX */ 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun /* 23*4882a593Smuzhiyun * So we can fit the extra info for SIOCSIFADDR into the address nicely 24*4882a593Smuzhiyun */ 25*4882a593Smuzhiyun #define sipx_special sipx_port 26*4882a593Smuzhiyun #define sipx_action sipx_zero 27*4882a593Smuzhiyun #define IPX_DLTITF 0 28*4882a593Smuzhiyun #define IPX_CRTITF 1 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun #if __UAPI_DEF_IPX_ROUTE_DEFINITION 31*4882a593Smuzhiyun struct ipx_route_definition { 32*4882a593Smuzhiyun __be32 ipx_network; 33*4882a593Smuzhiyun __be32 ipx_router_network; 34*4882a593Smuzhiyun unsigned char ipx_router_node[IPX_NODE_LEN]; 35*4882a593Smuzhiyun }; 36*4882a593Smuzhiyun #endif /* __UAPI_DEF_IPX_ROUTE_DEFINITION */ 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun #if __UAPI_DEF_IPX_INTERFACE_DEFINITION 39*4882a593Smuzhiyun struct ipx_interface_definition { 40*4882a593Smuzhiyun __be32 ipx_network; 41*4882a593Smuzhiyun unsigned char ipx_device[16]; 42*4882a593Smuzhiyun unsigned char ipx_dlink_type; 43*4882a593Smuzhiyun #define IPX_FRAME_NONE 0 44*4882a593Smuzhiyun #define IPX_FRAME_SNAP 1 45*4882a593Smuzhiyun #define IPX_FRAME_8022 2 46*4882a593Smuzhiyun #define IPX_FRAME_ETHERII 3 47*4882a593Smuzhiyun #define IPX_FRAME_8023 4 48*4882a593Smuzhiyun #define IPX_FRAME_TR_8022 5 /* obsolete */ 49*4882a593Smuzhiyun unsigned char ipx_special; 50*4882a593Smuzhiyun #define IPX_SPECIAL_NONE 0 51*4882a593Smuzhiyun #define IPX_PRIMARY 1 52*4882a593Smuzhiyun #define IPX_INTERNAL 2 53*4882a593Smuzhiyun unsigned char ipx_node[IPX_NODE_LEN]; 54*4882a593Smuzhiyun }; 55*4882a593Smuzhiyun #endif /* __UAPI_DEF_IPX_INTERFACE_DEFINITION */ 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun #if __UAPI_DEF_IPX_CONFIG_DATA 58*4882a593Smuzhiyun struct ipx_config_data { 59*4882a593Smuzhiyun unsigned char ipxcfg_auto_select_primary; 60*4882a593Smuzhiyun unsigned char ipxcfg_auto_create_interfaces; 61*4882a593Smuzhiyun }; 62*4882a593Smuzhiyun #endif /* __UAPI_DEF_IPX_CONFIG_DATA */ 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun /* 65*4882a593Smuzhiyun * OLD Route Definition for backward compatibility. 66*4882a593Smuzhiyun */ 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun #if __UAPI_DEF_IPX_ROUTE_DEF 69*4882a593Smuzhiyun struct ipx_route_def { 70*4882a593Smuzhiyun __be32 ipx_network; 71*4882a593Smuzhiyun __be32 ipx_router_network; 72*4882a593Smuzhiyun #define IPX_ROUTE_NO_ROUTER 0 73*4882a593Smuzhiyun unsigned char ipx_router_node[IPX_NODE_LEN]; 74*4882a593Smuzhiyun unsigned char ipx_device[16]; 75*4882a593Smuzhiyun unsigned short ipx_flags; 76*4882a593Smuzhiyun #define IPX_RT_SNAP 8 77*4882a593Smuzhiyun #define IPX_RT_8022 4 78*4882a593Smuzhiyun #define IPX_RT_BLUEBOOK 2 79*4882a593Smuzhiyun #define IPX_RT_ROUTED 1 80*4882a593Smuzhiyun }; 81*4882a593Smuzhiyun #endif /* __UAPI_DEF_IPX_ROUTE_DEF */ 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun #define SIOCAIPXITFCRT (SIOCPROTOPRIVATE) 84*4882a593Smuzhiyun #define SIOCAIPXPRISLT (SIOCPROTOPRIVATE + 1) 85*4882a593Smuzhiyun #define SIOCIPXCFGDATA (SIOCPROTOPRIVATE + 2) 86*4882a593Smuzhiyun #define SIOCIPXNCPCONN (SIOCPROTOPRIVATE + 3) 87*4882a593Smuzhiyun #endif /* _IPX_H_ */ 88