summaryrefslogtreecommitdiff
path: root/include/arch/x86_64/linux/ax25.h
blob: 797ccf4f15c6b096589dd1ec1fbca8a6a65cbf5a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
 * These are the public elements of the Linux kernel AX.25 code. A similar
 * file netrom.h exists for the NET/ROM protocol.
 */

#ifndef AX25_KERNEL_H
#define AX25_KERNEL_H

#include <linux/socket.h>

#define AX25_MTU       256
#define AX25_MAX_DIGIS 8

#define AX25_WINDOW  1
#define AX25_T1	     2
#define AX25_N2	     3
#define AX25_T3	     4
#define AX25_T2	     5
#define AX25_BACKOFF 6
#define AX25_EXTSEQ  7
#define AX25_PIDINCL 8
#define AX25_IDLE    9
#define AX25_PACLEN  10
#define AX25_IAMDIGI 12

#define AX25_KILL 99

#define SIOCAX25GETUID	   (SIOCPROTOPRIVATE + 0)
#define SIOCAX25ADDUID	   (SIOCPROTOPRIVATE + 1)
#define SIOCAX25DELUID	   (SIOCPROTOPRIVATE + 2)
#define SIOCAX25NOUID	   (SIOCPROTOPRIVATE + 3)
#define SIOCAX25OPTRT	   (SIOCPROTOPRIVATE + 7)
#define SIOCAX25CTLCON	   (SIOCPROTOPRIVATE + 8)
#define SIOCAX25GETINFOOLD (SIOCPROTOPRIVATE + 9)
#define SIOCAX25ADDFWD	   (SIOCPROTOPRIVATE + 10)
#define SIOCAX25DELFWD	   (SIOCPROTOPRIVATE + 11)
#define SIOCAX25DEVCTL	   (SIOCPROTOPRIVATE + 12)
#define SIOCAX25GETINFO	   (SIOCPROTOPRIVATE + 13)

#define AX25_SET_RT_IPMODE 2

#define AX25_NOUID_DEFAULT 0
#define AX25_NOUID_BLOCK   1

typedef struct {
	char ax25_call[7]; /* 6 call + SSID (shifted ascii!) */
} ax25_address;

struct sockaddr_ax25 {
	__kernel_sa_family_t sax25_family;
	ax25_address sax25_call;
	int sax25_ndigis;
	/* Digipeater ax25_address sets follow */
};

#define sax25_uid sax25_ndigis

struct full_sockaddr_ax25 {
	struct sockaddr_ax25 fsa_ax25;
	ax25_address fsa_digipeater[AX25_MAX_DIGIS];
};

struct ax25_routes_struct {
	ax25_address port_addr;
	ax25_address dest_addr;
	unsigned char digi_count;
	ax25_address digi_addr[AX25_MAX_DIGIS];
};

struct ax25_route_opt_struct {
	ax25_address port_addr;
	ax25_address dest_addr;
	int cmd;
	int arg;
};

struct ax25_ctl_struct {
	ax25_address port_addr;
	ax25_address source_addr;
	ax25_address dest_addr;
	unsigned int cmd;
	unsigned long arg;
	unsigned char digi_count;
	ax25_address digi_addr[AX25_MAX_DIGIS];
};

/* this will go away. Please do not export to user land */
struct ax25_info_struct_deprecated {
	unsigned int n2, n2count;
	unsigned int t1, t1timer;
	unsigned int t2, t2timer;
	unsigned int t3, t3timer;
	unsigned int idle, idletimer;
	unsigned int state;
	unsigned int rcv_q, snd_q;
};

struct ax25_info_struct {
	unsigned int n2, n2count;
	unsigned int t1, t1timer;
	unsigned int t2, t2timer;
	unsigned int t3, t3timer;
	unsigned int idle, idletimer;
	unsigned int state;
	unsigned int rcv_q, snd_q;
	unsigned int vs, vr, va, vs_max;
	unsigned int paclen;
	unsigned int window;
};

struct ax25_fwd_struct {
	ax25_address port_from;
	ax25_address port_to;
};

#endif