|
|
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.