1 /* 2 * The following information is in its entirety obtained from: 3 * 4 * Novell 'IPX Router Specification' Version 1.10 5 * Part No. 107-000029-001 6 * 7 * Which is available from ftp.novell.com 8 */ 9 10 #ifndef _NET_INET_IPX_H_ 11 #define _NET_INET_IPX_H_ 12 13 #include <linux/netdevice.h> 14 #include <net/datalink.h> 15 #include <linux/ipx.h> 16 17 typedef struct 18 { 19 __u32 net; 20 __u8 node[IPX_NODE_LEN]; 21 __u16 sock; 22 } ipx_address; 23 24 #define ipx_broadcast_node "\377\377\377\377\377\377" 25 #define ipx_this_node "\0\0\0\0\0\0" 26 27 #define IPX_MAX_PPROP_HOPS 8 28 29 struct ipxhdr 30 { 31 __u16 ipx_checksum __attribute__ ((packed)); 32 #define IPX_NO_CHECKSUM 0xFFFF 33 __u16 ipx_pktsize __attribute__ ((packed)); 34 __u8 ipx_tctrl; 35 __u8 ipx_type; 36 #define IPX_TYPE_UNKNOWN 0x00 37 #define IPX_TYPE_RIP 0x01 /* may also be 0 */ 38 #define IPX_TYPE_SAP 0x04 /* may also be 0 */ 39 #define IPX_TYPE_SPX 0x05 /* SPX protocol */ 40 #define IPX_TYPE_NCP 0x11 /* $lots for docs on this (SPIT) */ 41 #define IPX_TYPE_PPROP 0x14 /* complicated flood fill brdcast */ 42 ipx_address ipx_dest __attribute__ ((packed)); 43 ipx_address ipx_source __attribute__ ((packed)); 44 }; 45 46 typedef struct ipx_interface { 47 /* IPX address */ 48 __u32 if_netnum; 49 unsigned char if_node[IPX_NODE_LEN]; 50 atomic_t refcnt; 51 52 /* physical device info */ 53 struct net_device *if_dev; 54 struct datalink_proto *if_dlink; 55 unsigned short if_dlink_type; 56 57 /* socket support */ 58 unsigned short if_sknum; 59 struct sock *if_sklist; 60 spinlock_t if_sklist_lock; 61 62 /* administrative overhead */ 63 int if_ipx_offset; 64 unsigned char if_internal; 65 unsigned char if_primary; 66 67 struct ipx_interface *if_next; 68 } ipx_interface; 69 70 typedef struct ipx_route { 71 __u32 ir_net; 72 ipx_interface *ir_intrfc; 73 unsigned char ir_routed; 74 unsigned char ir_router_node[IPX_NODE_LEN]; 75 struct ipx_route *ir_next; 76 atomic_t refcnt; 77 } ipx_route; 78 79 #ifdef __KERNEL__ 80 struct ipx_cb { 81 u8 ipx_tctrl; 82 u32 ipx_dest_net; 83 u32 ipx_source_net; 84 struct { 85 u32 netnum; 86 int index; 87 } last_hop; 88 }; 89 #endif 90 #define IPX_MIN_EPHEMERAL_SOCKET 0x4000 91 #define IPX_MAX_EPHEMERAL_SOCKET 0x7fff 92 93 extern int ipx_register_spx(struct proto_ops **, struct net_proto_family *); 94 extern int ipx_unregister_spx(void); 95 96 #endif /* def _NET_INET_IPX_H_ */ 97