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 / llc_conn.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  4.0 KB  |  121 lines

  1. #ifndef LLC_CONN_H
  2. #define LLC_CONN_H
  3. /*
  4.  * Copyright (c) 1997 by Procom Technology, Inc.
  5.  *          2001, 2002 by Arnaldo Carvalho de Melo <acme@conectiva.com.br>
  6.  *
  7.  * This program can be redistributed or modified under the terms of the
  8.  * GNU General Public License as published by the Free Software Foundation.
  9.  * This program is distributed without any warranty or implied warranty
  10.  * of merchantability or fitness for a particular purpose.
  11.  *
  12.  * See the GNU General Public License for more details.
  13.  */
  14. #include <linux/timer.h>
  15. #include <net/llc_if.h>
  16. #include <net/sock.h>
  17. #include <linux/llc.h>
  18.  
  19. #define LLC_EVENT                1
  20. #define LLC_PACKET               2
  21.  
  22. #define LLC2_P_TIME               2
  23. #define LLC2_ACK_TIME             1
  24. #define LLC2_REJ_TIME             3
  25. #define LLC2_BUSY_TIME            3
  26.  
  27. struct llc_timer {
  28.     struct timer_list timer;
  29.     unsigned long      expire;    /* timer expire time */
  30. };
  31.  
  32. struct llc_sock {
  33.     /* struct sock must be the first member of llc_sock */
  34.     struct sock        sk;
  35.     struct sockaddr_llc addr;        /* address sock is bound to */
  36.     u8            state;        /* state of connection */
  37.     struct llc_sap        *sap;        /* pointer to parent SAP */
  38.     struct llc_addr        laddr;        /* lsap/mac pair */
  39.     struct llc_addr        daddr;        /* dsap/mac pair */
  40.     struct net_device   *dev;        /* device to send to remote */
  41.     u32            copied_seq;        /* head of yet unread data */
  42.     u8            retry_count;    /* number of retries */
  43.     u8            ack_must_be_send;
  44.     u8            first_pdu_Ns;
  45.     u8            npta;
  46.     struct llc_timer    ack_timer;
  47.     struct llc_timer    pf_cycle_timer;
  48.     struct llc_timer    rej_sent_timer;
  49.     struct llc_timer    busy_state_timer;    /* ind busy clr at remote LLC */
  50.     u8            vS;            /* seq# next in-seq I-PDU tx'd*/
  51.     u8            vR;            /* seq# next in-seq I-PDU rx'd*/
  52.     u32            n2;            /* max nbr re-tx's for timeout*/
  53.     u32            n1;            /* max nbr octets in I PDU */
  54.     u8            k;            /* tx window size; max = 127 */
  55.     u8            rw;            /* rx window size; max = 127 */
  56.     u8            p_flag;        /* state flags */
  57.     u8            f_flag;
  58.     u8            s_flag;
  59.     u8            data_flag;
  60.     u8            remote_busy_flag;
  61.     u8            cause_flag;
  62.     struct sk_buff_head pdu_unack_q;    /* PUDs sent/waiting ack */
  63.     u16            link;        /* network layer link number */
  64.     u8            X;            /* a temporary variable */
  65.     u8            ack_pf;        /* this flag indicates what is
  66.                            the P-bit of acknowledge */
  67.     u8            failed_data_req; /* recognize that already exist a
  68.                         failed llc_data_req_handler
  69.                         (tx_buffer_full or unacceptable
  70.                         state */
  71.     u8            dec_step;
  72.     u8            inc_cntr;
  73.     u8            dec_cntr;
  74.     u8            connect_step;
  75.     u8            last_nr;       /* NR of last pdu received */
  76.     u32            rx_pdu_hdr;       /* used for saving header of last pdu
  77.                           received and caused sending FRMR.
  78.                           Used for resending FRMR */
  79. };
  80.  
  81. static inline struct llc_sock *llc_sk(const struct sock *sk)
  82. {
  83.     return (struct llc_sock *)sk;
  84. }
  85.  
  86. static __inline__ void llc_set_backlog_type(struct sk_buff *skb, char type)
  87. {
  88.     skb->cb[sizeof(skb->cb) - 1] = type;
  89. }
  90.  
  91. static __inline__ char llc_backlog_type(struct sk_buff *skb)
  92. {
  93.     return skb->cb[sizeof(skb->cb) - 1];
  94. }
  95.  
  96. extern struct sock *llc_sk_alloc(int family, gfp_t priority,
  97.                  struct proto *prot);
  98. extern void llc_sk_free(struct sock *sk);
  99.  
  100. extern void llc_sk_reset(struct sock *sk);
  101.  
  102. /* Access to a connection */
  103. extern int llc_conn_state_process(struct sock *sk, struct sk_buff *skb);
  104. extern void llc_conn_send_pdu(struct sock *sk, struct sk_buff *skb);
  105. extern void llc_conn_rtn_pdu(struct sock *sk, struct sk_buff *skb);
  106. extern void llc_conn_resend_i_pdu_as_cmd(struct sock *sk, u8 nr,
  107.                      u8 first_p_bit);
  108. extern void llc_conn_resend_i_pdu_as_rsp(struct sock *sk, u8 nr,
  109.                      u8 first_f_bit);
  110. extern int llc_conn_remove_acked_pdus(struct sock *conn, u8 nr,
  111.                       u16 *how_many_unacked);
  112. extern struct sock *llc_lookup_established(struct llc_sap *sap,
  113.                        struct llc_addr *daddr,
  114.                        struct llc_addr *laddr);
  115. extern void llc_sap_add_socket(struct llc_sap *sap, struct sock *sk);
  116. extern void llc_sap_remove_socket(struct llc_sap *sap, struct sock *sk);
  117.  
  118. extern u8 llc_data_accept_state(u8 state);
  119. extern void llc_build_offset_table(void);
  120. #endif /* LLC_CONN_H */
  121.