Annotation of Gnu-Mach/linux/src/include/net/rose.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  *     Declarations of Rose type objects.
                      3:  *
                      4:  *     Jonathan Naylor G4KLX   25/8/96
                      5:  */
                      6: 
                      7: #ifndef _ROSE_H
                      8: #define _ROSE_H 
                      9: #include <linux/rose.h>
                     10: 
                     11: #define        ROSE_SLOWHZ                     10      /* Run timing at 1/10 second */
                     12: 
                     13: #define        ROSE_ADDR_LEN                   5
                     14: 
                     15: #define        ROSE_MIN_LEN                    3
                     16: 
                     17: #define        ROSE_GFI                        0x10
                     18: #define        ROSE_Q_BIT                      0x80
                     19: #define        ROSE_D_BIT                      0x40
                     20: #define        ROSE_M_BIT                      0x10
                     21: #define        M_BIT                           0x10
                     22: 
                     23: #define        ROSE_CALL_REQUEST               0x0B
                     24: #define        ROSE_CALL_ACCEPTED              0x0F
                     25: #define        ROSE_CLEAR_REQUEST              0x13
                     26: #define        ROSE_CLEAR_CONFIRMATION         0x17
                     27: #define        ROSE_DATA                       0x00
                     28: #define        ROSE_INTERRUPT                  0x23
                     29: #define        ROSE_INTERRUPT_CONFIRMATION     0x27
                     30: #define        ROSE_RR                         0x01
                     31: #define        ROSE_RNR                        0x05
                     32: #define        ROSE_REJ                        0x09
                     33: #define        ROSE_RESET_REQUEST              0x1B
                     34: #define        ROSE_RESET_CONFIRMATION         0x1F
                     35: #define        ROSE_REGISTRATION_REQUEST       0xF3
                     36: #define        ROSE_REGISTRATION_CONFIRMATION  0xF7
                     37: #define        ROSE_RESTART_REQUEST            0xFB
                     38: #define        ROSE_RESTART_CONFIRMATION       0xFF
                     39: #define        ROSE_DIAGNOSTIC                 0xF1
                     40: #define        ROSE_ILLEGAL                    0xFD
                     41: 
                     42: /* Define Link State constants. */
                     43: 
                     44: #define ROSE_STATE_0                   0               /* Ready */
                     45: #define ROSE_STATE_1                   1               /* Awaiting Call Accepted */
                     46: #define ROSE_STATE_2                   2               /* Awaiting Clear Confirmation */
                     47: #define ROSE_STATE_3                   3               /* Data Transfer */
                     48: #define        ROSE_STATE_4                    4               /* Awaiting Reset Confirmation */
                     49: #define        ROSE_STATE_5                    5               /* Deferred Call Acceptance */
                     50: 
                     51: #define ROSE_DEFAULT_T0                        (180 * ROSE_SLOWHZ)     /* Default T10 T20 value */
                     52: #define ROSE_DEFAULT_T1                        (200 * ROSE_SLOWHZ)     /* Default T11 T21 value */
                     53: #define ROSE_DEFAULT_T2                        (180 * ROSE_SLOWHZ)     /* Default T12 T22 value */
                     54: #define        ROSE_DEFAULT_T3                 (180 * ROSE_SLOWHZ)     /* Default T13 T23 value */
                     55: #define        ROSE_DEFAULT_HB                 (5 * ROSE_SLOWHZ)       /* Default Holdback value */
                     56: #define        ROSE_DEFAULT_ROUTING            1                       /* Default routing flag */
                     57: #define        ROSE_DEFAULT_FAIL_TIMEOUT       (120 * ROSE_SLOWHZ)     /* Time until link considered usable */
                     58: #define        ROSE_DEFAULT_MAXVC              50                      /* Maximum number of VCs per neighbour */
                     59: #define ROSE_DEFAULT_WINDOW_SIZE       7                       /* Default window value */
                     60: 
                     61: #define ROSE_MODULUS                   8
                     62: #define        ROSE_MAX_PACKET_SIZE            251                     /* Maximum Packet Size */
                     63: 
                     64: #define ROSE_MAX_WINDOW_LEN            ((AX25_BPQ_HEADER_LEN + AX25_MAX_HEADER_LEN + ROSE_MIN_LEN + 300) * 7)
                     65: 
                     66: #define        ROSE_COND_ACK_PENDING           0x01
                     67: #define        ROSE_COND_PEER_RX_BUSY          0x02
                     68: #define        ROSE_COND_OWN_RX_BUSY           0x04
                     69: 
                     70: #define        FAC_NATIONAL                            0x00
                     71: #define        FAC_CCITT                                       0x0F
                     72: 
                     73: #define        FAC_NATIONAL_RAND                       0x7F
                     74: #define        FAC_NATIONAL_FLAGS                      0x3F
                     75: #define        FAC_NATIONAL_DEST_DIGI          0xE9
                     76: #define        FAC_NATIONAL_SRC_DIGI           0xEB
                     77: #define        FAC_NATIONAL_FAIL_CALL          0xED
                     78: #define        FAC_NATIONAL_FAIL_ADD           0xEE
                     79: #define        FAC_NATIONAL_DIGIS                      0xEF
                     80: 
                     81: #define        FAC_CCITT_DEST_NSAP                     0xC9
                     82: #define        FAC_CCITT_SRC_NSAP                      0xCB
                     83: 
                     84: struct rose_neigh {
                     85:        struct rose_neigh       *next;
                     86:        ax25_address            callsign;
                     87:        ax25_digi               *digipeat;
                     88:        ax25_cb                 *ax25;
                     89:        struct device           *dev;
                     90:        unsigned short          count;
                     91:        unsigned short          use;
                     92:        unsigned int            number;
                     93:        char                    restarted;
                     94:        char                    dce_mode;
                     95:        struct sk_buff_head     queue;
                     96:        unsigned short          t0timer, ftimer;
                     97:        struct timer_list       timer;
                     98: };
                     99: 
                    100: #define ROSE_MAX_ALTERNATE 3
                    101: struct rose_node {
                    102:        struct rose_node        *next;
                    103:        rose_address            address;
                    104:        unsigned short          mask;
                    105:        unsigned char           count;
                    106:        struct rose_neigh       *neighbour[ROSE_MAX_ALTERNATE];
                    107: };
                    108: 
                    109: typedef struct {
                    110:        unsigned int            lci;
                    111:        struct rose_neigh       *neigh;
                    112:        unsigned short          vs, vr, va, vl;
                    113:        unsigned short          pending;
                    114:        unsigned char           state, condition;
                    115:        struct timer_list       timer;
                    116: } rose_tr;
                    117: 
                    118: struct rose_route {
                    119:        struct rose_route       *next;
                    120:        rose_address            src_addr, dest_addr;
                    121:        ax25_address            src_call, dest_call;
                    122:        rose_tr                         tr1, tr2;
                    123:        unsigned int            rand;
                    124: };
                    125: 
                    126: typedef struct {
                    127:        rose_address            source_addr,   dest_addr;
                    128:        ax25_address            source_call,   dest_call;
                    129:        unsigned char           source_ndigis, dest_ndigis;
                    130:        ax25_address            source_digis[ROSE_MAX_DIGIS];
                    131:        ax25_address            dest_digis[ROSE_MAX_DIGIS];
                    132:        struct rose_neigh       *neighbour;
                    133:        struct device           *device;
                    134:        unsigned int            lci, rand;
                    135:        unsigned char           state, condition, qbitincl, defer;
                    136:        unsigned char           cause, diagnostic;
                    137:        unsigned short          vs, vr, va, vl;
                    138:        unsigned short          timer;
                    139:        unsigned short          t1, t2, t3, hb;
                    140: #ifdef M_BIT
                    141:        unsigned short          fraglen;
                    142:        struct sk_buff_head     frag_queue;
                    143: #endif
                    144:        struct sk_buff_head     ack_queue;
                    145:        struct rose_facilities_struct facilities;
                    146:        struct sock             *sk;            /* Backlink to socket */
                    147: } rose_cb;
                    148: 
                    149: /* af_rose.c */
                    150: extern ax25_address rose_callsign;
                    151: extern int  sysctl_rose_restart_request_timeout;
                    152: extern int  sysctl_rose_call_request_timeout;
                    153: extern int  sysctl_rose_reset_request_timeout;
                    154: extern int  sysctl_rose_clear_request_timeout;
                    155: extern int  sysctl_rose_ack_hold_back_timeout;
                    156: extern int  sysctl_rose_routing_control;
                    157: extern int  sysctl_rose_link_fail_timeout;
                    158: extern int  sysctl_rose_maximum_vcs;
                    159: extern int  sysctl_rose_window_size;
                    160: extern int  rosecmp(rose_address *, rose_address *);
                    161: extern int  rosecmpm(rose_address *, rose_address *, unsigned short);
                    162: extern char *rose2asc(rose_address *);
                    163: extern void rose_kill_by_neigh(struct rose_neigh *);
                    164: extern struct sock *rose_find_socket(unsigned int, struct rose_neigh *);
                    165: extern unsigned int rose_new_lci(struct rose_neigh *);
                    166: extern int  rose_rx_call_request(struct sk_buff *, struct device *, struct rose_neigh *, unsigned int);
                    167: extern void rose_destroy_socket(struct sock *);
                    168: 
                    169: /* rose_dev.c */
                    170: extern int  rose_rx_ip(struct sk_buff *, struct device *);
                    171: extern int  rose_init(struct device *);
                    172: 
                    173: #include <net/rosecall.h>
                    174: 
                    175: /* rose_in.c */
                    176: extern int  rose_process_rx_frame(struct sock *, struct sk_buff *);
                    177: 
                    178: /* rose_link.c */
                    179: extern void rose_link_set_timer(struct rose_neigh *);
                    180: extern void rose_link_rx_restart(struct sk_buff *, struct rose_neigh *, unsigned short);
                    181: extern void rose_transmit_restart_request(struct rose_neigh *);
                    182: extern void rose_transmit_restart_confirmation(struct rose_neigh *);
                    183: extern void rose_transmit_diagnostic(struct rose_neigh *, unsigned char);
                    184: extern void rose_transmit_clear_request(struct rose_neigh *, unsigned int, unsigned char, unsigned char);
                    185: extern void rose_transmit_link(struct sk_buff *, struct rose_neigh *);
                    186: 
                    187: /* rose_loopback.c */
                    188: extern void rose_loopback_init(void);
                    189: extern void rose_loopback_clear(void);
                    190: extern int rose_loopback_queue(struct sk_buff *, struct rose_neigh *);
                    191: 
                    192: /* rose_out.c */
                    193: extern void rose_kick(struct sock *);
                    194: extern void rose_enquiry_response(struct sock *);
                    195: 
                    196: /* rose_route.c */
                    197: extern void rose_rt_device_down(struct device *);
                    198: extern void rose_link_device_down(struct device *);
                    199: extern void rose_clean_neighbour(struct rose_neigh *);
                    200: extern struct device *rose_dev_first(void);
                    201: extern struct device *rose_dev_get(rose_address *);
                    202: extern struct rose_route *rose_route_free_lci(unsigned int, struct rose_neigh *);
                    203: extern struct device *rose_ax25_dev_get(char *);
                    204: extern struct rose_neigh *rose_get_neigh(rose_address *, unsigned char *, unsigned char *);
                    205: extern int  rose_rt_ioctl(unsigned int, void *);
                    206: extern void rose_link_failed(ax25_cb *, int);
                    207: extern int  rose_route_frame(struct sk_buff *, ax25_cb *);
                    208: extern int  rose_nodes_get_info(char *, char **, off_t, int, int);
                    209: extern int  rose_neigh_get_info(char *, char **, off_t, int, int);
                    210: extern int  rose_routes_get_info(char *, char **, off_t, int, int);
                    211: extern void rose_rt_free(void);
                    212: 
                    213: /* rose_subr.c */
                    214: extern void rose_clear_queues(struct sock *);
                    215: extern void rose_frames_acked(struct sock *, unsigned short);
                    216: extern int  rose_validate_nr(struct sock *, unsigned short);
                    217: extern void rose_write_internal(struct sock *, int);
                    218: extern int  rose_decode(struct sk_buff *, int *, int *, int *, int *, int *);
                    219: extern int  rose_parse_facilities(unsigned char *, struct rose_facilities_struct *);
                    220: extern int  rose_create_facilities(unsigned char *, rose_cb *);
                    221: 
                    222: /* rose_timer.c */
                    223: extern void rose_set_timer(struct sock *);
                    224: 
                    225: /* sysctl_net_rose.c */
                    226: extern void rose_register_sysctl(void);
                    227: extern void rose_unregister_sysctl(void);
                    228: 
                    229: /* rose_transit.c */
                    230: void rose_transit(struct sk_buff *, rose_tr *, rose_tr *);
                    231: void rose_init_transit(rose_tr *, unsigned int, struct rose_neigh *);
                    232: 
                    233: #endif

unix.superglobalmegacorp.com

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