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