Blame view

include/net/ipx.h 4.28 KB
b24413180   Greg Kroah-Hartman   License cleanup: ...
1
  /* SPDX-License-Identifier: GPL-2.0 */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  #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>
5a0e3ad6a   Tejun Heo   include cleanup: ...
17
  #include <linux/slab.h>
d25189ca8   Reshetova, Elena   net, ipx: convert...
18
  #include <linux/refcount.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
19
20
  
  struct ipx_address {
4833ed094   Al Viro   [IPX]: Trivial pa...
21
  	__be32  net;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
22
  	__u8    node[IPX_NODE_LEN]; 
4833ed094   Al Viro   [IPX]: Trivial pa...
23
  	__be16  sock;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
24
25
26
27
28
29
30
31
  };
  
  #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 {
bc10502db   Eric Dumazet   net: use __packed...
32
  	__be16			ipx_checksum __packed;
f3a7c66b5   Harvey Harrison   net: replace __co...
33
  #define IPX_NO_CHECKSUM	cpu_to_be16(0xFFFF)
bc10502db   Eric Dumazet   net: use __packed...
34
  	__be16			ipx_pktsize __packed;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
35
36
37
38
39
40
41
42
  	__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 */
bc10502db   Eric Dumazet   net: use __packed...
43
44
  	struct ipx_address	ipx_dest __packed;
  	struct ipx_address	ipx_source __packed;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
45
  };
5e96d788d   Fabian Frederick   ipx: move extern ...
46
47
  /* From af_ipx.c */
  extern int sysctl_ipx_pprop_broadcasting;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
48
49
  struct ipx_interface {
  	/* IPX address */
4833ed094   Al Viro   [IPX]: Trivial pa...
50
  	__be32			if_netnum;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
51
  	unsigned char		if_node[IPX_NODE_LEN];
d25189ca8   Reshetova, Elena   net, ipx: convert...
52
  	refcount_t		refcnt;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
53
54
55
56
  
  	/* physical device info */
  	struct net_device	*if_dev;
  	struct datalink_proto	*if_dlink;
4833ed094   Al Viro   [IPX]: Trivial pa...
57
  	__be16			if_dlink_type;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
  
  	/* 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 {
4833ed094   Al Viro   [IPX]: Trivial pa...
73
  	__be32			ir_net;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
74
75
76
77
  	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 */
16f73c964   Reshetova, Elena   net, ipx: convert...
78
  	refcount_t		refcnt;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
79
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
80
81
  struct ipx_cb {
  	u8	ipx_tctrl;
4833ed094   Al Viro   [IPX]: Trivial pa...
82
83
  	__be32	ipx_dest_net;
  	__be32	ipx_source_net;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
84
  	struct {
4833ed094   Al Viro   [IPX]: Trivial pa...
85
  		__be32 netnum;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
86
87
88
89
90
91
92
93
94
95
96
  		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;
4833ed094   Al Viro   [IPX]: Trivial pa...
97
  	__be16			port;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
  #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]))
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
115
116
117
118
119
120
121
122
  
  #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;
9d03626a2   Joe Perches   ipx.h: Remove ext...
123
  struct ipx_interface *ipx_interfaces_head(void);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
124
125
126
  extern spinlock_t ipx_interfaces_lock;
  
  extern struct ipx_interface *ipx_primary_net;
9d03626a2   Joe Perches   ipx.h: Remove ext...
127
128
  int ipx_proc_init(void);
  void ipx_proc_exit(void);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
129

9d03626a2   Joe Perches   ipx.h: Remove ext...
130
131
  const char *ipx_frame_name(__be16);
  const char *ipx_device_name(struct ipx_interface *intrfc);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
132
133
134
  
  static __inline__ void ipxitf_hold(struct ipx_interface *intrfc)
  {
d25189ca8   Reshetova, Elena   net, ipx: convert...
135
  	refcount_inc(&intrfc->refcnt);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
136
  }
9d03626a2   Joe Perches   ipx.h: Remove ext...
137
  void ipxitf_down(struct ipx_interface *intrfc);
493cc5e5b   Rashika Kheria   net: Move prototy...
138
139
140
  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);
578efbc19   Rashika Kheria   net: Move prototy...
141
142
143
144
  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,
e16937182   Al Viro   switch ipxrtr_rou...
145
  			struct msghdr *msg, size_t len, int noblock);
578efbc19   Rashika Kheria   net: Move prototy...
146
147
148
  int ipxrtr_route_skb(struct sk_buff *skb);
  struct ipx_route *ipxrtr_lookup(__be32 net);
  int ipxrtr_ioctl(unsigned int cmd, void __user *arg);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
149
150
151
  
  static __inline__ void ipxitf_put(struct ipx_interface *intrfc)
  {
d25189ca8   Reshetova, Elena   net, ipx: convert...
152
  	if (refcount_dec_and_test(&intrfc->refcnt))
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
153
154
155
156
157
  		ipxitf_down(intrfc);
  }
  
  static __inline__ void ipxrtr_hold(struct ipx_route *rt)
  {
16f73c964   Reshetova, Elena   net, ipx: convert...
158
  	        refcount_inc(&rt->refcnt);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
159
160
161
162
  }
  
  static __inline__ void ipxrtr_put(struct ipx_route *rt)
  {
16f73c964   Reshetova, Elena   net, ipx: convert...
163
  	        if (refcount_dec_and_test(&rt->refcnt))
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
164
165
166
  			                kfree(rt);
  }
  #endif /* _NET_INET_IPX_H_ */