xref: /openbmc/linux/include/uapi/linux/rose.h (revision cde2f928)
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