root/include/net/llc_c_ev.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. llc_conn_ev
  2. llc_conn_space

   1 #ifndef LLC_C_EV_H
   2 #define LLC_C_EV_H
   3 /*
   4  * Copyright (c) 1997 by Procom Technology,Inc.
   5  *               2001 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 
  15 #include <net/sock.h>
  16 
  17 /* Connection component state transition event qualifiers */
  18 /* Types of events (possible values in 'ev->type') */
  19 #define LLC_CONN_EV_TYPE_SIMPLE          1
  20 #define LLC_CONN_EV_TYPE_CONDITION       2
  21 #define LLC_CONN_EV_TYPE_PRIM            3
  22 #define LLC_CONN_EV_TYPE_PDU             4      /* command/response PDU */
  23 #define LLC_CONN_EV_TYPE_ACK_TMR         5
  24 #define LLC_CONN_EV_TYPE_P_TMR           6
  25 #define LLC_CONN_EV_TYPE_REJ_TMR         7
  26 #define LLC_CONN_EV_TYPE_BUSY_TMR        8
  27 #define LLC_CONN_EV_TYPE_RPT_STATUS      9
  28 #define LLC_CONN_EV_TYPE_SENDACK_TMR    10
  29 
  30 #define NBR_CONN_EV                5
  31 /* Connection events which cause state transitions when fully qualified */
  32 
  33 #define LLC_CONN_EV_CONN_REQ                             1
  34 #define LLC_CONN_EV_CONN_RESP                            2
  35 #define LLC_CONN_EV_DATA_REQ                             3
  36 #define LLC_CONN_EV_DISC_REQ                             4
  37 #define LLC_CONN_EV_RESET_REQ                            5
  38 #define LLC_CONN_EV_RESET_RESP                           6
  39 #define LLC_CONN_EV_LOCAL_BUSY_DETECTED                  7
  40 #define LLC_CONN_EV_LOCAL_BUSY_CLEARED                   8
  41 #define LLC_CONN_EV_RX_BAD_PDU                           9
  42 #define LLC_CONN_EV_RX_DISC_CMD_Pbit_SET_X              10
  43 #define LLC_CONN_EV_RX_DM_RSP_Fbit_SET_X                11
  44 #define LLC_CONN_EV_RX_FRMR_RSP_Fbit_SET_X              12
  45 #define LLC_CONN_EV_RX_I_CMD_Pbit_SET_X                 13
  46 #define LLC_CONN_EV_RX_I_CMD_Pbit_SET_X_UNEXPD_Ns       14
  47 #define LLC_CONN_EV_RX_I_CMD_Pbit_SET_X_INVAL_Ns        15
  48 #define LLC_CONN_EV_RX_I_RSP_Fbit_SET_X                 16
  49 #define LLC_CONN_EV_RX_I_RSP_Fbit_SET_X_UNEXPD_Ns       17
  50 #define LLC_CONN_EV_RX_I_RSP_Fbit_SET_X_INVAL_Ns        18
  51 #define LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_X               19
  52 #define LLC_CONN_EV_RX_REJ_RSP_Fbit_SET_X               20
  53 #define LLC_CONN_EV_RX_RNR_CMD_Pbit_SET_X               21
  54 #define LLC_CONN_EV_RX_RNR_RSP_Fbit_SET_X               22
  55 #define LLC_CONN_EV_RX_RR_CMD_Pbit_SET_X                23
  56 #define LLC_CONN_EV_RX_RR_RSP_Fbit_SET_X                24
  57 #define LLC_CONN_EV_RX_SABME_CMD_Pbit_SET_X             25
  58 #define LLC_CONN_EV_RX_UA_RSP_Fbit_SET_X                26
  59 #define LLC_CONN_EV_RX_XXX_CMD_Pbit_SET_X               27
  60 #define LLC_CONN_EV_RX_XXX_RSP_Fbit_SET_X               28
  61 #define LLC_CONN_EV_RX_XXX_YYY                          29
  62 #define LLC_CONN_EV_RX_ZZZ_CMD_Pbit_SET_X_INVAL_Nr      30
  63 #define LLC_CONN_EV_RX_ZZZ_RSP_Fbit_SET_X_INVAL_Nr      31
  64 #define LLC_CONN_EV_P_TMR_EXP                           32
  65 #define LLC_CONN_EV_ACK_TMR_EXP                         33
  66 #define LLC_CONN_EV_REJ_TMR_EXP                         34
  67 #define LLC_CONN_EV_BUSY_TMR_EXP                        35
  68 #define LLC_CONN_EV_RX_XXX_CMD_Pbit_SET_1               36
  69 #define LLC_CONN_EV_RX_XXX_CMD_Pbit_SET_0               37
  70 #define LLC_CONN_EV_RX_I_CMD_Pbit_SET_0_UNEXPD_Ns       38
  71 #define LLC_CONN_EV_RX_I_RSP_Fbit_SET_0_UNEXPD_Ns       39
  72 #define LLC_CONN_EV_RX_I_RSP_Fbit_SET_1_UNEXPD_Ns       40
  73 #define LLC_CONN_EV_RX_I_CMD_Pbit_SET_1_UNEXPD_Ns       41
  74 #define LLC_CONN_EV_RX_I_CMD_Pbit_SET_0                 42
  75 #define LLC_CONN_EV_RX_I_RSP_Fbit_SET_0                 43
  76 #define LLC_CONN_EV_RX_I_CMD_Pbit_SET_1                 44
  77 #define LLC_CONN_EV_RX_RR_CMD_Pbit_SET_0                45
  78 #define LLC_CONN_EV_RX_RR_RSP_Fbit_SET_0                46
  79 #define LLC_CONN_EV_RX_RR_RSP_Fbit_SET_1                47
  80 #define LLC_CONN_EV_RX_RR_CMD_Pbit_SET_1                48
  81 #define LLC_CONN_EV_RX_RNR_CMD_Pbit_SET_0               49
  82 #define LLC_CONN_EV_RX_RNR_RSP_Fbit_SET_0               50
  83 #define LLC_CONN_EV_RX_RNR_RSP_Fbit_SET_1               51
  84 #define LLC_CONN_EV_RX_RNR_CMD_Pbit_SET_1               52
  85 #define LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_0               53
  86 #define LLC_CONN_EV_RX_REJ_RSP_Fbit_SET_0               54
  87 #define LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_1               55
  88 #define LLC_CONN_EV_RX_I_RSP_Fbit_SET_1                 56
  89 #define LLC_CONN_EV_RX_REJ_RSP_Fbit_SET_1               57
  90 #define LLC_CONN_EV_RX_XXX_RSP_Fbit_SET_1               58
  91 #define LLC_CONN_EV_TX_BUFF_FULL                        59
  92 
  93 #define LLC_CONN_EV_INIT_P_F_CYCLE                      100
  94 /*
  95  * Connection event qualifiers; for some events a certain combination of
  96  * these qualifiers must be TRUE before event recognized valid for state;
  97  * these constants act as indexes into the Event Qualifier function
  98  * table
  99  */
 100 #define LLC_CONN_EV_QFY_DATA_FLAG_EQ_1           1
 101 #define LLC_CONN_EV_QFY_DATA_FLAG_EQ_0           2
 102 #define LLC_CONN_EV_QFY_DATA_FLAG_EQ_2           3
 103 #define LLC_CONN_EV_QFY_P_FLAG_EQ_1              4
 104 #define LLC_CONN_EV_QFY_P_FLAG_EQ_0              5
 105 #define LLC_CONN_EV_QFY_P_FLAG_EQ_Fbit           6
 106 #define LLC_CONN_EV_QFY_REMOTE_BUSY_EQ_0         7
 107 #define LLC_CONN_EV_QFY_RETRY_CNT_LT_N2          8
 108 #define LLC_CONN_EV_QFY_RETRY_CNT_GTE_N2         9
 109 #define LLC_CONN_EV_QFY_S_FLAG_EQ_1             10
 110 #define LLC_CONN_EV_QFY_S_FLAG_EQ_0             11
 111 #define LLC_CONN_EV_QFY_INIT_P_F_CYCLE          12
 112 
 113 struct llc_conn_state_ev {
 114         u8 type;
 115         u8 prim;
 116         u8 prim_type;
 117         u8 reason;
 118         u8 status;
 119         u8 ind_prim;
 120         u8 cfm_prim;
 121 };
 122 
 123 static __inline__ struct llc_conn_state_ev *llc_conn_ev(struct sk_buff *skb)
 124 {
 125         return (struct llc_conn_state_ev *)skb->cb;
 126 }
 127 
 128 typedef int (*llc_conn_ev_t)(struct sock *sk, struct sk_buff *skb);
 129 typedef int (*llc_conn_ev_qfyr_t)(struct sock *sk, struct sk_buff *skb);
 130 
 131 int llc_conn_ev_conn_req(struct sock *sk, struct sk_buff *skb);
 132 int llc_conn_ev_data_req(struct sock *sk, struct sk_buff *skb);
 133 int llc_conn_ev_disc_req(struct sock *sk, struct sk_buff *skb);
 134 int llc_conn_ev_rst_req(struct sock *sk, struct sk_buff *skb);
 135 int llc_conn_ev_local_busy_detected(struct sock *sk, struct sk_buff *skb);
 136 int llc_conn_ev_local_busy_cleared(struct sock *sk, struct sk_buff *skb);
 137 int llc_conn_ev_rx_bad_pdu(struct sock *sk, struct sk_buff *skb);
 138 int llc_conn_ev_rx_disc_cmd_pbit_set_x(struct sock *sk, struct sk_buff *skb);
 139 int llc_conn_ev_rx_dm_rsp_fbit_set_x(struct sock *sk, struct sk_buff *skb);
 140 int llc_conn_ev_rx_frmr_rsp_fbit_set_x(struct sock *sk, struct sk_buff *skb);
 141 int llc_conn_ev_rx_i_cmd_pbit_set_x_inval_ns(struct sock *sk,
 142                                              struct sk_buff *skb);
 143 int llc_conn_ev_rx_i_rsp_fbit_set_x(struct sock *sk, struct sk_buff *skb);
 144 int llc_conn_ev_rx_i_rsp_fbit_set_x_unexpd_ns(struct sock *sk,
 145                                               struct sk_buff *skb);
 146 int llc_conn_ev_rx_i_rsp_fbit_set_x_inval_ns(struct sock *sk,
 147                                              struct sk_buff *skb);
 148 int llc_conn_ev_rx_rej_rsp_fbit_set_x(struct sock *sk, struct sk_buff *skb);
 149 int llc_conn_ev_rx_sabme_cmd_pbit_set_x(struct sock *sk, struct sk_buff *skb);
 150 int llc_conn_ev_rx_ua_rsp_fbit_set_x(struct sock *sk, struct sk_buff *skb);
 151 int llc_conn_ev_rx_xxx_cmd_pbit_set_x(struct sock *sk, struct sk_buff *skb);
 152 int llc_conn_ev_rx_xxx_rsp_fbit_set_x(struct sock *sk, struct sk_buff *skb);
 153 int llc_conn_ev_rx_zzz_cmd_pbit_set_x_inval_nr(struct sock *sk,
 154                                                struct sk_buff *skb);
 155 int llc_conn_ev_rx_zzz_rsp_fbit_set_x_inval_nr(struct sock *sk,
 156                                                struct sk_buff *skb);
 157 int llc_conn_ev_p_tmr_exp(struct sock *sk, struct sk_buff *skb);
 158 int llc_conn_ev_ack_tmr_exp(struct sock *sk, struct sk_buff *skb);
 159 int llc_conn_ev_rej_tmr_exp(struct sock *sk, struct sk_buff *skb);
 160 int llc_conn_ev_busy_tmr_exp(struct sock *sk, struct sk_buff *skb);
 161 int llc_conn_ev_sendack_tmr_exp(struct sock *sk, struct sk_buff *skb);
 162 /* NOT_USED functions and their variations */
 163 int llc_conn_ev_rx_xxx_cmd_pbit_set_1(struct sock *sk, struct sk_buff *skb);
 164 int llc_conn_ev_rx_xxx_rsp_fbit_set_1(struct sock *sk, struct sk_buff *skb);
 165 int llc_conn_ev_rx_i_cmd_pbit_set_0_unexpd_ns(struct sock *sk,
 166                                               struct sk_buff *skb);
 167 int llc_conn_ev_rx_i_cmd_pbit_set_1_unexpd_ns(struct sock *sk,
 168                                               struct sk_buff *skb);
 169 int llc_conn_ev_rx_i_cmd_pbit_set_0(struct sock *sk, struct sk_buff *skb);
 170 int llc_conn_ev_rx_i_cmd_pbit_set_1(struct sock *sk, struct sk_buff *skb);
 171 int llc_conn_ev_rx_i_rsp_fbit_set_0_unexpd_ns(struct sock *sk,
 172                                               struct sk_buff *skb);
 173 int llc_conn_ev_rx_i_rsp_fbit_set_1_unexpd_ns(struct sock *sk,
 174                                               struct sk_buff *skb);
 175 int llc_conn_ev_rx_i_rsp_fbit_set_0(struct sock *sk, struct sk_buff *skb);
 176 int llc_conn_ev_rx_i_rsp_fbit_set_1(struct sock *sk, struct sk_buff *skb);
 177 int llc_conn_ev_rx_rr_cmd_pbit_set_0(struct sock *sk, struct sk_buff *skb);
 178 int llc_conn_ev_rx_rr_cmd_pbit_set_1(struct sock *sk, struct sk_buff *skb);
 179 int llc_conn_ev_rx_rr_rsp_fbit_set_0(struct sock *sk, struct sk_buff *skb);
 180 int llc_conn_ev_rx_rr_rsp_fbit_set_1(struct sock *sk, struct sk_buff *skb);
 181 int llc_conn_ev_rx_rnr_cmd_pbit_set_0(struct sock *sk, struct sk_buff *skb);
 182 int llc_conn_ev_rx_rnr_cmd_pbit_set_1(struct sock *sk, struct sk_buff *skb);
 183 int llc_conn_ev_rx_rnr_rsp_fbit_set_0(struct sock *sk, struct sk_buff *skb);
 184 int llc_conn_ev_rx_rnr_rsp_fbit_set_1(struct sock *sk, struct sk_buff *skb);
 185 int llc_conn_ev_rx_rej_cmd_pbit_set_0(struct sock *sk, struct sk_buff *skb);
 186 int llc_conn_ev_rx_rej_cmd_pbit_set_1(struct sock *sk, struct sk_buff *skb);
 187 int llc_conn_ev_rx_rej_rsp_fbit_set_0(struct sock *sk, struct sk_buff *skb);
 188 int llc_conn_ev_rx_rej_rsp_fbit_set_1(struct sock *sk, struct sk_buff *skb);
 189 int llc_conn_ev_rx_any_frame(struct sock *sk, struct sk_buff *skb);
 190 int llc_conn_ev_tx_buffer_full(struct sock *sk, struct sk_buff *skb);
 191 int llc_conn_ev_init_p_f_cycle(struct sock *sk, struct sk_buff *skb);
 192 
 193 /* Available connection action qualifiers */
 194 int llc_conn_ev_qlfy_data_flag_eq_1(struct sock *sk, struct sk_buff *skb);
 195 int llc_conn_ev_qlfy_data_flag_eq_0(struct sock *sk, struct sk_buff *skb);
 196 int llc_conn_ev_qlfy_data_flag_eq_2(struct sock *sk, struct sk_buff *skb);
 197 int llc_conn_ev_qlfy_p_flag_eq_1(struct sock *sk, struct sk_buff *skb);
 198 int llc_conn_ev_qlfy_last_frame_eq_1(struct sock *sk, struct sk_buff *skb);
 199 int llc_conn_ev_qlfy_last_frame_eq_0(struct sock *sk, struct sk_buff *skb);
 200 int llc_conn_ev_qlfy_p_flag_eq_0(struct sock *sk, struct sk_buff *skb);
 201 int llc_conn_ev_qlfy_p_flag_eq_f(struct sock *sk, struct sk_buff *skb);
 202 int llc_conn_ev_qlfy_remote_busy_eq_0(struct sock *sk, struct sk_buff *skb);
 203 int llc_conn_ev_qlfy_remote_busy_eq_1(struct sock *sk, struct sk_buff *skb);
 204 int llc_conn_ev_qlfy_retry_cnt_lt_n2(struct sock *sk, struct sk_buff *skb);
 205 int llc_conn_ev_qlfy_retry_cnt_gte_n2(struct sock *sk, struct sk_buff *skb);
 206 int llc_conn_ev_qlfy_s_flag_eq_1(struct sock *sk, struct sk_buff *skb);
 207 int llc_conn_ev_qlfy_s_flag_eq_0(struct sock *sk, struct sk_buff *skb);
 208 int llc_conn_ev_qlfy_cause_flag_eq_1(struct sock *sk, struct sk_buff *skb);
 209 int llc_conn_ev_qlfy_cause_flag_eq_0(struct sock *sk, struct sk_buff *skb);
 210 int llc_conn_ev_qlfy_set_status_conn(struct sock *sk, struct sk_buff *skb);
 211 int llc_conn_ev_qlfy_set_status_disc(struct sock *sk, struct sk_buff *skb);
 212 int llc_conn_ev_qlfy_set_status_failed(struct sock *sk, struct sk_buff *skb);
 213 int llc_conn_ev_qlfy_set_status_remote_busy(struct sock *sk,
 214                                             struct sk_buff *skb);
 215 int llc_conn_ev_qlfy_set_status_refuse(struct sock *sk, struct sk_buff *skb);
 216 int llc_conn_ev_qlfy_set_status_conflict(struct sock *sk, struct sk_buff *skb);
 217 int llc_conn_ev_qlfy_set_status_rst_done(struct sock *sk, struct sk_buff *skb);
 218 
 219 static __inline__ int llc_conn_space(struct sock *sk, struct sk_buff *skb)
 220 {
 221         return atomic_read(&sk->sk_rmem_alloc) + skb->truesize <
 222                (unsigned int)sk->sk_rcvbuf;
 223 }
 224 #endif /* LLC_C_EV_H */

/* [<][>][^][v][top][bottom][index][help] */