|
|
1.1 root 1: /*
2: * Declarations of AX.25 type objects.
3: *
4: * Alan Cox (GW4PTS) 10/11/93
5: */
6:
7: #ifndef _AX25_H
8: #define _AX25_H
9: #include <linux/ax25.h>
10:
11: #define PR_SLOWHZ 10 /* Run timing at 1/10 second - gives us better resolution for 56kbit links */
12:
13: #define AX25_T1CLAMPLO (1 * PR_SLOWHZ) /* If defined, clamp at 1 second **/
14: #define AX25_T1CLAMPHI (30 * PR_SLOWHZ) /* If defined, clamp at 30 seconds **/
15:
16: #define AX25_BROKEN_NETMAC
17:
18: #define AX25_BPQ_HEADER_LEN 16
19: #define AX25_KISS_HEADER_LEN 1
20:
21: #define AX25_HEADER_LEN 17
22: #define AX25_ADDR_LEN 7
23: #define AX25_DIGI_HEADER_LEN (AX25_MAX_DIGIS * AX25_ADDR_LEN)
24: #define AX25_MAX_HEADER_LEN (AX25_HEADER_LEN + AX25_DIGI_HEADER_LEN)
25:
26: #define AX25_P_IP 0xCC
27: #define AX25_P_ARP 0xCD
28: #define AX25_P_TEXT 0xF0
29: #define AX25_P_NETROM 0xCF
30: #define AX25_P_SEGMENT 0x08
31:
32: #define SEG_REM 0x7F
33: #define SEG_FIRST 0x80
34:
35: #define LAPB_UI 0x03
36: #define LAPB_C 0x80
37: #define LAPB_E 0x01
38:
39: #define SSSID_SPARE 0x60 /* Unused bits in SSID for standard AX.25 */
40: #define ESSID_SPARE 0x20 /* Unused bits in SSID for extended AX.25 */
41: #define DAMA_FLAG 0x40 /* Well, it is *NOT* unused! (dl1bke 951121 */
42:
43: #define AX25_REPEATED 0x80
44:
45: #define ACK_PENDING_CONDITION 0x01
46: #define REJECT_CONDITION 0x02
47: #define PEER_RX_BUSY_CONDITION 0x04
48: #define OWN_RX_BUSY_CONDITION 0x08
49:
50: #ifndef _LINUX_NETDEVICE_H
51: #include <linux/netdevice.h>
52: #endif
53:
54: /*
55: * These headers are taken from the KA9Q package by Phil Karn. These specific
56: * files have been placed under the GPL (not the whole package) by Phil.
57: *
58: *
59: * Copyright 1991 Phil Karn, KA9Q
60: *
61: * This program is free software; you can redistribute it and/or modify
62: * it under the terms of the GNU General Public License as published by
63: * the Free Software Foundation; version 2 dated June, 1991.
64: *
65: * This program is distributed in the hope that it will be useful,
66: * but WITHOUT ANY WARRANTY; without even the implied warranty of
67: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
68: * GNU General Public License for more details.
69: *
70: * You should have received a copy of the GNU General Public License
71: * along with this program; if not, write to the Free Software
72: * Foundation, Inc., 675 Mass Ave., Cambridge, MA 02139, USA.
73: */
74:
75: /* Upper sub-layer (LAPB) definitions */
76:
77: /* Control field templates */
78: #define I 0x00 /* Information frames */
79: #define S 0x01 /* Supervisory frames */
80: #define RR 0x01 /* Receiver ready */
81: #define RNR 0x05 /* Receiver not ready */
82: #define REJ 0x09 /* Reject */
83: #define U 0x03 /* Unnumbered frames */
84: #define SABM 0x2f /* Set Asynchronous Balanced Mode */
85: #define SABME 0x6f /* Set Asynchronous Balanced Mode Extended */
86: #define DISC 0x43 /* Disconnect */
87: #define DM 0x0f /* Disconnected mode */
88: #define UA 0x63 /* Unnumbered acknowledge */
89: #define FRMR 0x87 /* Frame reject */
90: #define UI 0x03 /* Unnumbered information */
91: #define PF 0x10 /* Poll/final bit for standard AX.25 */
92: #define EPF 0x01 /* Poll/final bit for extended AX.25 */
93:
94: #define ILLEGAL 0x100 /* Impossible to be a real frame type */
95:
96: #define POLLOFF 0
97: #define POLLON 1
98:
99: /* AX25 L2 C-bit */
100:
101: #define C_COMMAND 1 /* C_ otherwise it clashes with the de600 defines (sigh)) */
102: #define C_RESPONSE 2
103:
104: /* Define Link State constants. */
105:
106: #define AX25_STATE_0 0
107: #define AX25_STATE_1 1
108: #define AX25_STATE_2 2
109: #define AX25_STATE_3 3
110: #define AX25_STATE_4 4
111:
112: #define MODULUS 8 /* Standard AX.25 modulus */
113: #define EMODULUS 128 /* Extended AX.25 modulus */
114:
115: #define AX25_DEF_IPDEFMODE 'D'
116: #define AX25_DEF_AXDEFMODE 8
117: #define AX25_DEF_NETROM 1
118: #define AX25_DEF_TEXT 1
119: #define AX25_DEF_BACKOFF 'E'
120: #define AX25_DEF_CONMODE 1
121: #define AX25_DEF_WINDOW 2
122: #define AX25_DEF_EWINDOW 32
123: #define AX25_DEF_T1 10
124: #define AX25_DEF_T2 3
125: #define AX25_DEF_T3 300
126: #define AX25_DEF_N2 10
127: #define AX25_DEF_DIGI (AX25_DIGI_INBAND|AX25_DIGI_XBAND)
128:
129: typedef struct ax25_uid_assoc {
130: struct ax25_uid_assoc *next;
131: uid_t uid;
132: ax25_address call;
133: } ax25_uid_assoc;
134:
135: typedef struct {
136: ax25_address calls[AX25_MAX_DIGIS];
137: unsigned char repeated[AX25_MAX_DIGIS];
138: unsigned char ndigi;
139: char lastrepeat;
140: } ax25_digi;
141:
142: typedef struct ax25_cb {
143: struct ax25_cb *next;
144: ax25_address source_addr, dest_addr;
145: struct device *device;
146: unsigned char dama_slave; /* dl1bke 951121 */
147: unsigned char state, modulus, hdrincl;
148: unsigned short vs, vr, va;
149: unsigned char condition, backoff;
150: unsigned char n2, n2count;
151: unsigned short t1, t2, t3, rtt;
152: unsigned short t1timer, t2timer, t3timer;
153: unsigned short fragno, fraglen;
154: ax25_digi *digipeat;
155: struct sk_buff_head write_queue;
156: struct sk_buff_head reseq_queue;
157: struct sk_buff_head ack_queue;
158: struct sk_buff_head frag_queue;
159: unsigned char window;
160: struct timer_list timer;
161: struct sock *sk; /* Backlink to socket */
162: } ax25_cb;
163:
164: /* af_ax25.c */
165: extern ax25_address null_ax25_address;
166: extern char *ax2asc(ax25_address *);
167: extern int ax25cmp(ax25_address *, ax25_address *);
168: extern int ax25_send_frame(struct sk_buff *, ax25_address *, ax25_address *, ax25_digi *, struct device *);
169: extern void ax25_destroy_socket(ax25_cb *);
170: extern struct device *ax25rtr_get_dev(ax25_address *);
171: extern int ax25_encapsulate(struct sk_buff *, struct device *, unsigned short,
172: void *, void *, unsigned int);
173: extern int ax25_rebuild_header(unsigned char *, struct device *, unsigned long, struct sk_buff *);
174: extern ax25_uid_assoc *ax25_uid_list;
175: extern int ax25_uid_policy;
176: extern ax25_address *ax25_findbyuid(uid_t);
177: extern void ax25_queue_xmit(struct sk_buff *, struct device *, int);
178: extern int ax25_dev_is_dama_slave(struct device *); /* dl1bke 951121 */
179:
180: #include <net/ax25call.h>
181:
182: /* ax25_in.c */
183: extern int ax25_process_rx_frame(ax25_cb *, struct sk_buff *, int, int);
184:
185: /* ax25_out.c */
186: extern void ax25_output(ax25_cb *, struct sk_buff *);
187: extern void ax25_kick(ax25_cb *);
188: extern void ax25_transmit_buffer(ax25_cb *, struct sk_buff *, int);
189: extern void ax25_nr_error_recovery(ax25_cb *);
190: extern void ax25_establish_data_link(ax25_cb *);
191: extern void ax25_transmit_enquiry(ax25_cb *);
192: extern void ax25_enquiry_response(ax25_cb *);
193: extern void ax25_timeout_response(ax25_cb *);
194: extern void ax25_check_iframes_acked(ax25_cb *, unsigned short);
195: extern void ax25_check_need_response(ax25_cb *, int, int);
196: extern void dama_enquiry_response(ax25_cb *); /* dl1bke 960114 */
197: extern void dama_check_need_response(ax25_cb *, int, int); /* dl1bke 960114 */
198: extern void dama_establish_data_link(ax25_cb *);
199:
200: /* ax25_route.c */
201: extern void ax25_rt_rx_frame(ax25_address *, struct device *, ax25_digi *);
202: extern int ax25_rt_get_info(char *, char **, off_t, int, int);
203: extern int ax25_cs_get_info(char *, char **, off_t, int, int);
204: extern int ax25_rt_autobind(ax25_cb *, ax25_address *);
205: extern void ax25_rt_build_path(ax25_cb *, ax25_address *);
206: extern void ax25_dg_build_path(struct sk_buff *, ax25_address *, struct device *);
207: extern void ax25_rt_device_down(struct device *);
208: extern int ax25_rt_ioctl(unsigned int, void *);
209: extern void ax25_ip_mode_set(ax25_address *, struct device *, char);
210: extern char ax25_ip_mode_get(ax25_address *, struct device *);
211: extern unsigned short ax25_dev_get_value(struct device *, int);
212: extern void ax25_dev_device_up(struct device *);
213: extern void ax25_dev_device_down(struct device *);
214: extern int ax25_dev_ioctl(unsigned int, void *);
215: extern int ax25_bpq_get_info(char *, char **, off_t, int, int);
216: extern ax25_address *ax25_bpq_get_addr(struct device *);
217: extern int ax25_bpq_ioctl(unsigned int, void *);
218:
219: /* ax25_subr.c */
220: extern void ax25_clear_queues(ax25_cb *);
221: extern void ax25_frames_acked(ax25_cb *, unsigned short);
222: extern void ax25_requeue_frames(ax25_cb *);
223: extern int ax25_validate_nr(ax25_cb *, unsigned short);
224: extern int ax25_decode(ax25_cb *, struct sk_buff *, int *, int *, int *);
225: extern void ax25_send_control(ax25_cb *, int, int, int);
226: extern unsigned short ax25_calculate_t1(ax25_cb *);
227: extern void ax25_calculate_rtt(ax25_cb *);
228: extern unsigned char *ax25_parse_addr(unsigned char *, int, ax25_address *,
229: ax25_address *, ax25_digi *, int *, int *); /* dl1bke 951121 */
230: extern int build_ax25_addr(unsigned char *, ax25_address *, ax25_address *,
231: ax25_digi *, int, int);
232: extern int size_ax25_addr(ax25_digi *);
233: extern void ax25_digi_invert(ax25_digi *, ax25_digi *);
234: extern void ax25_return_dm(struct device *, ax25_address *, ax25_address *, ax25_digi *);
235: extern void ax25_dama_on(ax25_cb *); /* dl1bke 951121 */
236: extern void ax25_dama_off(ax25_cb *); /* dl1bke 951121 */
237:
238: /* ax25_timer */
239: extern void ax25_set_timer(ax25_cb *);
240: extern void ax25_t1_timeout(ax25_cb *);
241:
242: /* ... */
243:
244: extern ax25_cb * volatile ax25_list;
245:
246: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.