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

📄 sm_statetable.c

📁 在linux环境下的流控制传输协议(sctp)的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
	TYPE_SCTP_FUNC(sctp_sf_do_prm_requestheartbeat),          \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_do_prm_requestheartbeat),          \} /* TYPE_SCTP_PRIMITIVE_REQUESTHEARTBEAT */#define TYPE_SCTP_PRIMITIVE_ASCONF { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_error_closed), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_error_closed), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_error_closed), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_do_prm_asconf), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_do_prm_asconf), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_do_prm_asconf), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_do_prm_asconf), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_error_shutdown), \} /* TYPE_SCTP_PRIMITIVE_REQUESTHEARTBEAT *//* The primary index for this table is the primitive type. * The secondary index for this table is the state. */static const sctp_sm_table_entry_t primitive_event_table[SCTP_NUM_PRIMITIVE_TYPES][SCTP_STATE_NUM_STATES] = {	TYPE_SCTP_PRIMITIVE_ASSOCIATE,	TYPE_SCTP_PRIMITIVE_SHUTDOWN,	TYPE_SCTP_PRIMITIVE_ABORT,	TYPE_SCTP_PRIMITIVE_SEND,	TYPE_SCTP_PRIMITIVE_REQUESTHEARTBEAT,	TYPE_SCTP_PRIMITIVE_ASCONF,};#define TYPE_SCTP_OTHER_NO_PENDING_TSN  { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_other), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_other), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_other), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_other), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_do_9_2_start_shutdown), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_other), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_do_9_2_shutdown_ack), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_other), \}#define TYPE_SCTP_OTHER_ICMP_PROTO_UNREACH  { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_other), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_cookie_wait_icmp_abort), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_other), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_other), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_other), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_other), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_other), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_other), \}static const sctp_sm_table_entry_t other_event_table[SCTP_NUM_OTHER_TYPES][SCTP_STATE_NUM_STATES] = {	TYPE_SCTP_OTHER_NO_PENDING_TSN,	TYPE_SCTP_OTHER_ICMP_PROTO_UNREACH,};#define TYPE_SCTP_EVENT_TIMEOUT_NONE { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \}#define TYPE_SCTP_EVENT_TIMEOUT_T1_COOKIE { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_t1_cookie_timer_expire), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \}#define TYPE_SCTP_EVENT_TIMEOUT_T1_INIT { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_t1_init_timer_expire), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \}#define TYPE_SCTP_EVENT_TIMEOUT_T2_SHUTDOWN { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_t2_timer_expire), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_t2_timer_expire), \}#define TYPE_SCTP_EVENT_TIMEOUT_T3_RTX { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_do_6_3_3_rtx), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_do_6_3_3_rtx), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_do_6_3_3_rtx), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_do_6_3_3_rtx), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \}#define TYPE_SCTP_EVENT_TIMEOUT_T4_RTO { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_t4_timer_expire), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \}#define TYPE_SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_t5_timer_expire), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_t5_timer_expire), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \}#define TYPE_SCTP_EVENT_TIMEOUT_HEARTBEAT { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_sendbeat_8_3), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_sendbeat_8_3), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_sendbeat_8_3), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \}#define TYPE_SCTP_EVENT_TIMEOUT_SACK { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_do_6_2_sack), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_do_6_2_sack), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_do_6_2_sack), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \}#define TYPE_SCTP_EVENT_TIMEOUT_AUTOCLOSE { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_autoclose_timer_expire), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \}static const sctp_sm_table_entry_t timeout_event_table[SCTP_NUM_TIMEOUT_TYPES][SCTP_STATE_NUM_STATES] = {	TYPE_SCTP_EVENT_TIMEOUT_NONE,	TYPE_SCTP_EVENT_TIMEOUT_T1_COOKIE,	TYPE_SCTP_EVENT_TIMEOUT_T1_INIT,	TYPE_SCTP_EVENT_TIMEOUT_T2_SHUTDOWN,	TYPE_SCTP_EVENT_TIMEOUT_T3_RTX,	TYPE_SCTP_EVENT_TIMEOUT_T4_RTO,	TYPE_SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD,	TYPE_SCTP_EVENT_TIMEOUT_HEARTBEAT,	TYPE_SCTP_EVENT_TIMEOUT_SACK,	TYPE_SCTP_EVENT_TIMEOUT_AUTOCLOSE,};static const sctp_sm_table_entry_t *sctp_chunk_event_lookup(sctp_cid_t cid,							    sctp_state_t state){	if (state > SCTP_STATE_MAX)		return &bug;	if (cid <= SCTP_CID_BASE_MAX)		return &chunk_event_table[cid][state];	if (sctp_prsctp_enable) {		if (cid == SCTP_CID_FWD_TSN)			return &prsctp_chunk_event_table[0][state];	}	if (sctp_addip_enable) {		if (cid == SCTP_CID_ASCONF)			return &addip_chunk_event_table[0][state];		if (cid == SCTP_CID_ASCONF_ACK)			return &addip_chunk_event_table[1][state];	}	if (sctp_auth_enable) {		if (cid == SCTP_CID_AUTH)			return &auth_chunk_event_table[0][state];	}	return &chunk_event_table_unknown[state];}

⌨️ 快捷键说明

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