1 /*
2  * These are the public elements of the Linux kernel Rose implementation.
3  * For kernel AX.25 see the file ax25.h. This file requires ax25.h for the
4  * definition of the ax25_address structure.
5  */
6 
7 #ifndef	ROSE_KERNEL_H
8 #define	ROSE_KERNEL_H
9 
10 #define ROSE_MTU	251
11 
12 #define ROSE_MAX_DIGIS 6
13 
14 #define	ROSE_DEFER	1
15 #define ROSE_T1		2
16 #define	ROSE_T2		3
17 #define	ROSE_T3		4
18 #define	ROSE_IDLE	5
19 #define	ROSE_QBITINCL	6
20 #define	ROSE_HOLDBACK	7
21 
22 #define	SIOCRSGCAUSE		(SIOCPROTOPRIVATE+0)
23 #define	SIOCRSSCAUSE		(SIOCPROTOPRIVATE+1)
24 #define	SIOCRSL2CALL		(SIOCPROTOPRIVATE+2)
25 #define	SIOCRSSL2CALL		(SIOCPROTOPRIVATE+2)
26 #define	SIOCRSACCEPT		(SIOCPROTOPRIVATE+3)
27 #define	SIOCRSCLRRT		(SIOCPROTOPRIVATE+4)
28 #define	SIOCRSGL2CALL		(SIOCPROTOPRIVATE+5)
29 #define	SIOCRSGFACILITIES	(SIOCPROTOPRIVATE+6)
30 
31 #define	ROSE_DTE_ORIGINATED	0x00
32 #define	ROSE_NUMBER_BUSY	0x01
33 #define	ROSE_INVALID_FACILITY	0x03
34 #define	ROSE_NETWORK_CONGESTION	0x05
35 #define	ROSE_OUT_OF_ORDER	0x09
36 #define	ROSE_ACCESS_BARRED	0x0B
37 #define	ROSE_NOT_OBTAINABLE	0x0D
38 #define	ROSE_REMOTE_PROCEDURE	0x11
39 #define	ROSE_LOCAL_PROCEDURE	0x13
40 #define	ROSE_SHIP_ABSENT	0x39
41 
42 typedef struct {
43 	char		rose_addr[5];
44 } rose_address;
45 
46 struct sockaddr_rose {
47 	sa_family_t	srose_family;
48 	rose_address	srose_addr;
49 	ax25_address	srose_call;
50 	int		srose_ndigis;
51 	ax25_address	srose_digi;
52 };
53 
54 struct full_sockaddr_rose {
55 	sa_family_t	srose_family;
56 	rose_address	srose_addr;
57 	ax25_address	srose_call;
58 	unsigned int	srose_ndigis;
59 	ax25_address	srose_digis[ROSE_MAX_DIGIS];
60 };
61 
62 struct rose_route_struct {
63 	rose_address	address;
64 	unsigned short	mask;
65 	ax25_address	neighbour;
66 	char		device[16];
67 	unsigned char	ndigis;
68 	ax25_address	digipeaters[AX25_MAX_DIGIS];
69 };
70 
71 struct rose_cause_struct {
72 	unsigned char	cause;
73 	unsigned char	diagnostic;
74 };
75 
76 struct rose_facilities_struct {
77 	rose_address	source_addr,   dest_addr;
78 	ax25_address	source_call,   dest_call;
79 	unsigned char	source_ndigis, dest_ndigis;
80 	ax25_address	source_digis[ROSE_MAX_DIGIS];
81 	ax25_address	dest_digis[ROSE_MAX_DIGIS];
82 	unsigned int	rand;
83 	rose_address	fail_addr;
84 	ax25_address	fail_call;
85 };
86 
87 #endif
88