Annotation of Gnu-Mach/i386/i386at/gpl/linux/include/net/ax25.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.