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
45typedef struct {
46	char		rose_addr[5];
47} rose_address;
48
49struct 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
57struct 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
65struct 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
74struct rose_cause_struct {
75	unsigned char	cause;
76	unsigned char	diagnostic;
77};
78
79struct 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