home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / net / lapb.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  4.7 KB  |  153 lines

  1. #ifndef _LAPB_H
  2. #define _LAPB_H 
  3. #include <linux/lapb.h>
  4.  
  5. #define    LAPB_HEADER_LEN    20        /* LAPB over Ethernet + a bit more */
  6.  
  7. #define    LAPB_ACK_PENDING_CONDITION    0x01
  8. #define    LAPB_REJECT_CONDITION        0x02
  9. #define    LAPB_PEER_RX_BUSY_CONDITION    0x04
  10.  
  11. /* Control field templates */
  12. #define    LAPB_I        0x00    /* Information frames */
  13. #define    LAPB_S        0x01    /* Supervisory frames */
  14. #define    LAPB_U        0x03    /* Unnumbered frames */
  15.  
  16. #define    LAPB_RR        0x01    /* Receiver ready */
  17. #define    LAPB_RNR    0x05    /* Receiver not ready */
  18. #define    LAPB_REJ    0x09    /* Reject */
  19.  
  20. #define    LAPB_SABM    0x2F    /* Set Asynchronous Balanced Mode */
  21. #define    LAPB_SABME    0x6F    /* Set Asynchronous Balanced Mode Extended */
  22. #define    LAPB_DISC    0x43    /* Disconnect */
  23. #define    LAPB_DM        0x0F    /* Disconnected mode */
  24. #define    LAPB_UA        0x63    /* Unnumbered acknowledge */
  25. #define    LAPB_FRMR    0x87    /* Frame reject */
  26.  
  27. #define LAPB_ILLEGAL    0x100    /* Impossible to be a real frame type */
  28.  
  29. #define    LAPB_SPF    0x10    /* Poll/final bit for standard LAPB */
  30. #define    LAPB_EPF    0x01    /* Poll/final bit for extended LAPB */
  31.  
  32. #define    LAPB_FRMR_W    0x01    /* Control field invalid    */
  33. #define    LAPB_FRMR_X    0x02    /* I field invalid        */
  34. #define    LAPB_FRMR_Y    0x04    /* I field too long        */
  35. #define    LAPB_FRMR_Z    0x08    /* Invalid N(R)            */
  36.  
  37. #define    LAPB_POLLOFF    0
  38. #define    LAPB_POLLON    1
  39.  
  40. /* LAPB C-bit */
  41. #define LAPB_COMMAND    1
  42. #define LAPB_RESPONSE    2
  43.  
  44. #define    LAPB_ADDR_A    0x03
  45. #define    LAPB_ADDR_B    0x01
  46. #define    LAPB_ADDR_C    0x0F
  47. #define    LAPB_ADDR_D    0x07
  48.  
  49. /* Define Link State constants. */
  50. enum {
  51.     LAPB_STATE_0,    /* Disconnected State        */
  52.     LAPB_STATE_1,    /* Awaiting Connection State    */
  53.     LAPB_STATE_2,    /* Awaiting Disconnection State    */
  54.     LAPB_STATE_3,    /* Data Transfer State        */
  55.     LAPB_STATE_4    /* Frame Reject State        */
  56. };
  57.  
  58. #define    LAPB_DEFAULT_MODE        (LAPB_STANDARD | LAPB_SLP | LAPB_DTE)
  59. #define    LAPB_DEFAULT_WINDOW        7        /* Window=7 */
  60. #define    LAPB_DEFAULT_T1            (5 * HZ)    /* T1=5s    */
  61. #define    LAPB_DEFAULT_T2            (1 * HZ)    /* T2=1s    */
  62. #define    LAPB_DEFAULT_N2            20        /* N2=20    */
  63.  
  64. #define    LAPB_SMODULUS    8
  65. #define    LAPB_EMODULUS    128
  66.  
  67. /*
  68.  *    Information about the current frame.
  69.  */
  70. struct lapb_frame {
  71.     unsigned short        type;        /* Parsed type        */
  72.     unsigned short        nr, ns;        /* N(R), N(S)        */
  73.     unsigned char        cr;        /* Command/Response    */
  74.     unsigned char        pf;        /* Poll/Final        */
  75.     unsigned char        control[2];    /* Original control data*/
  76. };
  77.  
  78. /*
  79.  *    The per LAPB connection control structure.
  80.  */
  81. struct lapb_cb {
  82.     struct list_head    node;
  83.     struct net_device    *dev;
  84.  
  85.     /* Link status fields */
  86.     unsigned int        mode;
  87.     unsigned char        state;
  88.     unsigned short        vs, vr, va;
  89.     unsigned char        condition;
  90.     unsigned short        n2, n2count;
  91.     unsigned short        t1, t2;
  92.     struct timer_list    t1timer, t2timer;
  93.  
  94.     /* Internal control information */
  95.     struct sk_buff_head    write_queue;
  96.     struct sk_buff_head    ack_queue;
  97.     unsigned char        window;
  98.     struct lapb_register_struct callbacks;
  99.  
  100.     /* FRMR control information */
  101.     struct lapb_frame    frmr_data;
  102.     unsigned char        frmr_type;
  103.  
  104.     atomic_t        refcnt;
  105. };
  106.  
  107. /* lapb_iface.c */
  108. extern void lapb_connect_confirmation(struct lapb_cb *lapb, int);
  109. extern void lapb_connect_indication(struct lapb_cb *lapb, int);
  110. extern void lapb_disconnect_confirmation(struct lapb_cb *lapb, int);
  111. extern void lapb_disconnect_indication(struct lapb_cb *lapb, int);
  112. extern int  lapb_data_indication(struct lapb_cb *lapb, struct sk_buff *);
  113. extern int  lapb_data_transmit(struct lapb_cb *lapb, struct sk_buff *);
  114.  
  115. /* lapb_in.c */
  116. extern void lapb_data_input(struct lapb_cb *lapb, struct sk_buff *);
  117.  
  118. /* lapb_out.c */
  119. extern void lapb_kick(struct lapb_cb *lapb);
  120. extern void lapb_transmit_buffer(struct lapb_cb *lapb, struct sk_buff *, int);
  121. extern void lapb_establish_data_link(struct lapb_cb *lapb);
  122. extern void lapb_enquiry_response(struct lapb_cb *lapb);
  123. extern void lapb_timeout_response(struct lapb_cb *lapb);
  124. extern void lapb_check_iframes_acked(struct lapb_cb *lapb, unsigned short);
  125. extern void lapb_check_need_response(struct lapb_cb *lapb, int, int);
  126.  
  127. /* lapb_subr.c */
  128. extern void lapb_clear_queues(struct lapb_cb *lapb);
  129. extern void lapb_frames_acked(struct lapb_cb *lapb, unsigned short);
  130. extern void lapb_requeue_frames(struct lapb_cb *lapb);
  131. extern int  lapb_validate_nr(struct lapb_cb *lapb, unsigned short);
  132. extern int lapb_decode(struct lapb_cb *lapb, struct sk_buff *, struct lapb_frame *);
  133. extern void lapb_send_control(struct lapb_cb *lapb, int, int, int);
  134. extern void lapb_transmit_frmr(struct lapb_cb *lapb);
  135.  
  136. /* lapb_timer.c */
  137. extern void lapb_start_t1timer(struct lapb_cb *lapb);
  138. extern void lapb_start_t2timer(struct lapb_cb *lapb);
  139. extern void lapb_stop_t1timer(struct lapb_cb *lapb);
  140. extern void lapb_stop_t2timer(struct lapb_cb *lapb);
  141. extern int  lapb_t1timer_running(struct lapb_cb *lapb);
  142.  
  143. /*
  144.  * Debug levels.
  145.  *    0 = Off
  146.  *    1 = State Changes
  147.  *    2 = Packets I/O and State Changes
  148.  *    3 = Hex dumps, Packets I/O and State Changes.
  149.  */
  150. #define    LAPB_DEBUG    0
  151.  
  152. #endif
  153.