• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include <linux/socket.h>
11 #include <linux/ax25.h>
12 
13 #define ROSE_MTU	251
14 
15 #define ROSE_MAX_DIGIS 6
16 
17 #define	ROSE_DEFER	1
18 #define ROSE_T1		2
19 #define	ROSE_T2		3
20 #define	ROSE_T3		4
21 #define	ROSE_IDLE	5
22 #define	ROSE_QBITINCL	6
23 #define	ROSE_HOLDBACK	7
24 
25 #define	SIOCRSGCAUSE		(SIOCPROTOPRIVATE+0)
26 #define	SIOCRSSCAUSE		(SIOCPROTOPRIVATE+1)
27 #define	SIOCRSL2CALL		(SIOCPROTOPRIVATE+2)
28 #define	SIOCRSSL2CALL		(SIOCPROTOPRIVATE+2)
29 #define	SIOCRSACCEPT		(SIOCPROTOPRIVATE+3)
30 #define	SIOCRSCLRRT		(SIOCPROTOPRIVATE+4)
31 #define	SIOCRSGL2CALL		(SIOCPROTOPRIVATE+5)
32 #define	SIOCRSGFACILITIES	(SIOCPROTOPRIVATE+6)
33 
34 #define	ROSE_DTE_ORIGINATED	0x00
35 #define	ROSE_NUMBER_BUSY	0x01
36 #define	ROSE_INVALID_FACILITY	0x03
37 #define	ROSE_NETWORK_CONGESTION	0x05
38 #define	ROSE_OUT_OF_ORDER	0x09
39 #define	ROSE_ACCESS_BARRED	0x0B
40 #define	ROSE_NOT_OBTAINABLE	0x0D
41 #define	ROSE_REMOTE_PROCEDURE	0x11
42 #define	ROSE_LOCAL_PROCEDURE	0x13
43 #define	ROSE_SHIP_ABSENT	0x39
44 
45 typedef struct {
46 	char		rose_addr[5];
47 } rose_address;
48 
49 struct sockaddr_rose {
50 	__kernel_sa_family_t srose_family;
51 	rose_address	srose_addr;
52 	ax25_address	srose_call;
53 	int		srose_ndigis;
54 	ax25_address	srose_digi;
55 };
56 
57 struct full_sockaddr_rose {
58 	__kernel_sa_family_t srose_family;
59 	rose_address	srose_addr;
60 	ax25_address	srose_call;
61 	unsigned int	srose_ndigis;
62 	ax25_address	srose_digis[ROSE_MAX_DIGIS];
63 };
64 
65 struct rose_route_struct {
66 	rose_address	address;
67 	unsigned short	mask;
68 	ax25_address	neighbour;
69 	char		device[16];
70 	unsigned char	ndigis;
71 	ax25_address	digipeaters[AX25_MAX_DIGIS];
72 };
73 
74 struct rose_cause_struct {
75 	unsigned char	cause;
76 	unsigned char	diagnostic;
77 };
78 
79 struct rose_facilities_struct {
80 	rose_address	source_addr,   dest_addr;
81 	ax25_address	source_call,   dest_call;
82 	unsigned char	source_ndigis, dest_ndigis;
83 	ax25_address	source_digis[ROSE_MAX_DIGIS];
84 	ax25_address	dest_digis[ROSE_MAX_DIGIS];
85 	unsigned int	rand;
86 	rose_address	fail_addr;
87 	ax25_address	fail_call;
88 };
89 
90 #endif
91