1 /*
2  * These are the public elements of the Linux kernel X.25 implementation.
3  *
4  * 	History
5  *	mar/20/00	Daniela Squassoni Disabling/enabling of facilities
6  *					  negotiation.
7  */
8 
9 #ifndef	X25_KERNEL_H
10 #define	X25_KERNEL_H
11 
12 #define	SIOCX25GSUBSCRIP	(SIOCPROTOPRIVATE + 0)
13 #define	SIOCX25SSUBSCRIP	(SIOCPROTOPRIVATE + 1)
14 #define	SIOCX25GFACILITIES	(SIOCPROTOPRIVATE + 2)
15 #define	SIOCX25SFACILITIES	(SIOCPROTOPRIVATE + 3)
16 #define	SIOCX25GCALLUSERDATA	(SIOCPROTOPRIVATE + 4)
17 #define	SIOCX25SCALLUSERDATA	(SIOCPROTOPRIVATE + 5)
18 #define	SIOCX25GCAUSEDIAG	(SIOCPROTOPRIVATE + 6)
19 
20 /*
21  *	Values for {get,set}sockopt.
22  */
23 #define	X25_QBITINCL		1
24 
25 /*
26  *	X.25 Packet Size values.
27  */
28 #define	X25_PS16		4
29 #define	X25_PS32		5
30 #define	X25_PS64		6
31 #define	X25_PS128		7
32 #define	X25_PS256		8
33 #define	X25_PS512		9
34 #define	X25_PS1024		10
35 #define	X25_PS2048		11
36 #define	X25_PS4096		12
37 
38 /*
39  * An X.121 address, it is held as ASCII text, null terminated, up to 15
40  * digits and a null terminator.
41  */
42 typedef struct {
43 	char		x25_addr[16];
44 } x25_address;
45 
46 /*
47  *	Linux X.25 Address structure, used for bind, and connect mostly.
48  */
49 struct sockaddr_x25 {
50 	sa_family_t	sx25_family;		/* Must be AF_X25 */
51 	x25_address	sx25_addr;		/* X.121 Address */
52 };
53 
54 /*
55  *	DTE/DCE subscription options.
56  *
57  *      As this is missing lots of options, user should expect major
58  *	changes of this structure in 2.5.x which might break compatibilty.
59  *      The somewhat ugly dimension 200-sizeof() is needed to maintain
60  *	backward compatibility.
61  */
62 struct x25_subscrip_struct {
63 	char device[200-sizeof(unsigned long)];
64 	unsigned long	global_facil_mask;	/* 0 to disable negotiation */
65 	unsigned int	extended;
66 };
67 
68 /* values for above global_facil_mask */
69 
70 #define	X25_MASK_REVERSE	0x01
71 #define	X25_MASK_THROUGHPUT	0x02
72 #define	X25_MASK_PACKET_SIZE	0x04
73 #define	X25_MASK_WINDOW_SIZE	0x08
74 
75 
76 
77 /*
78  *	Routing table control structure.
79  */
80 struct x25_route_struct {
81 	x25_address	address;
82 	unsigned int	sigdigits;
83 	char		device[200];
84 };
85 
86 /*
87  *	Facilities structure.
88  */
89 struct x25_facilities {
90 	unsigned int	winsize_in, winsize_out;
91 	unsigned int	pacsize_in, pacsize_out;
92 	unsigned int	throughput;
93 	unsigned int	reverse;
94 };
95 
96 /*
97  *	Call User Data structure.
98  */
99 struct x25_calluserdata {
100 	unsigned int	cudlength;
101 	unsigned char	cuddata[128];
102 };
103 
104 /*
105  *	Call clearing Cause and Diagnostic structure.
106  */
107 struct x25_causediag {
108 	unsigned char	cause;
109 	unsigned char	diagnostic;
110 };
111 
112 #endif
113