⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 llc_c_st.c

📁 Linux Kernel 2.6.9 for OMAP1710
💻 C
📖 第 1 页 / 共 5 页
字号:
/* * llc_c_st.c - This module contains state transition of connection component. * * Description of event functions and actions there is in 802.2 LLC standard, * or in "llc_c_ac.c" and "llc_c_ev.c" modules. * * Copyright (c) 1997 by Procom Technology, Inc. * 		 2001-2003 by Arnaldo Carvalho de Melo <acme@conectiva.com.br> * * This program can be redistributed or modified under the terms of the * GNU General Public License as published by the Free Software Foundation. * This program is distributed without any warranty or implied warranty * of merchantability or fitness for a particular purpose. * * See the GNU General Public License for more details. */#include <linux/types.h>#include <net/llc_if.h>#include <net/llc_sap.h>#include <net/llc_c_ev.h>#include <net/llc_c_ac.h>#include <net/llc_c_st.h>#define NONE NULL/* COMMON CONNECTION STATE transitions * Common transitions for * LLC_CONN_STATE_NORMAL, * LLC_CONN_STATE_BUSY, * LLC_CONN_STATE_REJ, * LLC_CONN_STATE_AWAIT, * LLC_CONN_STATE_AWAIT_BUSY and * LLC_CONN_STATE_AWAIT_REJ states *//* State transitions for LLC_CONN_EV_DISC_REQ event */static llc_conn_action_t llc_common_actions_1[] = {	[0] = llc_conn_ac_send_disc_cmd_p_set_x,	[1] = llc_conn_ac_start_ack_timer,	[2] = llc_conn_ac_stop_other_timers,	[3] = llc_conn_ac_set_retry_cnt_0,	[4] = llc_conn_ac_set_cause_flag_1,	[5] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_1 = {	.ev	       = llc_conn_ev_disc_req,	.next_state    = LLC_CONN_STATE_D_CONN,	.ev_qualifiers = NONE,	.ev_actions    = llc_common_actions_1,};/* State transitions for LLC_CONN_EV_RESET_REQ event */static llc_conn_action_t llc_common_actions_2[] = {	[0] = llc_conn_ac_send_sabme_cmd_p_set_x,	[1] = llc_conn_ac_start_ack_timer,	[2] = llc_conn_ac_stop_other_timers,	[3] = llc_conn_ac_set_retry_cnt_0,	[4] = llc_conn_ac_set_cause_flag_1,	[5] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_2 = {	.ev	       = llc_conn_ev_rst_req,	.next_state    = LLC_CONN_STATE_RESET,	.ev_qualifiers = NONE,	.ev_actions    = llc_common_actions_2,};/* State transitions for LLC_CONN_EV_RX_SABME_CMD_Pbit_SET_X event */static llc_conn_action_t llc_common_actions_3[] = {	[0] = llc_conn_ac_stop_all_timers,	[1] = llc_conn_ac_set_vs_0,	[2] = llc_conn_ac_set_vr_0,	[3] = llc_conn_ac_send_ua_rsp_f_set_p,	[4] = llc_conn_ac_rst_ind,	[5] = llc_conn_ac_set_p_flag_0,	[6] = llc_conn_ac_set_remote_busy_0,	[7] = llc_conn_reset,	[8] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_3 = {	.ev	       = llc_conn_ev_rx_sabme_cmd_pbit_set_x,	.next_state    = LLC_CONN_STATE_NORMAL,	.ev_qualifiers = NONE,	.ev_actions    = llc_common_actions_3,};/* State transitions for LLC_CONN_EV_RX_DISC_CMD_Pbit_SET_X event */static llc_conn_action_t llc_common_actions_4[] = {	[0] = llc_conn_ac_stop_all_timers,	[1] = llc_conn_ac_send_ua_rsp_f_set_p,	[2] = llc_conn_ac_disc_ind,	[3] = llc_conn_disc,	[4] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_4 = {	.ev	       = llc_conn_ev_rx_disc_cmd_pbit_set_x,	.next_state    = LLC_CONN_STATE_ADM,	.ev_qualifiers = NONE,	.ev_actions    = llc_common_actions_4,};/* State transitions for LLC_CONN_EV_RX_FRMR_RSP_Fbit_SET_X event */static llc_conn_action_t llc_common_actions_5[] = {	[0] = llc_conn_ac_send_sabme_cmd_p_set_x,	[1] = llc_conn_ac_start_ack_timer,	[2] = llc_conn_ac_stop_other_timers,	[3] = llc_conn_ac_set_retry_cnt_0,	[4] = llc_conn_ac_rst_ind,	[5] = llc_conn_ac_set_cause_flag_0,	[6] = llc_conn_reset,	[7] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_5 = {	.ev	       = llc_conn_ev_rx_frmr_rsp_fbit_set_x,	.next_state    = LLC_CONN_STATE_RESET,	.ev_qualifiers = NONE,	.ev_actions    = llc_common_actions_5,};/* State transitions for LLC_CONN_EV_RX_DM_RSP_Fbit_SET_X event */static llc_conn_action_t llc_common_actions_6[] = {	[0] = llc_conn_ac_disc_ind,	[1] = llc_conn_ac_stop_all_timers,	[2] = llc_conn_disc,	[3] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_6 = {	.ev	       = llc_conn_ev_rx_dm_rsp_fbit_set_x,	.next_state    = LLC_CONN_STATE_ADM,	.ev_qualifiers = NONE,	.ev_actions    = llc_common_actions_6,};/* State transitions for LLC_CONN_EV_RX_ZZZ_CMD_Pbit_SET_X_INVAL_Nr event */static llc_conn_action_t llc_common_actions_7a[] = {	[0] = llc_conn_ac_send_frmr_rsp_f_set_x,	[1] = llc_conn_ac_start_ack_timer,	[2] = llc_conn_ac_stop_other_timers,	[3] = llc_conn_ac_set_retry_cnt_0,	[4] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_7a = {	.ev	       = llc_conn_ev_rx_zzz_cmd_pbit_set_x_inval_nr,	.next_state    = LLC_CONN_STATE_ERROR,	.ev_qualifiers = NONE,	.ev_actions    = llc_common_actions_7a,};/* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_X_INVAL_Ns event */static llc_conn_action_t llc_common_actions_7b[] = {	[0] = llc_conn_ac_send_frmr_rsp_f_set_x,	[1] = llc_conn_ac_start_ack_timer,	[2] = llc_conn_ac_stop_other_timers,	[3] = llc_conn_ac_set_retry_cnt_0,	[4] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_7b = {	.ev	       = llc_conn_ev_rx_i_cmd_pbit_set_x_inval_ns,	.next_state    = LLC_CONN_STATE_ERROR,	.ev_qualifiers = NONE,	.ev_actions    = llc_common_actions_7b,};/* State transitions for LLC_CONN_EV_RX_ZZZ_RSP_Fbit_SET_X_INVAL_Nr event */static llc_conn_action_t llc_common_actions_8a[] = {	[0] = llc_conn_ac_send_frmr_rsp_f_set_x,	[1] = llc_conn_ac_start_ack_timer,	[2] = llc_conn_ac_stop_other_timers,	[3] = llc_conn_ac_set_retry_cnt_0,	[4] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_8a = {	.ev	       = llc_conn_ev_rx_zzz_rsp_fbit_set_x_inval_nr,	.next_state    = LLC_CONN_STATE_ERROR,	.ev_qualifiers = NONE,	.ev_actions    = llc_common_actions_8a,};/* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_X_INVAL_Ns event */static llc_conn_action_t llc_common_actions_8b[] = {	[0] = llc_conn_ac_send_frmr_rsp_f_set_x,	[1] = llc_conn_ac_start_ack_timer,	[2] = llc_conn_ac_stop_other_timers,	[3] = llc_conn_ac_set_retry_cnt_0,	[4] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_8b = {	.ev	       = llc_conn_ev_rx_i_rsp_fbit_set_x_inval_ns,	.next_state    = LLC_CONN_STATE_ERROR,	.ev_qualifiers = NONE,	.ev_actions    = llc_common_actions_8b,};/* State transitions for LLC_CONN_EV_RX_BAD_PDU event */static llc_conn_action_t llc_common_actions_8c[] = {	[0] = llc_conn_ac_send_frmr_rsp_f_set_x,	[1] = llc_conn_ac_start_ack_timer,	[2] = llc_conn_ac_stop_other_timers,	[3] = llc_conn_ac_set_retry_cnt_0,	[4] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_8c = {	.ev	       = llc_conn_ev_rx_bad_pdu,	.next_state    = LLC_CONN_STATE_ERROR,	.ev_qualifiers = NONE,	.ev_actions    = llc_common_actions_8c,};/* State transitions for LLC_CONN_EV_RX_UA_RSP_Fbit_SET_X event */static llc_conn_action_t llc_common_actions_9[] = {	[0] = llc_conn_ac_send_frmr_rsp_f_set_x,	[1] = llc_conn_ac_start_ack_timer,	[2] = llc_conn_ac_stop_other_timers,	[3] = llc_conn_ac_set_retry_cnt_0,	[4] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_9 = {	.ev	       = llc_conn_ev_rx_ua_rsp_fbit_set_x,	.next_state    = LLC_CONN_STATE_ERROR,	.ev_qualifiers = NONE,	.ev_actions    = llc_common_actions_9,};/* State transitions for LLC_CONN_EV_RX_XXX_RSP_Fbit_SET_1 event */#if 0static llc_conn_ev_qfyr_t llc_common_ev_qfyrs_10[] = {	[0] = llc_conn_ev_qlfy_p_flag_eq_0,	[1] = NULL,};static llc_conn_action_t llc_common_actions_10[] = {	[0] = llc_conn_ac_send_frmr_rsp_f_set_x,	[1] = llc_conn_ac_start_ack_timer,	[2] = llc_conn_ac_stop_other_timers,	[3] = llc_conn_ac_set_retry_cnt_0,	[4] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_10 = {	.ev	       = llc_conn_ev_rx_xxx_rsp_fbit_set_1,	.next_state    = LLC_CONN_STATE_ERROR,	.ev_qualifiers = llc_common_ev_qfyrs_10,	.ev_actions    = llc_common_actions_10,};#endif/* State transitions for LLC_CONN_EV_P_TMR_EXP event */static llc_conn_ev_qfyr_t llc_common_ev_qfyrs_11a[] = {	[0] = llc_conn_ev_qlfy_retry_cnt_gte_n2,	[1] = NULL,};static llc_conn_action_t llc_common_actions_11a[] = {	[0] = llc_conn_ac_send_sabme_cmd_p_set_x,	[1] = llc_conn_ac_start_ack_timer,	[2] = llc_conn_ac_stop_other_timers,	[3] = llc_conn_ac_set_retry_cnt_0,	[4] = llc_conn_ac_set_cause_flag_0,	[5] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_11a = {	.ev	       = llc_conn_ev_p_tmr_exp,	.next_state    = LLC_CONN_STATE_RESET,	.ev_qualifiers = llc_common_ev_qfyrs_11a,	.ev_actions    = llc_common_actions_11a,};/* State transitions for LLC_CONN_EV_ACK_TMR_EXP event */static llc_conn_ev_qfyr_t llc_common_ev_qfyrs_11b[] = {	[0] = llc_conn_ev_qlfy_retry_cnt_gte_n2,	[1] = NULL,};static llc_conn_action_t llc_common_actions_11b[] = {	[0] = llc_conn_ac_send_sabme_cmd_p_set_x,	[1] = llc_conn_ac_start_ack_timer,	[2] = llc_conn_ac_stop_other_timers,	[3] = llc_conn_ac_set_retry_cnt_0,	[4] = llc_conn_ac_set_cause_flag_0,	[5] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_11b = {	.ev	       = llc_conn_ev_ack_tmr_exp,	.next_state    = LLC_CONN_STATE_RESET,	.ev_qualifiers = llc_common_ev_qfyrs_11b,	.ev_actions    = llc_common_actions_11b,};/* State transitions for LLC_CONN_EV_REJ_TMR_EXP event */static llc_conn_ev_qfyr_t llc_common_ev_qfyrs_11c[] = {	[0] = llc_conn_ev_qlfy_retry_cnt_gte_n2,	[1] = NULL,};static llc_conn_action_t llc_common_actions_11c[] = {	[0] = llc_conn_ac_send_sabme_cmd_p_set_x,	[1] = llc_conn_ac_start_ack_timer,	[2] = llc_conn_ac_stop_other_timers,	[3] = llc_conn_ac_set_retry_cnt_0,	[4] = llc_conn_ac_set_cause_flag_0,	[5] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_11c = {	.ev	       = llc_conn_ev_rej_tmr_exp,	.next_state    = LLC_CONN_STATE_RESET,	.ev_qualifiers = llc_common_ev_qfyrs_11c,	.ev_actions    = llc_common_actions_11c,};/* State transitions for LLC_CONN_EV_BUSY_TMR_EXP event */static llc_conn_ev_qfyr_t llc_common_ev_qfyrs_11d[] = {	[0] = llc_conn_ev_qlfy_retry_cnt_gte_n2,	[1] = NULL,};static llc_conn_action_t llc_common_actions_11d[] = {	[0] = llc_conn_ac_send_sabme_cmd_p_set_x,	[1] = llc_conn_ac_start_ack_timer,	[2] = llc_conn_ac_stop_other_timers,	[3] = llc_conn_ac_set_retry_cnt_0,	[4] = llc_conn_ac_set_cause_flag_0,	[5] = NULL,};static struct llc_conn_state_trans llc_common_state_trans_11d = {	.ev	       = llc_conn_ev_busy_tmr_exp,	.next_state    = LLC_CONN_STATE_RESET,	.ev_qualifiers = llc_common_ev_qfyrs_11d,	.ev_actions    = llc_common_actions_11d,};/* * Common dummy state transition; must be last entry for all state * transition groups - it'll be on .bss, so will be zeroed. */static struct llc_conn_state_trans llc_common_state_trans_end;/* LLC_CONN_STATE_ADM transitions *//* State transitions for LLC_CONN_EV_CONN_REQ event */static llc_conn_action_t llc_adm_actions_1[] = {	[0] = llc_conn_ac_send_sabme_cmd_p_set_x,	[1] = llc_conn_ac_start_ack_timer,	[2] = llc_conn_ac_set_retry_cnt_0,	[3] = llc_conn_ac_set_s_flag_0,	[4] = NULL,};static struct llc_conn_state_trans llc_adm_state_trans_1 = {	.ev	       = llc_conn_ev_conn_req,	.next_state    = LLC_CONN_STATE_SETUP,	.ev_qualifiers = NONE,	.ev_actions    = llc_adm_actions_1,};/* State transitions for LLC_CONN_EV_RX_SABME_CMD_Pbit_SET_X event */static llc_conn_action_t llc_adm_actions_2[] = {	[0] = llc_conn_ac_send_ua_rsp_f_set_p,	[1] = llc_conn_ac_set_vs_0,	[2] = llc_conn_ac_set_vr_0,	[3] = llc_conn_ac_set_retry_cnt_0,	[4] = llc_conn_ac_set_p_flag_0,	[5] = llc_conn_ac_set_remote_busy_0,	[6] = llc_conn_ac_conn_ind,	[7] = NULL,};static struct llc_conn_state_trans llc_adm_state_trans_2 = {	.ev	       = llc_conn_ev_rx_sabme_cmd_pbit_set_x,	.next_state    = LLC_CONN_STATE_NORMAL,	.ev_qualifiers = NONE,	.ev_actions    = llc_adm_actions_2,};/* State transitions for LLC_CONN_EV_RX_DISC_CMD_Pbit_SET_X event */static llc_conn_action_t llc_adm_actions_3[] = {	[0] = llc_conn_ac_send_dm_rsp_f_set_p,	[1] = llc_conn_disc,	[2] = NULL,};static struct llc_conn_state_trans llc_adm_state_trans_3 = {	.ev	       = llc_conn_ev_rx_disc_cmd_pbit_set_x,	.next_state    = LLC_CONN_STATE_ADM,	.ev_qualifiers = NONE,	.ev_actions    = llc_adm_actions_3,};/* State transitions for LLC_CONN_EV_RX_XXX_CMD_Pbit_SET_1 event */static llc_conn_action_t llc_adm_actions_4[] = {	[0] = llc_conn_ac_send_dm_rsp_f_set_1,	[1] = llc_conn_disc,	[2] = NULL,};static struct llc_conn_state_trans llc_adm_state_trans_4 = {	.ev	       = llc_conn_ev_rx_xxx_cmd_pbit_set_1,	.next_state    = LLC_CONN_STATE_ADM,	.ev_qualifiers = NONE,	.ev_actions    = llc_adm_actions_4,};/* State transitions for LLC_CONN_EV_RX_XXX_YYY event */static llc_conn_action_t llc_adm_actions_5[] = {	[0] = llc_conn_disc,	[1] = NULL,};static struct llc_conn_state_trans llc_adm_state_trans_5 = {	.ev	       = llc_conn_ev_rx_any_frame,	.next_state    = LLC_CONN_OUT_OF_SVC,	.ev_qualifiers = NONE,	.ev_actions    = llc_adm_actions_5,};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -