📄 test-sctp_n.c
字号:
printf("%d-N_INFO_ACK:\n",fd); printf(" NSDU_size = "); print_size(cmd.npi.info_ack.NSDU_size); printf(" ENSDU_size = "); print_size(cmd.npi.info_ack.ENSDU_size); printf(" CDATA_size = "); print_size(cmd.npi.info_ack.CDATA_size); printf(" DDATA_size = "); print_size(cmd.npi.info_ack.DDATA_size); printf(" ADDR_size = "); print_size(cmd.npi.info_ack.ADDR_size); printf(" ADDR = "); print_addr(cmd.cbuf + cmd.npi.info_ack.ADDR_offset, cmd.npi.info_ack.ADDR_length); printf(" QOS = "); print_qos(cmd.cbuf + cmd.npi.info_ack.QOS_offset, cmd.npi.info_ack.QOS_length); printf(" QOR = "); print_qos(cmd.cbuf + cmd.npi.info_ack.QOS_range_offset, cmd.npi.info_ack.QOS_range_length); printf(" OPTIONS_flags ="); if ( cmd.npi.info_ack.OPTIONS_flags & REC_CONF_OPT ) printf(" REC_CONF_OPT"); if ( cmd.npi.info_ack.OPTIONS_flags & EX_DATA_OPT ) printf(" EX_DATA_OPT"); printf("\n"); printf(" NIDU_size = "); print_size(cmd.npi.info_ack.NIDU_size); printf(" SERV_type ="); if ( cmd.npi.info_ack.SERV_type & N_CONS ) printf(" N_CONS"); if ( cmd.npi.info_ack.SERV_type & N_CLNS ) printf(" N_CLNS"); printf("\n"); printf(" CURRENT_state = "); print_state(cmd.npi.info_ack.CURRENT_state); printf(" PROVIDER_type = "); switch ( cmd.npi.info_ack.PROVIDER_type ) { case N_SNICFP: printf("N_SNICFP\n"); break; case N_SUBNET: printf("N_SUBNET\n"); break; default: printf("(unknown %lu)\n", cmd.npi.info_ack.PROVIDER_type); break; } printf(" NODU_size = "); print_size(cmd.npi.info_ack.NODU_size); printf(" PROTOID = "); print_proto(cmd.cbuf + cmd.npi.info_ack.PROTOID_offset, cmd.npi.info_ack.PROTOID_length); printf(" NPI_version = %lu\n",cmd.npi.info_ack.NPI_version); break; case N_OPTMGMT_REQ: printf("%d-N_OPTMGMT_REQ:\n",fd); printf(" QOS = "); print_qos(cmd.cbuf + cmd.npi.optmgmt_req.QOS_offset, cmd.npi.optmgmt_req.QOS_length); printf(" OPTMGMT_flags = "); if ( cmd.npi.optmgmt_req.OPTMGMT_flags & DEFAULT_RC_SEL ) printf(" DEFAULT_RC_SEL"); printf("\n"); break; case N_BIND_REQ: printf("%d-N_BIND_REQ:\n",fd); printf(" ADDR = "); print_addr(cmd.cbuf + cmd.npi.bind_req.ADDR_offset, cmd.npi.bind_req.ADDR_length); printf(" CONIND_number = %lu\n",cmd.npi.bind_req.CONIND_number); printf(" BIND_flags ="); if ( cmd.npi.bind_req.BIND_flags & DEFAULT_LISTENER ) printf(" DEFAULT_LISTENER"); if ( cmd.npi.bind_req.BIND_flags & TOKEN_REQUEST ) printf(" TOKEN_REQUEST"); if ( cmd.npi.bind_req.BIND_flags & DEFAULT_DEST ) printf(" DEFAULT_DEST"); printf("\n"); printf(" PROTOID = "); print_proto(cmd.cbuf + cmd.npi.bind_req.PROTOID_offset, cmd.npi.bind_req.PROTOID_length); break; case N_BIND_ACK: printf("%d-N_BIND_ACK:\n",fd); printf(" ADDR = "); print_addr(cmd.cbuf + cmd.npi.bind_ack.ADDR_offset, cmd.npi.bind_ack.ADDR_length); printf(" CONIND_number = %lu\n",cmd.npi.bind_ack.CONIND_number); printf(" TOKEN_value = %lu\n",cmd.npi.bind_ack.TOKEN_value); printf(" PROTOID = "); print_proto(cmd.cbuf + cmd.npi.bind_ack.PROTOID_offset, cmd.npi.bind_ack.PROTOID_length); tok[fd] = cmd.npi.bind_ack.TOKEN_value; break; case N_UNBIND_REQ: printf("%d-N_UNBIND_REQ:\n",fd); break; case N_ERROR_ACK: printf("%d-N_ERROR_ACK:\n",fd); printf(" ERROR_prim = "); print_prim(cmd.npi.error_ack.ERROR_prim); printf("\n"); printf(" NPI_error = "); print_error(cmd.npi.error_ack.NPI_error); printf(" UNIX_error = %lu (%s)\n", cmd.npi.error_ack.UNIX_error, strerror(cmd.npi.error_ack.UNIX_error)); break; case N_OK_ACK: printf("%d-N_OK_ACK:\n",fd); printf(" CORRECT_prim = "); print_prim(cmd.npi.error_ack.ERROR_prim); printf("\n"); break; case N_CONN_REQ: printf("%d-N_CONN_REQ:\n",fd); printf(" DEST = "); print_addr(cmd.cbuf + cmd.npi.conn_req.DEST_offset, cmd.npi.conn_req.DEST_length); printf(" CONN_flags ="); if ( cmd.npi.conn_req.CONN_flags & REC_CONF_OPT ) printf(" REC_CONF_OPT"); if ( cmd.npi.conn_req.CONN_flags & EX_DATA_OPT ) printf(" EX_DATA_OPT"); printf("\n"); printf(" QOS = "); print_qos(cmd.cbuf + cmd.npi.conn_req.QOS_offset, cmd.npi.conn_req.QOS_length); if ( data.len ) printf(" DATA = %s\n", dbuf); break; case N_CONN_IND: printf("%d-N_CONN_IND:\n",fd); printf(" DEST = "); print_addr(cmd.cbuf+cmd.npi.conn_ind.DEST_offset, cmd.npi.conn_ind.DEST_length); printf(" SRC = "); print_addr(cmd.cbuf+cmd.npi.conn_ind.SRC_offset, cmd.npi.conn_ind.SRC_length); printf(" SEQ_number = %lx\n", cmd.npi.conn_ind.SEQ_number); printf(" CONN_flags ="); if ( cmd.npi.conn_ind.CONN_flags & REC_CONF_OPT ) printf(" REC_CONF_OPT"); if ( cmd.npi.conn_ind.CONN_flags & EX_DATA_OPT ) printf(" EX_DATA_OPT"); printf("\n"); printf(" QOS = "); print_qos(cmd.cbuf+cmd.npi.conn_ind.QOS_offset, cmd.npi.conn_ind.QOS_length); seq[fd] = cmd.npi.conn_ind.SEQ_number; break; case N_CONN_RES: printf("%d-N_CONN_RES:\n",fd); printf(" TOKEN_value = %lu\n", cmd.npi.conn_res.TOKEN_value); printf(" RES = "); print_addr(cmd.cbuf+cmd.npi.conn_res.RES_offset, cmd.npi.conn_res.RES_length); printf(" SEQ_number = %lx\n", cmd.npi.conn_res.SEQ_number); printf(" CONN_flags ="); if ( cmd.npi.conn_res.CONN_flags & REC_CONF_OPT ) printf(" REC_CONF_OPT"); if ( cmd.npi.conn_res.CONN_flags & EX_DATA_OPT ) printf(" EX_DATA_OPT"); printf("\n"); printf(" QOS = "); print_qos(cmd.cbuf+cmd.npi.conn_res.QOS_offset, cmd.npi.conn_res.QOS_length); if ( data.len ) printf(" DATA = %s\n", dbuf); break; case N_CONN_CON: printf("%d-N_CONN_CON:\n",fd); printf(" RES = "); print_addr(cmd.cbuf+cmd.npi.conn_con.RES_offset, cmd.npi.conn_con.RES_length); printf(" CONN_flags ="); if ( cmd.npi.conn_con.CONN_flags & REC_CONF_OPT ) printf(" REC_CONF_OPT"); if ( cmd.npi.conn_con.CONN_flags & EX_DATA_OPT ) printf(" EX_DATA_OPT"); printf("\n"); printf(" QOS = "); print_qos(cmd.cbuf+cmd.npi.conn_con.QOS_offset, cmd.npi.conn_res.QOS_length); break; case N_DATA_REQ: printf("%d-N_DATA_REQ:\n",fd); printf(" DATA_xfer_flags="); if ( cmd.npi.data_req.DATA_xfer_flags & N_MORE_DATA_FLAG ) printf(" N_MORE_DATA_FLAG"); if ( cmd.npi.data_req.DATA_xfer_flags & N_RC_FLAG ) printf(" N_RC_FLAG"); printf("\n"); printf(" QOS = "); print_qos(cmd.cbuf+sizeof(cmd.npi.data_req), ctrl.len - sizeof(cmd.npi.data_req)); if ( data.len ) printf(" DATA = %s\n", dbuf); break; case N_DATA_IND: printf("%d-N_DATA_IND:\n",fd); printf(" DATA_xfer_flags="); if ( cmd.npi.data_ind.DATA_xfer_flags & N_MORE_DATA_FLAG ) printf(" N_MORE_DATA_FLAG"); if ( cmd.npi.data_ind.DATA_xfer_flags & N_RC_FLAG ) printf(" N_RC_FLAG"); printf("\n"); printf(" QOS = "); print_qos(cmd.cbuf+sizeof(cmd.npi.data_ind), ctrl.len - sizeof(cmd.npi.data_ind)); tsn[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->tsn; sid[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->sid; if ( data.len ) printf(" DATA = %s\n", dbuf); break; case N_EXDATA_REQ: printf("%d-N_EXDATA_REQ:\n",fd); printf(" QOS = "); print_qos(cmd.cbuf+sizeof(cmd.npi.exdata_req), ctrl.len - sizeof(cmd.npi.exdata_req)); if ( data.len ) printf(" DATA = %s\n", dbuf); break; case N_EXDATA_IND: printf("%d-N_EXDATA_IND:\n",fd); printf(" QOS = "); print_qos(cmd.cbuf+sizeof(cmd.npi.exdata_ind), ctrl.len - sizeof(cmd.npi.exdata_ind)); tsn[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.exdata_ind)))->tsn; sid[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.exdata_ind)))->sid; if ( data.len ) printf(" DATA = %s\n", dbuf); break; case N_DATACK_REQ: printf("%d-N_DATACK_REQ:\n",fd); printf(" QOS = "); print_qos(cmd.cbuf+sizeof(cmd.npi.datack_req), ctrl.len - sizeof(cmd.npi.datack_req)); break; case N_DATACK_IND: printf("%d-N_DATACK_IND:\n",fd); printf(" QOS = "); print_qos(cmd.cbuf+sizeof(cmd.npi.datack_ind), ctrl.len - sizeof(cmd.npi.datack_ind)); tsn[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.datack_ind)))->tsn; sid[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.datack_ind)))->sid; break; case N_RESET_REQ: printf("%d-N_RESET_REQ:\n",fd); printf(" RESET_reason = %lu\n", cmd.npi.reset_req.RESET_reason); break; case N_RESET_IND: printf("%d-N_RESET_IND:\n",fd); printf(" RESET_orig = %lu\n", cmd.npi.reset_ind.RESET_orig); printf(" RESET_reason = %lu\n", cmd.npi.reset_ind.RESET_reason); break; case N_RESET_RES: printf("%d-N_RESET_RES:\n",fd); break; case N_RESET_CON: printf("%d-N_RESET_CON:\n",fd); break; case N_DISCON_REQ: printf("%d-N_DISCON_REQ:\n",fd); printf(" DISCON_reason = %lu\n", cmd.npi.discon_req.DISCON_reason); printf(" RES = "); print_addr(cmd.cbuf+cmd.npi.discon_req.RES_offset, cmd.npi.discon_req.RES_length); printf(" SEQ_number = %lx\n", cmd.npi.discon_req.SEQ_number); break; case N_DISCON_IND: printf("%d-N_DISCON_IND:\n",fd); printf(" DISCON_orig = %lu\n", cmd.npi.discon_ind.DISCON_orig); printf(" DISCON_reason = %lu\n", cmd.npi.discon_ind.DISCON_reason); printf(" RES = "); print_addr(cmd.cbuf+cmd.npi.discon_ind.RES_offset, cmd.npi.discon_ind.RES_length); printf(" SEQ_number = %lx\n", cmd.npi.discon_ind.SEQ_number); break; default: printf("Unrecognized primitive %lu!\n", cmd.prim); break; } break; case 1: if ( fd == fd1 ) { switch ( cmd.npi.type ) { case N_INFO_REQ: printf("N_INFO_REQ ----->| | | \n"); break; case N_INFO_ACK: printf("N_INFO_ACK <-----| | | \n"); break; case N_OPTMGMT_REQ: printf("N_OPTMGMT_REQ ----->| | | \n"); break; case N_BIND_REQ: printf("N_BIND_REQ ----->| | | \n"); break; case N_BIND_ACK: printf("N_BIND_ACK <-----| | | \n"); tok[fd] = cmd.npi.bind_ack.TOKEN_value; break; case N_UNBIND_REQ: printf("N_UNBIND_REQ ----->| | | \n"); break; case N_ERROR_ACK: printf("N_ERROR_ACK <----/| | | \n"); printf("[%-11s] | | | \n", err_string(cmd.npi.error_ack.NPI_error)); break; case N_OK_ACK: printf("N_OK_ACK <----/| | | \n"); break; case N_CONN_REQ: printf("N_CONN_REQ ----->|--------------->| | | \n"); break; case N_CONN_IND: printf("N_CONN_IND <-----|<---------------| | | \n"); seq[fd] = cmd.npi.conn_ind.SEQ_number; break; case N_CONN_RES: printf("N_CONN_RES ----->|--------------->| | | \n"); break; case N_CONN_CON: printf("N_CONN_CON <-----|<---------------| | | \n"); break; case N_DATA_REQ: printf("N_DATA_REQ%c%c ----->|---(%03lu:%03lu)--->| | %6d bytes \n", cmd.npi.data_req.DATA_xfer_flags & N_RC_FLAG ? '!' : ' ', cmd.npi.data_req.DATA_xfer_flags & N_MORE_DATA_FLAG ? '+' : ' ', qos_data.sid, qos_data.ssn, data.len); break; case N_DATA_IND: printf("N_DATA_IND%c%c <-----|<--(%03lu:%03lu)----| [%010lu] | \n", cmd.npi.data_ind.DATA_xfer_flags & N_RC_FLAG ? '!' : ' ', cmd.npi.data_ind.DATA_xfer_flags & N_MORE_DATA_FLAG ? '+' : ' ', (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->sid, (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->ssn, (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->tsn); tsn[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->tsn; sid[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->sid; break; case N_EXDATA_REQ: printf("N_EXDATA_REQ ----->|---(%03lu:%03lu)--->| | \n", qos_data.sid, qos_data.ssn); break; case N_EXDATA_IND: printf("N_EXDATA_IND <-----|<--(%03lu:%03lu)----| [%010lu] | \n", (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.exdata_ind)))->sid, (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.exdata_ind)))->ssn, (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.exdata_ind)))->tsn); tsn[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.exdata_ind)))->tsn; sid[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.exdata_ind)))->sid; break; case N_DATACK_REQ: printf("N_DATACK_REQ ----->|---(%03lu:%03lu)--->| | \n", qos_data.sid, qos_data.ssn); break; case N_DATACK_IND: printf("N_DATACK_IND <-----|<--(%03lu:%03lu)----| [%010lu] | \n", (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.datack_ind)))->sid, (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.datack_ind)))->ssn, (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.datack_ind)))->tsn); tsn[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.datack_ind)))->tsn; sid[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.datack_ind)))->sid; break; case N_DISCON_REQ: printf("N_DISCON_REQ ----->|--------------->| | | \n"); break; case N_DISCON_IND: printf("N_DISCON_IND <-----|<---------------| | | \n"); break; case N_RESET_REQ: printf("N_RESET_REQ ----->|--------------->| | | \n"); break; case N_RESET_IND: printf("N_RESET_IND <-----|<---------------| | | \n"); break; case N_RESET_RES: printf("N_RESET_RES ----->|--------------->| | | \n"); break; case N_RESET_CON: printf("N_RESET_CON <-----|<---------------| | | \n"); break; default: printf("????%4ld???? ?----?| | \n", cmd.npi.type); break; } } if ( fd == fd2 ) { switch ( cmd.npi.type ) { case N_INFO_REQ: printf(" | |<-+------ N_INFO_REQ \n"); break; case N_INFO_ACK: printf(" | |--+-----> N_INFO_ACK \n"); break; case N_OPTMGMT_REQ: printf(" | |<-+------ N_OPTMGMT_REQ\n"); break; case N_BIND_REQ: printf(" | |<-+------ N_BIND_REQ \n"); break; case N_BIND_ACK: printf(" | |--+-----> N_BIND_ACK \n"); tok[fd] = cmd.npi.bind_ack.TOKEN_value; break; case N_UNBIND_REQ: printf(" | |<-+------ N_UNBIND_REQ \n"); break; case N_ERROR_ACK: printf(" | |\\-+-----> N_ERROR_ACK \n"); printf(" | | [%-11s]\n", err_string(cmd.npi.error_ack.NPI_error)); break; case N_OK_ACK: printf(" | |\\-+-----> N_OK_ACK \n"); break; case N_CONN_REQ: printf(" | |<-------------|<-+------ N_CONN_REQ \n"); break; case N_CONN_IND: printf(" | |------------->|--+-----> N_CONN_IND \n"); seq[fd] = cmd.npi.conn_ind.SEQ_number; break; case N_CONN_RES: printf(" | |<-------------|<-+------ N_CONN_RES \n"); break; case N_CONN_CON: printf(" | |------------->|--+-----> N_CONN_CON \n"); break; case N_DATA_REQ: printf(" | |<--(%03lu:%03lu)--|<-+------ N_DATA_REQ%c%c \n", qos_data.sid, qos_data.ssn, cmd.npi.data_req.DATA_xfer_flags & N_RC_FLAG ? '!' : ' ', cmd.npi.data_req.DATA_xfer_flags & N_MORE_DATA_FLAG ? '+' : ' '); break; case N_DATA_IND: printf(" | [%010lu] |---(%03lu:%03lu)->|--+-----> N_DATA_IND%c%c \n", (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->tsn, (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->sid, (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->ssn, cmd.npi.data_ind.DATA_xfer_flags & N_RC_FLAG ? '!' : ' ', cmd.npi.data_ind.DATA_xfer_flags & N_MORE_DATA_FLAG ? '+' : ' '); tsn[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->tsn; sid[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->sid; break; case N_EXDATA_REQ: printf(" | |<--(%03lu:%03lu)--|<-+------ N_EXDATA_REQ \n", qos_data.sid, qos_data.ssn); break; case N_EXDATA_IND: printf(" | [%010lu] |---(%03lu:%03lu)->|--+-----> N_EXDATA_IND \n", (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.exdata_ind)))->tsn, (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.exdata_ind)))->sid, (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.exdata_ind)))->ssn); tsn[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.exdata_ind)))->tsn; sid[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.exdata_ind)))->sid; break; case N_DATACK_REQ: printf(" | |<--(%03lu:%03lu)--|<-+------ N_DATACK_REQ \n", qos_data.sid, qos_data.ssn); break; case N_DATACK_IND: printf(" | [%010lu] |---(%03lu:%03lu)->|--+-----> N_DATACK_IND \n", (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.datack_ind)))->tsn, (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.datack_ind)))->sid, (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.datack_ind)))->ssn); tsn[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.datack_ind)))->tsn; sid[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.datack_ind)))->sid; break; case N_DISCON_REQ: printf(" | |<-------------|<-+------ N_DISCON_REQ \n"); break; case N_DISCON_IND: printf(" | |------------->|--+-----> N_DISCON_IND \n"); break; case N_RESET_REQ: printf(" | |<-------------|<-+------ N_RESET_REQ \n"); break; case N_RESET_IND: printf(" | |------------->|--+-----> N_RESET_IND \n"); break; case N_RESET_RES: printf(" | |<-------------|<-+------ N_RESET_RES \n"); break; case N_RESET_CON: printf(" | |------------->|--+-----> N_RESET_CON \n"); break; default: printf(" | |?-+-----? ????%4ld???? \n", cmd.npi.type); break; } } if ( fd == fd3 ) { switch ( cmd.npi.type ) { case N_INFO_REQ: printf(" | | |<----- N_INFO_REQ \n"); break; case N_INFO_ACK: printf(" | | |-----> N_INFO_ACK \n"); break; case N_OPTMGMT_REQ: printf(" | | |<----- N_OPTMGMT_REQ\n"); break; case N_BIND_REQ: printf(" | | |<----- N_BIND_REQ \n"); break; case N_BIND_ACK: printf(" | | |-----> N_BIND_ACK \n"); tok[fd] = cmd.npi.bind_ack.TOKEN_value; break; case N_UNBIND_REQ: printf(" | | |<----- N_UNBIND_REQ \n"); break; case N_ERROR_ACK: printf(" | | |\\----> N_ERROR_ACK \n"); printf(" | | | [%-11s]\n", err_string(cmd.npi.error_ack.NPI_error)); break; case N_OK_ACK: printf(" | | |\\----> N_OK_ACK \n"); break; case N_CONN_REQ: printf(" | |<----------------|<----- N_CONN_REQ \n"); break; case N_CONN_IND: printf(" | |---------------->|-----> N_CONN_IND \n"); seq[fd] = cmd.npi.conn_ind.SEQ_number; break; case N_CONN_RES: printf(" | |<----------------|<----- N_CONN_RES \n"); break; case N_CONN_CON: printf(" | |---------------->|-----> N_CONN_CON \n"); break; case N_DATA_REQ: printf(" | |<---(%03lu:%03lu)----|<----- N_DATA_REQ%c%c \n", qos_data.sid, qos_data.ssn, cmd.npi.data_req.DATA_xfer_flags & N_RC_FLAG ? '!' : ' ', cmd.npi.data_req.DATA_xfer_flags & N_MORE_DATA_FLAG ? '+' : ' '); break; case N_DATA_IND: printf(" %6d bytes | [%010lu] |----(%03lu:%03lu)--->|-----> N_DATA_IND%c%c \n", data.len, (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->tsn, (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->sid, (ulong)((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->ssn, cmd.npi.data_ind.DATA_xfer_flags & N_RC_FLAG ? '!' : ' ', cmd.npi.data_ind.DATA_xfer_flags & N_MORE_DATA_FLAG ? '+' : ' '); tsn[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->tsn; sid[fd] = ((N_qos_sel_data_sctp_t *)(cmd.cbuf+sizeof(cmd.npi.data_ind)))->sid; break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -