📄 test-sctp_n.c
字号:
return(ret);}int sctp_wait(int fd, int wait){ return get_msg(fd,wait);}void sctp_sleep(unsigned long t){ switch ( show ) { case 1: printf("/ / / / / / / / / / / / / / Waiting %04lu seconds / / / / / / / / / / / / / /\n", t); break; case 2: printf("Waiting for %lu seconds...\n", t); break; } sleep(t); if ( show == 2 ) printf(" ...done\n");}int begin_tests(void){ addr1.port = htons(10000); inet_aton("127.0.0.3", &addr1.addr[0]); inet_aton("127.0.0.2", &addr1.addr[1]); inet_aton("127.0.0.1", &addr1.addr[2]); addr2.port = htons(10001); inet_aton("127.0.0.3", &addr2.addr[0]); inet_aton("127.0.0.2", &addr2.addr[1]); inet_aton("127.0.0.1", &addr2.addr[2]); addr3.port = htons(10001); inet_aton("127.0.0.3", &addr3.addr[0]); inet_aton("127.0.0.2", &addr3.addr[1]); inet_aton("127.0.0.1", &addr3.addr[2]); state = 0; return(SUCCESS);}int end_tests(void){ return(SUCCESS);}int preamble_0(void){ if ( (fd1 = sctp_n_open()) < 0 ) return(FAILURE); if ( (fd2 = sctp_n_open()) < 0 ) return(FAILURE); if ( (fd3 = sctp_n_open()) < 0 ) return(FAILURE); return(SUCCESS);}int postamble_0(void){ do { if ( sctp_close(fd1) == FAILURE ) break; if ( sctp_close(fd2) == FAILURE ) break; if ( sctp_close(fd3) == FAILURE ) break; return(SUCCESS); } while(0); return(FAILURE);}int preamble_1(void){ state = 0; for ( ;; ) { switch ( state ) { case 0: if ( (fd1 = sctp_n_open()) < 0 ) break; state = 1; case 1: if ( (fd2 = sctp_n_open()) < 0 ) break; state = 2; case 2: if ( (fd3 = sctp_n_open()) < 0 ) break; state = 3; case 3: if ( sctp_optmgmt_req(fd1, 0) == FAILURE ) break; state = 4; case 4: if ( expect(fd1, SHORT_WAIT, N_OK_ACK) == FAILURE ) break; state = 5; case 5: if ( sctp_bind_req(fd1, &addr1, 0) == FAILURE ) break; state = 6; case 6: if ( expect(fd1, NORMAL_WAIT, N_BIND_ACK) == FAILURE ) break; state = 7; case 7: if ( sctp_optmgmt_req(fd2, 0) == FAILURE ) break; state = 8; case 8: if ( expect(fd2, SHORT_WAIT, N_OK_ACK) == FAILURE ) break; state = 9; case 9: if ( sctp_bind_req(fd2, &addr2, 5) == FAILURE ) break; state = 10; case 10: if ( expect(fd2, NORMAL_WAIT, N_BIND_ACK) == FAILURE ) break; state = 11; case 11: if ( sctp_optmgmt_req(fd3, 0) == FAILURE ) break; state = 12; case 12: if ( expect(fd3, SHORT_WAIT, N_OK_ACK) == FAILURE ) break; state = 13; case 13: if ( sctp_bind_req(fd3, &addr3, 0) == FAILURE ) break; state = 14; case 14: if ( expect(fd3, NORMAL_WAIT, N_BIND_ACK) == FAILURE ) break; return(SUCCESS); } return(FAILURE); }}int preamble_2(void){ state = 0; for ( ;; ) { switch ( state ) { case 0: if ( preamble_1() == FAILURE ) break; state = 15; case 15: if ( sctp_conn_req(fd1, &addr2, NULL) == FAILURE ) break; state = 16; case 16: if ( expect(fd1, SHORT_WAIT, FAILURE) == FAILURE) break; state = 17; case 17: if ( expect(fd2, LONG_WAIT, N_CONN_IND) == FAILURE ) break; state = 18; case 18: if ( sctp_conn_res(fd2, fd3, NULL) == FAILURE ) break; state = 19; case 19: if ( expect(fd2, SHORT_WAIT, N_OK_ACK) == FAILURE ) break; state = 20; case 20: if ( expect(fd1, LONG_WAIT, N_CONN_CON) == FAILURE ) break; return(SUCCESS); } return(FAILURE); }}int preamble_2b(void){ state = 0; for ( ;; ) { switch ( state ) { case 0: if ( preamble_1() == FAILURE ) break; state = 15; case 15: if ( sctp_conn_req(fd1, &addr2, "Hello World!") == FAILURE ) break; state = 16; case 16: if ( expect(fd1, SHORT_WAIT, FAILURE) == FAILURE) break; state = 17; case 17: if ( expect(fd2, LONG_WAIT, N_CONN_IND) == FAILURE ) break; state = 18; case 18: if ( sctp_conn_res(fd2, fd3, "Hello There!") == FAILURE ) break; state = 19; case 19: if ( expect(fd2, SHORT_WAIT, N_OK_ACK) == FAILURE ) break; state = 20; case 20: if ( expect(fd1, LONG_WAIT, N_CONN_CON) == FAILURE ) break; state = 21; case 21: if ( expect(fd3, NORMAL_WAIT, N_EXDATA_IND) == FAILURE ) break; state = 22; case 22: if ( expect(fd1, NORMAL_WAIT, N_EXDATA_IND) == FAILURE ) break; return(SUCCESS); } return(FAILURE); }}int preamble_2c(void){ state = 0; for ( ;; ) { switch ( state ) { case 0: if ( preamble_1() == FAILURE ) break; state = 3; case 3: sctp_optmgmt_req(fd1, DEFAULT_RC_SEL); if ( expect(fd1, SHORT_WAIT, N_OK_ACK) == FAILURE ) break; state = 4; case 4: sctp_optmgmt_req(fd2, DEFAULT_RC_SEL); if ( expect(fd2, SHORT_WAIT, N_OK_ACK) == FAILURE ) break; state = 5; case 5: sctp_optmgmt_req(fd3, DEFAULT_RC_SEL); if ( expect(fd3, SHORT_WAIT, N_OK_ACK) == FAILURE ) break; return(SUCCESS); } return(FAILURE); }}int preamble_3(void){ return preamble_1();}int preamble_3b(void){ qos_info.i_streams = 32; qos_info.o_streams = 32; qos_conn.i_streams = 32; qos_conn.o_streams = 32; return preamble_2();}int preamble_4(void){// qos_info.options = SCTP_OPTION_RANDOM; qos_info.options = SCTP_OPTION_DROPPING; return preamble_2();}int preamble_5(void){// qos_info.options = SCTP_OPTION_BREAK|SCTP_OPTION_DBREAK|SCTP_OPTION_DROPPING; qos_info.options = SCTP_OPTION_BREAK; return preamble_2();}int preamble_6(void){ qos_info.options = SCTP_OPTION_RANDOM; return preamble_3b();}int preamble_7(void){ qos_info.hmac = SCTP_HMAC_SHA_1; return preamble_1();}int preamble_8(void){ qos_info.hmac = SCTP_HMAC_MD5; return preamble_1();}int postamble_1(void){ uint failed = -1; state = 0; for ( ;; ) { switch ( state ) { case 0: if ( sctp_unbind_req(fd1) == FAILURE ) { failed = state; state = 1; continue; } if ( expect(fd1, SHORT_WAIT, N_OK_ACK) == FAILURE ) failed = state; state = 1; case 1: if ( sctp_unbind_req(fd2) == FAILURE ) { failed = state; state = 2; continue; } if ( expect(fd2, SHORT_WAIT, N_OK_ACK) == FAILURE ) failed = state; state = 2; case 2: if ( sctp_unbind_req(fd3) == FAILURE ) { failed = state; state = 3; continue; } if ( expect(fd3, SHORT_WAIT, N_OK_ACK) == FAILURE ) failed = state; state = 3; case 3: if ( sctp_close(fd1) == FAILURE ) failed = state; if ( sctp_close(fd2) == FAILURE ) failed = state; if ( sctp_close(fd3) == FAILURE ) failed = state; } qos_data.sid = 0; qos_info.hmac = SCTP_HMAC_NONE; qos_info.options = 0; qos_info.i_streams = 1; qos_info.o_streams = 1; qos_conn.i_streams = 1; qos_conn.o_streams = 1; if ( failed != -1 ) { state = failed; return(FAILURE); } return(SUCCESS); }}int postamble_2(void){ uint failed = -1; state = 0; for ( ;; ) { switch ( state ) { case 0: if ( sctp_discon_req(fd1, 0) == FAILURE ) { failed = state; state = 4; continue; } state = 1; case 1: if ( expect(fd1, SHORT_WAIT, N_OK_ACK) == FAILURE ) { failed = state; state = 4; continue; } state = 2; case 2: if ( expect(fd3, LONG_WAIT, N_DISCON_IND) == FAILURE ) { failed = state; state = 4; continue; } state = 6; continue; case 4: if ( sctp_discon_req(fd3, 0) == FAILURE ) { failed = state; state = 6; continue; } state = 5; case 5: if ( expect(fd3, SHORT_WAIT, N_OK_ACK) == FAILURE ) failed = state; state = 6; case 6: if ( sctp_unbind_req(fd1) == FAILURE ) failed = state; else if ( expect(fd1, SHORT_WAIT, N_OK_ACK) == FAILURE ) failed = state; state = 7; case 7: if ( sctp_unbind_req(fd2) == FAILURE ) failed = state; else if ( expect(fd2, SHORT_WAIT, N_OK_ACK) == FAILURE ) failed = state; state = 8; case 8: if ( sctp_unbind_req(fd3) == FAILURE ) failed = state; else if ( expect(fd3, SHORT_WAIT, N_OK_ACK) == FAILURE ) failed = state; state = 9; case 9: if ( sctp_close(fd1) == FAILURE ) failed = state; if ( sctp_close(fd2) == FAILURE ) failed = state; if ( sctp_close(fd3) == FAILURE ) failed = state; } qos_data.sid = 0; qos_info.hmac = SCTP_HMAC_NONE; qos_info.options = 0; qos_info.i_streams = 1; qos_info.o_streams = 1; qos_conn.i_streams = 1; qos_conn.o_streams = 1; if ( failed != -1 ) { state = failed; return(FAILURE); } return(SUCCESS); }}/* * Do options management. */#define desc_case_1 "\Test Case 1(a):\n\Checks that options management can be performed on several streams\n\and that one stream can be bound and unbound."int test_case_1(void){ state = 0; for ( ;; ) { switch ( state ) { case 0: sctp_optmgmt_req(fd1, 0); if ( expect(fd1, SHORT_WAIT, N_OK_ACK) == FAILURE ) break; sctp_info_req(fd1); if ( expect(fd1, NORMAL_WAIT, N_INFO_ACK) == FAILURE ) break; state = 1; case 1:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -