root/include/net/netrom.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  *      Declarations of NET/ROM type objects.
   3  *
   4  *      Jonathan Naylor G4KLX   9/4/95
   5  */
   6  
   7 #ifndef _NETROM_H
   8 #define _NETROM_H 
   9 #include <linux/netrom.h>
  10 
  11 #define NR_NETWORK_LEN          15
  12 #define NR_TRANSPORT_LEN        5
  13  
  14 #define NR_PROTO_IP             0x0C
  15 
  16 #define NR_PROTOEXT             0x00
  17 #define NR_CONNREQ              0x01
  18 #define NR_CONNACK              0x02
  19 #define NR_DISCREQ              0x03
  20 #define NR_DISCACK              0x04
  21 #define NR_INFO                 0x05
  22 #define NR_INFOACK              0x06
  23 
  24 #define NR_CHOKE_FLAG           0x80
  25 #define NR_NAK_FLAG             0x40
  26 #define NR_MORE_FLAG            0x20
  27 
  28 /* Define Link State constants. */
  29 
  30 #define NR_STATE_0              0
  31 #define NR_STATE_1              1
  32 #define NR_STATE_2              2
  33 #define NR_STATE_3              3
  34 
  35 #define NR_DEFAULT_T1           (120 * PR_SLOWHZ)       /* Outstanding frames - 10 seconds */
  36 #define NR_DEFAULT_T2           (5   * PR_SLOWHZ)       /* Response delay     - 3 seconds */
  37 #define NR_DEFAULT_N2           3                       /* Number of Retries */
  38 #define NR_DEFAULT_T4           (180 * PR_SLOWHZ)       /* Transport Busy Delay */
  39 #define NR_DEFAULT_WINDOW       4                       /* Default Window Size  */
  40 #define NR_DEFAULT_OBS          6                       /* Default Obscolesence Count */
  41 #define NR_DEFAULT_QUAL         10                      /* Default Neighbour Quality */
  42 #define NR_DEFAULT_TTL          16                      /* Default Time To Live */
  43 #define NR_MODULUS              256
  44 #define NR_MAX_WINDOW_SIZE      127                     /* Maximum Window Allowable */
  45 
  46 typedef struct {
  47         ax25_address            user_addr, source_addr, dest_addr;
  48         struct device           *device;
  49         unsigned char           my_index,    my_id;
  50         unsigned char           your_index,  your_id;
  51         unsigned char           state, bpqext;
  52         unsigned short          vs, vr, va, vl;
  53         unsigned char           condition;
  54         unsigned char           n2, n2count;
  55         unsigned short          t1, t2, rtt;
  56         unsigned short          t1timer, t2timer, t4timer;
  57         unsigned short          fraglen;
  58         struct sk_buff_head     ack_queue;
  59         struct sk_buff_head     reseq_queue;
  60         struct sk_buff_head     frag_queue;
  61         struct sock             *sk;            /* Backlink to socket */
  62 } nr_cb;
  63 
  64 struct nr_route {
  65         unsigned char  quality;
  66         unsigned char  obs_count;
  67         unsigned short neighbour;
  68 };
  69 
  70 struct nr_node {
  71         struct nr_node  *next;
  72         ax25_address    callsign;
  73         char mnemonic[7];
  74         unsigned char   which;
  75         unsigned char   count;
  76         struct nr_route routes[3];
  77 };
  78 
  79 struct nr_neigh {
  80         struct nr_neigh *next;
  81         ax25_address    callsign;
  82         ax25_digi       *digipeat;
  83         struct device   *dev;
  84         unsigned char   quality;
  85         unsigned char   locked;
  86         unsigned short  count;
  87         unsigned short  number;
  88 };
  89 
  90 /* af_netrom.c */
  91 extern struct nr_parms_struct nr_default;
  92 extern int  nr_rx_frame(struct sk_buff *, struct device *);
  93 extern void nr_destroy_socket(struct sock *);
  94 extern int  nr_get_info(char *, char **, off_t, int);
  95 
  96 /* nr_dev.c */
  97 extern int  nr_rx_ip(struct sk_buff *, struct device *);
  98 extern int  nr_init(struct device *);
  99 
 100 #include "nrcall.h"
 101 
 102 /* nr_in.c */
 103 extern int  nr_process_rx_frame(struct sock *, struct sk_buff *);
 104 
 105 /* nr_out.c */
 106 extern void nr_output(struct sock *, struct sk_buff *);
 107 extern void nr_send_nak_frame(struct sock *);
 108 extern void nr_kick(struct sock *);
 109 extern void nr_transmit_buffer(struct sock *, struct sk_buff *);
 110 extern void nr_nr_error_recovery(struct sock *);
 111 extern void nr_establish_data_link(struct sock *);
 112 extern void nr_enquiry_response(struct sock *);
 113 extern void nr_check_iframes_acked(struct sock *, unsigned short);
 114 
 115 /* nr_route.c */
 116 extern void nr_rt_device_down(struct device *);
 117 extern struct device *nr_dev_first(void);
 118 extern struct device *nr_dev_get(ax25_address *);
 119 extern int  nr_rt_ioctl(unsigned int, void *);
 120 extern void nr_link_failed(ax25_address *, struct device *);
 121 extern int  nr_route_frame(struct sk_buff *, ax25_cb *);
 122 extern int  nr_nodes_get_info(char *, char **, off_t, int);
 123 extern int  nr_neigh_get_info(char *, char **, off_t, int);
 124 
 125 /* nr_subr.c */
 126 extern void nr_clear_queues(struct sock *);
 127 extern void nr_frames_acked(struct sock *, unsigned short);
 128 extern void nr_requeue_frames(struct sock *);
 129 extern int  nr_validate_nr(struct sock *, unsigned short);
 130 extern int  nr_in_rx_window(struct sock *, unsigned short);
 131 extern void nr_write_internal(struct sock *, int);
 132 extern void nr_transmit_dm(struct sk_buff *);
 133 extern unsigned short nr_calculate_t1(struct sock *);
 134 extern void nr_calculate_rtt(struct sock *);
 135 
 136 /* ax25_timer */
 137 extern void nr_set_timer(struct sock *);
 138 
 139 #endif

/* [previous][next][first][last][top][bottom][index][help] */