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

📄 sm_statetable.c

📁 在linux环境下的流控制传输协议(sctp)的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
} /* TYPE_SCTP_COOKIE_ECHO */#define TYPE_SCTP_COOKIE_ACK { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_ootb), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_do_5_1E_ca), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \} /* TYPE_SCTP_COOKIE_ACK */#define TYPE_SCTP_ECN_ECNE { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_ootb), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_do_ecne), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_do_ecne), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_do_ecne), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_do_ecne), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_do_ecne), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \} /* TYPE_SCTP_ECN_ECNE */#define TYPE_SCTP_ECN_CWR { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_ootb), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_do_ecn_cwr), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_do_ecn_cwr), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_do_ecn_cwr), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \} /* TYPE_SCTP_ECN_CWR */#define TYPE_SCTP_SHUTDOWN_COMPLETE { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_ootb), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_do_4_C), \} /* TYPE_SCTP_SHUTDOWN_COMPLETE *//* The primary index for this table is the chunk type. * The secondary index for this table is the state. * * For base protocol (RFC 2960). */static const sctp_sm_table_entry_t chunk_event_table[SCTP_NUM_BASE_CHUNK_TYPES][SCTP_STATE_NUM_STATES] = {	TYPE_SCTP_DATA,	TYPE_SCTP_INIT,	TYPE_SCTP_INIT_ACK,	TYPE_SCTP_SACK,	TYPE_SCTP_HEARTBEAT,	TYPE_SCTP_HEARTBEAT_ACK,	TYPE_SCTP_ABORT,	TYPE_SCTP_SHUTDOWN,	TYPE_SCTP_SHUTDOWN_ACK,	TYPE_SCTP_ERROR,	TYPE_SCTP_COOKIE_ECHO,	TYPE_SCTP_COOKIE_ACK,	TYPE_SCTP_ECN_ECNE,	TYPE_SCTP_ECN_CWR,	TYPE_SCTP_SHUTDOWN_COMPLETE,}; /* state_fn_t chunk_event_table[][] */#define TYPE_SCTP_ASCONF { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_ootb), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_do_asconf), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_do_asconf), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_do_asconf), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_do_asconf), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \} /* TYPE_SCTP_ASCONF */#define TYPE_SCTP_ASCONF_ACK { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_ootb), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_do_asconf_ack), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_do_asconf_ack), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_do_asconf_ack), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_do_asconf_ack), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \} /* TYPE_SCTP_ASCONF_ACK *//* The primary index for this table is the chunk type. * The secondary index for this table is the state. */static const sctp_sm_table_entry_t addip_chunk_event_table[SCTP_NUM_ADDIP_CHUNK_TYPES][SCTP_STATE_NUM_STATES] = {	TYPE_SCTP_ASCONF,	TYPE_SCTP_ASCONF_ACK,}; /*state_fn_t addip_chunk_event_table[][] */#define TYPE_SCTP_FWD_TSN { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_ootb), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_ootb), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_eat_fwd_tsn), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_eat_fwd_tsn), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_eat_fwd_tsn_fast), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \} /* TYPE_SCTP_FWD_TSN *//* The primary index for this table is the chunk type. * The secondary index for this table is the state. */static const sctp_sm_table_entry_t prsctp_chunk_event_table[SCTP_NUM_PRSCTP_CHUNK_TYPES][SCTP_STATE_NUM_STATES] = {	TYPE_SCTP_FWD_TSN,}; /*state_fn_t prsctp_chunk_event_table[][] */#define TYPE_SCTP_AUTH { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_ootb), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_ootb), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_eat_auth), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_eat_auth), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_eat_auth), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_eat_auth), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_eat_auth), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_eat_auth), \} /* TYPE_SCTP_AUTH *//* The primary index for this table is the chunk type. * The secondary index for this table is the state. */static const sctp_sm_table_entry_t auth_chunk_event_table[SCTP_NUM_AUTH_CHUNK_TYPES][SCTP_STATE_NUM_STATES] = {	TYPE_SCTP_AUTH,}; /*state_fn_t auth_chunk_event_table[][] */static const sctp_sm_table_entry_tchunk_event_table_unknown[SCTP_STATE_NUM_STATES] = {	/* SCTP_STATE_EMPTY */	TYPE_SCTP_FUNC(sctp_sf_ootb),	/* SCTP_STATE_CLOSED */	TYPE_SCTP_FUNC(sctp_sf_ootb),	/* SCTP_STATE_COOKIE_WAIT */	TYPE_SCTP_FUNC(sctp_sf_unk_chunk),	/* SCTP_STATE_COOKIE_ECHOED */	TYPE_SCTP_FUNC(sctp_sf_unk_chunk),	/* SCTP_STATE_ESTABLISHED */	TYPE_SCTP_FUNC(sctp_sf_unk_chunk),	/* SCTP_STATE_SHUTDOWN_PENDING */	TYPE_SCTP_FUNC(sctp_sf_unk_chunk),	/* SCTP_STATE_SHUTDOWN_SENT */	TYPE_SCTP_FUNC(sctp_sf_unk_chunk),	/* SCTP_STATE_SHUTDOWN_RECEIVED */	TYPE_SCTP_FUNC(sctp_sf_unk_chunk),	/* SCTP_STATE_SHUTDOWN_ACK_SENT */	TYPE_SCTP_FUNC(sctp_sf_unk_chunk),};	/* chunk unknown */#define TYPE_SCTP_PRIMITIVE_ASSOCIATE  { \	/* SCTP_STATE_EMPTY */ \	TYPE_SCTP_FUNC(sctp_sf_bug), \	/* SCTP_STATE_CLOSED */ \	TYPE_SCTP_FUNC(sctp_sf_do_prm_asoc), \	/* SCTP_STATE_COOKIE_WAIT */ \	TYPE_SCTP_FUNC(sctp_sf_not_impl), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_not_impl), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_not_impl), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_not_impl), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_not_impl), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_not_impl), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_not_impl), \} /* TYPE_SCTP_PRIMITIVE_ASSOCIATE */#define TYPE_SCTP_PRIMITIVE_SHUTDOWN  { \	/* 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_cookie_wait_prm_shutdown), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_cookie_echoed_prm_shutdown),\	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_do_9_2_prm_shutdown), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_primitive), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_primitive), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_primitive), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_ignore_primitive), \} /* TYPE_SCTP_PRIMITIVE_SHUTDOWN */#define TYPE_SCTP_PRIMITIVE_ABORT  { \	/* 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_cookie_wait_prm_abort), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_cookie_echoed_prm_abort), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_do_9_1_prm_abort), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_shutdown_pending_prm_abort), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_shutdown_sent_prm_abort), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_do_9_1_prm_abort), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_shutdown_ack_sent_prm_abort), \} /* TYPE_SCTP_PRIMITIVE_ABORT */#define TYPE_SCTP_PRIMITIVE_SEND  { \	/* 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_do_prm_send), \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_do_prm_send), \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_do_prm_send), \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_error_shutdown), \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_error_shutdown), \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \	TYPE_SCTP_FUNC(sctp_sf_error_shutdown), \	/* SCTP_STATE_SHUTDOWN_ACK_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_error_shutdown), \} /* TYPE_SCTP_PRIMITIVE_SEND */#define TYPE_SCTP_PRIMITIVE_REQUESTHEARTBEAT  { \	/* 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_do_prm_requestheartbeat),          \	/* SCTP_STATE_COOKIE_ECHOED */ \	TYPE_SCTP_FUNC(sctp_sf_do_prm_requestheartbeat),          \	/* SCTP_STATE_ESTABLISHED */ \	TYPE_SCTP_FUNC(sctp_sf_do_prm_requestheartbeat),          \	/* SCTP_STATE_SHUTDOWN_PENDING */ \	TYPE_SCTP_FUNC(sctp_sf_do_prm_requestheartbeat),          \	/* SCTP_STATE_SHUTDOWN_SENT */ \	TYPE_SCTP_FUNC(sctp_sf_do_prm_requestheartbeat),          \	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \

⌨️ 快捷键说明

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