📄 sm_statetable.c
字号:
/* SCTP_STATE_SHUTDOWN_SENT */ \ {.fn = sctp_sf_do_5_2_4_dupcook, .name = "sctp_sf_do_5_2_4_dupcook"}, \ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \ {.fn = sctp_sf_do_5_2_4_dupcook, .name = "sctp_sf_do_5_2_4_dupcook"}, \ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \ {.fn = sctp_sf_do_5_2_4_dupcook, .name = "sctp_sf_do_5_2_4_dupcook"}, \} /* TYPE_SCTP_COOKIE_ECHO */#define TYPE_SCTP_COOKIE_ACK { \ /* SCTP_STATE_EMPTY */ \ {.fn = sctp_sf_ootb, .name = "sctp_sf_ootb"}, \ /* SCTP_STATE_CLOSED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_COOKIE_WAIT */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_COOKIE_ECHOED */ \ {.fn = sctp_sf_do_5_1E_ca, .name = "sctp_sf_do_5_1E_ca"}, \ /* SCTP_STATE_ESTABLISHED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_PENDING */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_SENT */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \} /* TYPE_SCTP_COOKIE_ACK */#define TYPE_SCTP_ECN_ECNE { \ /* SCTP_STATE_EMPTY */ \ {.fn = sctp_sf_ootb, .name = "sctp_sf_ootb"}, \ /* SCTP_STATE_CLOSED */ \ {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \ /* SCTP_STATE_COOKIE_WAIT */ \ {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \ /* SCTP_STATE_COOKIE_ECHOED */ \ {.fn = sctp_sf_do_ecne, .name = "sctp_sf_do_ecne"}, \ /* SCTP_STATE_ESTABLISHED */ \ {.fn = sctp_sf_do_ecne, .name = "sctp_sf_do_ecne"}, \ /* SCTP_STATE_SHUTDOWN_PENDING */ \ {.fn = sctp_sf_do_ecne, .name = "sctp_sf_do_ecne"}, \ /* SCTP_STATE_SHUTDOWN_SENT */ \ {.fn = sctp_sf_do_ecne, .name = "sctp_sf_do_ecne"}, \ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \ {.fn = sctp_sf_do_ecne, .name = "sctp_sf_do_ecne"}, \ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \ {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \} /* TYPE_SCTP_ECN_ECNE */#define TYPE_SCTP_ECN_CWR { \ /* SCTP_STATE_EMPTY */ \ {.fn = sctp_sf_ootb, .name = "sctp_sf_ootb"}, \ /* SCTP_STATE_CLOSED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_COOKIE_WAIT */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_COOKIE_ECHOED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_ESTABLISHED */ \ {.fn = sctp_sf_do_ecn_cwr, .name = "sctp_sf_do_ecn_cwr"}, \ /* SCTP_STATE_SHUTDOWN_PENDING */ \ {.fn = sctp_sf_do_ecn_cwr, .name = "sctp_sf_do_ecn_cwr"}, \ /* SCTP_STATE_SHUTDOWN_SENT */ \ {.fn = sctp_sf_do_ecn_cwr, .name = "sctp_sf_do_ecn_cwr"}, \ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \ {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \} /* TYPE_SCTP_ECN_CWR */#define TYPE_SCTP_SHUTDOWN_COMPLETE { \ /* SCTP_STATE_EMPTY */ \ {.fn = sctp_sf_ootb, .name = "sctp_sf_ootb"}, \ /* SCTP_STATE_CLOSED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_COOKIE_WAIT */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_COOKIE_ECHOED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_ESTABLISHED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_PENDING */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_SENT */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \ {.fn = sctp_sf_do_4_C, .name = "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). */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 */ \ {.fn = sctp_sf_ootb, .name = "sctp_sf_ootb"}, \ /* SCTP_STATE_CLOSED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_COOKIE_WAIT */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_COOKIE_ECHOED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_ESTABLISHED */ \ {.fn = sctp_sf_do_asconf, .name = "sctp_sf_do_asconf"}, \ /* SCTP_STATE_SHUTDOWN_PENDING */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_SENT */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \} /* TYPE_SCTP_ASCONF */#define TYPE_SCTP_ASCONF_ACK { \ /* SCTP_STATE_EMPTY */ \ {.fn = sctp_sf_ootb, .name = "sctp_sf_ootb"}, \ /* SCTP_STATE_CLOSED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_COOKIE_WAIT */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_COOKIE_ECHOED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_ESTABLISHED */ \ {.fn = sctp_sf_do_asconf_ack, .name = "sctp_sf_do_asconf_ack"}, \ /* SCTP_STATE_SHUTDOWN_PENDING */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_SENT */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \ {.fn = sctp_sf_discard_chunk, .name = "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. */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 */ \ {.fn = sctp_sf_ootb, .name = "sctp_sf_ootb"}, \ /* SCTP_STATE_CLOSED */ \ {.fn = sctp_sf_tabort_8_4_8, .name = "sctp_sf_tabort_8_4_8"}, \ /* SCTP_STATE_COOKIE_WAIT */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_COOKIE_ECHOED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_ESTABLISHED */ \ {.fn = sctp_sf_eat_fwd_tsn, .name = "sctp_sf_eat_fwd_tsn"}, \ /* SCTP_STATE_SHUTDOWN_PENDING */ \ {.fn = sctp_sf_eat_fwd_tsn, .name = "sctp_sf_eat_fwd_tsn"}, \ /* SCTP_STATE_SHUTDOWN_SENT */ \ {.fn = sctp_sf_eat_fwd_tsn_fast, .name = "sctp_sf_eat_fwd_tsn_fast"}, \ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \ {.fn = sctp_sf_discard_chunk, .name = "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. */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[][] */static const sctp_sm_table_entry_tchunk_event_table_unknown[SCTP_STATE_NUM_STATES] = { /* SCTP_STATE_EMPTY */ {.fn = sctp_sf_ootb, .name = "sctp_sf_ootb"}, /* SCTP_STATE_CLOSED */ {.fn = sctp_sf_tabort_8_4_8, .name = "sctp_sf_tabort_8_4_8"}, /* SCTP_STATE_COOKIE_WAIT */ {.fn = sctp_sf_unk_chunk, .name = "sctp_sf_unk_chunk"}, /* SCTP_STATE_COOKIE_ECHOED */ {.fn = sctp_sf_unk_chunk, .name = "sctp_sf_unk_chunk"}, /* SCTP_STATE_ESTABLISHED */ {.fn = sctp_sf_unk_chunk, .name = "sctp_sf_unk_chunk"}, /* SCTP_STATE_SHUTDOWN_PENDING */ {.fn = sctp_sf_unk_chunk, .name = "sctp_sf_unk_chunk"}, /* SCTP_STATE_SHUTDOWN_SENT */ {.fn = sctp_sf_unk_chunk, .name = "sctp_sf_unk_chunk"}, /* SCTP_STATE_SHUTDOWN_RECEIVED */ {.fn = sctp_sf_unk_chunk, .name = "sctp_sf_unk_chunk"}, /* SCTP_STATE_SHUTDOWN_ACK_SENT */ {.fn = sctp_sf_unk_chunk, .name = "sctp_sf_unk_chunk"},}; /* chunk unknown */#define TYPE_SCTP_PRIMITIVE_ASSOCIATE { \ /* SCTP_STATE_EMPTY */ \ {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \ /* SCTP_STATE_CLOSED */ \ {.fn = sctp_sf_do_prm_asoc, .name = "sctp_sf_do_prm_asoc"}, \ /* SCTP_STATE_COOKIE_WAIT */ \ {.fn = sctp_sf_not_impl, .name = "sctp_sf_not_impl"}, \ /* SCTP_STATE_COOKIE_ECHOED */ \ {.fn = sctp_sf_not_impl, .name = "sctp_sf_not_impl"}, \ /* SCTP_STATE_ESTABLISHED */ \ {.fn = sctp_sf_not_impl, .name = "sctp_sf_not_impl"}, \ /* SCTP_STATE_SHUTDOWN_PENDING */ \ {.fn = sctp_sf_not_impl, .name = "sctp_sf_not_impl"}, \ /* SCTP_STATE_SHUTDOWN_SENT */ \ {.fn = sctp_sf_not_impl, .name = "sctp_sf_not_impl"}, \ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \ {.fn = sctp_sf_not_impl, .name = "sctp_sf_not_impl"}, \ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \ {.fn = sctp_sf_not_impl, .name = "sctp_sf_not_impl"}, \} /* TYPE_SCTP_PRIMITIVE_ASSOCIATE */#define TYPE_SCTP_PRIMITIVE_SHUTDOWN { \ /* SCTP_STATE_EMPTY */ \ {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \ /* SCTP_STATE_CLOSED */ \ {.fn = sctp_sf_error_closed, .name = "sctp_sf_error_closed"}, \ /* SCTP_STATE_COOKIE_WAIT */ \ {.fn = sctp_sf_cookie_wait_prm_shutdown, \ .name = "sctp_sf_cookie_wait_prm_shutdown"}, \ /* SCTP_STATE_COOKIE_ECHOED */ \ {.fn = sctp_sf_cookie_echoed_prm_shutdown, \ .name = "sctp_sf_cookie_echoed_prm_shutdown"},\ /* SCTP_STATE_ESTABLISHED */ \ {.fn = sctp_sf_do_9_2_prm_shutdown, \ .name = "sctp_sf_do_9_2_prm_shutdown"}, \ /* SCTP_STATE_SHUTDOWN_PENDING */ \ {.fn = sctp_sf_ignore_primitive, .name = "sctp_sf_ignore_primitive"}, \ /* SCTP_STATE_SHUTDOWN_SENT */ \ {.fn = sctp_sf_ignore_primitive, .name = "sctp_sf_ignore_primitive"}, \ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \ {.fn = sctp_sf_ignore_primitive, .name = "sctp_sf_ignore_primitive"}, \ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \ {.fn = sctp_sf_ignore_primitive, .name = "sctp_sf_ignore_primitive"}, \} /* TYPE_SCTP_PRIMITIVE_SHUTDOWN */#define TYPE_SCTP_PRIMITIVE_ABORT { \ /* SCTP_STATE_EMPTY */ \ {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \ /* SCTP_STATE_CLOSED */ \ {.fn = sctp_sf_error_closed, .name = "sctp_sf_error_closed"}, \ /* SCTP_STATE_COOKIE_WAIT */ \ {.fn = sctp_sf_cookie_wait_prm_abort, \ .name = "sctp_sf_cookie_wait_prm_abort"}, \ /* SCTP_STATE_COOKIE_ECHOED */ \ {.fn = sctp_sf_cookie_echoed_prm_abort, \ .name = "sctp_sf_cookie_echoed_prm_abort"}, \ /* SCTP_STATE_ESTABLISHED */ \ {.fn = sctp_sf_do_9_1_prm_abort, \ .name = "sctp_sf_do_9_1_prm_abort"}, \ /* SCTP_STATE_SHUTDOWN_PENDING */ \ {.fn = sctp_sf_shutdown_pending_prm_abort, \ .name = "sctp_sf_shutdown_pending_prm_abort"}, \ /* SCTP_STATE_SHUTDOWN_SENT */ \ {.fn = sctp_sf_shutdown_sent_prm_abort, \ .name = "sctp_sf_shutdown_sent_prm_abort"}, \ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \ {.fn = sctp_sf_do_9_1_prm_abort, \ .name = "sctp_sf_do_9_1_prm_abort"}, \ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \ {.fn = sctp_sf_shutdown_ack_sent_prm_abort, \ .name = "sctp_sf_shutdown_ack_sent_prm_abort"}, \} /* TYPE_SCTP_PRIMITIVE_ABORT */#define TYPE_SCTP_PRIMITIVE_SEND { \ /* SCTP_STATE_EMPTY */ \ {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \ /* SCTP_STATE_CLOSED */ \ {.fn = sctp_sf_error_closed, .name = "sctp_sf_error_closed"}, \ /* SCTP_STATE_COOKIE_WAIT */ \ {.fn = sctp_sf_do_prm_send, .name = "sctp_sf_do_prm_send"}, \ /* SCTP_STATE_COOKIE_ECHOED */ \ {.fn = sctp_sf_do_prm_send, .name = "sctp_sf_do_prm_send"}, \ /* SCTP_STATE_ESTABLISHED */ \ {.fn = sctp_sf_do_prm_send, .name = "sctp_sf_do_prm_send"}, \ /* SCTP_STATE_SHUTDOWN_PENDING */ \ {.fn = sctp_sf_error_shutdown, .name = "sctp_sf_error_shutdown"}, \ /* SCTP_STATE_SHUTDOWN_SENT */ \ {.fn = sctp_sf_error_shutdown, .name = "sctp_sf_error_shutdown"}, \ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \ {.fn = sctp_sf_error_shutdown, .name = "sctp_sf_error_shutdown"}, \ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \ {.fn = sctp_sf_error_shutdown, .name = "sctp_sf_error_shutdown"}, \} /* TYPE_SCTP_PRIMITIVE_SEND */#define TYPE_SCTP_PRIMITIVE_REQUESTHEARTBEAT { \ /* SCTP_STATE_EMPTY */ \ {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \ /* SCTP_STATE_CLOSED */ \ {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \ /* SCTP_STATE_COOKIE_WAIT */ \ {.fn = sctp_sf_do_prm_requestheartbeat, \ .name = "sctp_sf_do_prm_requestheartbeat"}, \ /* SCTP_STATE_COOKIE_ECHOED */ \ {.fn = sctp_sf_do_prm_requestheartbeat, \ .name = "sctp_sf_do_prm_requestheartbeat"}, \ /* SCTP_STATE_ESTABLISHED */ \ {.fn = sctp_sf_do_prm_requestheartbeat, \ .name = "sctp_sf_do_prm_requestheartbeat"}, \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -