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, condition, bpqext, hdrincl;
  52         unsigned short          vs, vr, va, vl;
  53         unsigned char           n2, n2count;
  54         unsigned short          t1, t2, rtt;
  55         unsigned short          t1timer, t2timer, t4timer;
  56         unsigned short          fraglen;
  57         struct sk_buff_head     ack_queue;
  58         struct sk_buff_head     reseq_queue;
  59         struct sk_buff_head     frag_queue;
  60         struct sock             *sk;            /* Backlink to socket */
  61 } nr_cb;
  62 
  63 struct nr_route {
  64         unsigned char  quality;
  65         unsigned char  obs_count;
  66         unsigned short neighbour;
  67 };
  68 
  69 struct nr_node {
  70         struct nr_node  *next;
  71         ax25_address    callsign;
  72         char mnemonic[7];
  73         unsigned char   which;
  74         unsigned char   count;
  75         struct nr_route routes[3];
  76 };
  77 
  78 struct nr_neigh {
  79         struct nr_neigh *next;
  80         ax25_address    callsign;
  81         ax25_digi       *digipeat;
  82         struct device   *dev;
  83         unsigned char   quality;
  84         unsigned char   locked;
  85         unsigned short  count;
  86         unsigned short  number;
  87 };
  88 
  89 /* af_netrom.c */
  90 extern struct nr_parms_struct nr_default;
  91 extern int  nr_rx_frame(struct sk_buff *, struct device *);
  92 extern void nr_destroy_socket(struct sock *);
  93 /*extern int  nr_get_info(char *, char **, off_t, int, int);*/
  94 
  95 /* nr_dev.c */
  96 extern int  nr_rx_ip(struct sk_buff *, struct device *);
  97 extern int  nr_init(struct device *);
  98 
  99 #include <net/nrcall.h>
 100 
 101 /* nr_in.c */
 102 extern int  nr_process_rx_frame(struct sock *, struct sk_buff *);
 103 
 104 /* nr_out.c */
 105 extern void nr_output(struct sock *, struct sk_buff *);
 106 extern void nr_send_nak_frame(struct sock *);
 107 extern void nr_kick(struct sock *);
 108 extern void nr_transmit_buffer(struct sock *, struct sk_buff *);
 109 extern void nr_nr_error_recovery(struct sock *);
 110 extern void nr_establish_data_link(struct sock *);
 111 extern void nr_enquiry_response(struct sock *);
 112 extern void nr_check_iframes_acked(struct sock *, unsigned short);
 113 
 114 /* nr_route.c */
 115 extern void nr_rt_device_down(struct device *);
 116 extern struct device *nr_dev_first(void);
 117 extern struct device *nr_dev_get(ax25_address *);
 118 extern int  nr_rt_ioctl(unsigned int, void *);
 119 extern void nr_link_failed(ax25_address *, struct device *);
 120 extern int  nr_route_frame(struct sk_buff *, ax25_cb *);
 121 extern int  nr_nodes_get_info(char *, char **, off_t, int, int);
 122 extern int  nr_neigh_get_info(char *, char **, off_t, int, int);
 123 
 124 /* nr_subr.c */
 125 extern void nr_clear_queues(struct sock *);
 126 extern void nr_frames_acked(struct sock *, unsigned short);
 127 extern void nr_requeue_frames(struct sock *);
 128 extern int  nr_validate_nr(struct sock *, unsigned short);
 129 extern int  nr_in_rx_window(struct sock *, unsigned short);
 130 extern void nr_write_internal(struct sock *, int);
 131 extern void nr_transmit_dm(struct sk_buff *);
 132 extern unsigned short nr_calculate_t1(struct sock *);
 133 extern void nr_calculate_rtt(struct sock *);
 134 
 135 /* ax25_timer */
 136 extern void nr_set_timer(struct sock *);
 137 
 138 #endif

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