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

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