Merge branch 'upstream'
[linux-2.6] / include / linux / rose.h
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