linux-bk/include/net/llc_conn.h
<<
>>
Prefs
   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 <linux/llc.h>
  17
  18#define LLC_EVENT                1
  19#define LLC_PACKET               2
  20
  21#define LLC_P_TIME               2
  22#define LLC_ACK_TIME             1
  23#define LLC_REJ_TIME             3
  24#define LLC_BUSY_TIME            3
  25
  26struct llc_timer {
  27        struct timer_list timer;
  28        u16               expire;       /* timer expire time */
  29};
  30
  31struct llc_opt {
  32        struct sock         *sk;                /* sock that has this llc_opt */
  33        struct sockaddr_llc addr;               /* address sock is bound to */
  34        u8                  state;              /* state of connection */
  35        struct llc_sap      *sap;               /* pointer to parent SAP */
  36        struct llc_addr     laddr;              /* lsap/mac pair */
  37        struct llc_addr     daddr;              /* dsap/mac pair */
  38        struct net_device   *dev;               /* device to send to remote */
  39        u8                  retry_count;        /* number of retries */
  40        u8                  ack_must_be_send;
  41        u8                  first_pdu_Ns;
  42        u8                  npta;
  43        struct llc_timer    ack_timer;
  44        struct llc_timer    pf_cycle_timer;
  45        struct llc_timer    rej_sent_timer;
  46        struct llc_timer    busy_state_timer;   /* ind busy clr at remote LLC */
  47        u8                  vS;                 /* seq# next in-seq I-PDU tx'd*/
  48        u8                  vR;                 /* seq# next in-seq I-PDU rx'd*/
  49        u32                 n2;                 /* max nbr re-tx's for timeout*/
  50        u32                 n1;                 /* max nbr octets in I PDU */
  51        u8                  k;                  /* tx window size; max = 127 */
  52        u8                  rw;                 /* rx window size; max = 127 */
  53        u8                  p_flag;             /* state flags */
  54        u8                  f_flag;
  55        u8                  s_flag;
  56        u8                  data_flag;
  57        u8                  remote_busy_flag;
  58        u8                  cause_flag;
  59        struct sk_buff_head pdu_unack_q;        /* PUDs sent/waiting ack */
  60        u16                 link;               /* network layer link number */
  61        u8                  X;                  /* a temporary variable */
  62        u8                  ack_pf;             /* this flag indicates what is
  63                                                   the P-bit of acknowledge */
  64        u8                  failed_data_req; /* recognize that already exist a
  65                                                failed llc_data_req_handler
  66                                                (tx_buffer_full or unacceptable
  67                                                state */
  68        u8                  dec_step;
  69        u8                  inc_cntr;
  70        u8                  dec_cntr;
  71        u8                  connect_step;
  72        u8                  last_nr;       /* NR of last pdu received */
  73        u32                 rx_pdu_hdr;    /* used for saving header of last pdu
  74                                              received and caused sending FRMR.
  75                                              Used for resending FRMR */
  76};
  77
  78#define llc_sk(__sk) ((struct llc_opt *)(__sk)->sk_protinfo)
  79
  80static __inline__ void llc_set_backlog_type(struct sk_buff *skb, char type)
  81{
  82        skb->cb[sizeof(skb->cb) - 1] = type;
  83}
  84
  85static __inline__ char llc_backlog_type(struct sk_buff *skb)
  86{
  87        return skb->cb[sizeof(skb->cb) - 1];
  88}
  89
  90extern struct sock *llc_sk_alloc(int family, int priority);
  91extern void llc_sk_free(struct sock *sk);
  92
  93extern void llc_sk_reset(struct sock *sk);
  94
  95/* Access to a connection */
  96extern int llc_conn_state_process(struct sock *sk, struct sk_buff *skb);
  97extern void llc_conn_send_pdu(struct sock *sk, struct sk_buff *skb);
  98extern void llc_conn_rtn_pdu(struct sock *sk, struct sk_buff *skb);
  99extern void llc_conn_resend_i_pdu_as_cmd(struct sock *sk, u8 nr,
 100                                         u8 first_p_bit);
 101extern void llc_conn_resend_i_pdu_as_rsp(struct sock *sk, u8 nr,
 102                                         u8 first_f_bit);
 103extern int llc_conn_remove_acked_pdus(struct sock *conn, u8 nr,
 104                                      u16 *how_many_unacked);
 105extern struct sock *llc_lookup_established(struct llc_sap *sap,
 106                                           struct llc_addr *daddr,
 107                                           struct llc_addr *laddr);
 108extern void llc_sap_add_socket(struct llc_sap *sap, struct sock *sk);
 109extern void llc_sap_remove_socket(struct llc_sap *sap, struct sock *sk);
 110
 111extern u8 llc_data_accept_state(u8 state);
 112extern void llc_build_offset_table(void);
 113extern int llc_release_sockets(struct llc_sap *sap);
 114#endif /* LLC_CONN_H */
 115
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.