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

source code of linux/include/uapi/linux/rose.h