📄 t_connect.c
字号:
/* * Copyright (C) 1999-2003 MITSUBISHI ELECTRIC CORPORATION and * RENESAS SOLUTIONS CORPORATION and * RENESAS TECHNOLOGY CORPORATION * All rights reserved. * * TCP/IP Test Application program [API]. */#include <tk/tkernel.h>#include <renesas_tcpip.h>#include <renesas_tcpip_common.h>#include "config.h"voidtest_task(int stacd, void *exinf){ int i, fd, s, s2; int ret, pid; struct sockaddr_in name; int namelen; int num; int testno, testno2, result[20]; num = 1; testno = 0; memset((char *)result, 0, sizeof(result)); /* for setup: get normal socket */ errno = 0; if ((s = unix_socket(AF_INET, SOCK_STREAM, 0)) < 0) { goto testend; } memset((char *)&name, 0, sizeof(name)); name.sin_family = AF_INET; name.sin_port = htons(SUN_PORT -1); name.sin_addr.s_addr = inet_addr(SUN_ADDR); namelen = sizeof(name); /* Test 1 */ printf("Connect Test %d: \n",num++); errno = 0;testno = 1; ret = unix_connect(-1, (struct sockaddr *)&name, namelen); if (ret < 0) { printf("OK! :connect(-1, name, namelen), EBADF, errno = %d\n",errno); result[testno] = 0; } else { printf("Fail :connect(-1, name, namelen), EBADF, errno = %d\n",errno); result[testno] = 1; } /* Test 2 */ printf("Connect Test %d: \n",num++); errno = 0;testno = 2; ret = unix_connect(10, (struct sockaddr *)&name, namelen); if (ret < 0) { printf("OK! :connect(10, name, namelen), EBADF, errno = %d\n",errno); result[testno] = 0; } else { printf("Fail :connect(10, name, namelen), EBADF, errno = %d\n",errno); result[testno] = 1; } /* Test 3 */ printf("Connect Test %d: \n",num++); errno = 0;testno = 3; ret = unix_connect(s, (struct sockaddr *)&name, namelen); if (ret < 0) { printf("OK! :connect(s, name(port-1), namelen), ECONNREFUSED, errno = %d\n",errno); result[testno] = 0; } else { printf("Fail :connect(s, name(port-1), namelen), ECONNREFUSED, errno = %d\n",errno); result[testno] = 1; } unix_shutdown(s, SHUT_RDWR); unix_close(s); errno = 0; if ((s = unix_socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("socket fail! \n"); goto testend; } /* Test 4 */ printf("Connect Test %d: \n",num++); name.sin_addr.s_addr = inet_addr(BAD_ADDR); name.sin_port = htons(SUN_PORT); errno = 0;testno = 4; ret = unix_connect(s, (struct sockaddr *)&name, namelen); if (ret < 0) { printf("OK! :connect(s, name(bad dst addr), namelen), ENETUNREACH, errno = %d\n",errno); result[testno] = 0; } else { printf("Fail :connect(s, name(bad dst addr), namelen), ENETUNREACH, errno = %d\n",errno); result[testno] = 1; } /* Test 5 */ printf("Connect Test %d: \n",num++); errno = 0; name.sin_addr.s_addr = inet_addr(SUN_ADDR); name.sin_port = htons(SUN_PORT);testno = 5;#if 0 ret = unix_connect(s, (struct sockaddr *)&name, namelen); if (ret == 0) { printf("OK! :connect(s,&name,namelen),ret = %d \n",ret); result[testno] = 0; } else { printf("Fail! :connect(s,&name,namelen),ret = %d, errno = %d\n",ret, errno); result[testno] = 1; } errno = 0;testno = 6; ret = unix_connect(s, (struct sockaddr *)&name, namelen); if (ret < 0 && (errno == EISCONN)) { printf("OK! :connect(s(already connected),name,namelen),EISCONN errno = %d \n",errno); result[testno] = 0; } else { printf("Fail! :connect(s(already connected),name,namelen),EISCONN errno = %d \n",errno); result[testno] = 1; } unix_shutdown(s, SHUT_RDWR); unix_close(s);#endif errno = 0; if ((s = unix_socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("socket(AF_INET,SOCK_STREAM,0) fail \n"); goto testend; } /* Test 6 */ printf("Connect Test %d: \n",num++); errno = 0; memset((char *)&name, 0, sizeof(name)); name.sin_family = AF_INET; name.sin_port = htons(SUN_PORT); name.sin_addr.s_addr = inet_addr(SUN_ADDR); namelen = sizeof(name);testno = 7; ret = unix_connect(s, (struct sockaddr *)NULL, namelen); if (ret < 0) { printf("OK! :connect(s,NULL,namelen),EFAULT errno = %d \n",errno); result[testno] = 0; } else { printf("Fail! :connect(s,NULL,namelen),EFAULT errno = %d \n",errno); result[testno] = 1; } /* Test 7 */ printf("Connect Test %d: \n",num++); errno = 0;testno = 8; ret = unix_connect(s, (struct sockaddr *)-1, namelen); if (ret < 0) { printf("OK! :connect(s,-1,namelen),EFAULT errno = %d \n",errno); result[testno] = 0; } else { printf("Fail! :connect(s,-1,namelen),EFAULT errno = %d \n",errno); result[testno] = 1; } /* Test 8 */ printf("Connect Test %d: \n",num++); errno = 0;testno = 9; ret = unix_connect(s, (struct sockaddr *)&name, 0); if (ret < 0) { printf("OK! :connect(s,name,0),EINVAL errno = %d \n",errno); result[testno] = 0; } else { printf("Fail! :connect(s,name,0),EINVAL errno = %d \n",errno); result[testno] = 1; } /* Test 9 */ printf("Connect Test %d: \n",num++); errno = 0;testno = 10; ret = unix_connect(s, (struct sockaddr *)&name, -1); if (ret < 0) { printf("OK! :connect(s,name,-1),EINVAL errno = %d \n",errno); result[testno] = 0; } else { printf("Fail! :connect(s,name,-1),EINVAL errno = %d \n",errno); result[testno] = 1; }#if 0 /* Test 10 */ printf("Connect Test %d: \n",num++); errno = 0; name.sin_addr.s_addr = inet_addr(SUN_ADDR); name.sin_port = htons(SUN_PORT +1);testno = 11; ret = unix_connect(s, (struct sockaddr *)&name, namelen); if (ret < 0) { printf("OK! :connect(s(no accept), name, namelen1),ETIMEDOUT,errno = %d \n",errno); result[testno] = 0; } else { printf("Fail! :connect(s(no accpet), name, namelen1),ETIMEDOUT,errno = %d \n",errno); result[testno] = 1; } unix_shutdown(s, SHUT_RDWR); unix_close(s);#endif /***** Datagram Socket *****/ /* Test 11 */ printf("Connect Test %d: \n",num++); errno = 0; if ((s = unix_socket(AF_INET, SOCK_DGRAM, 0)) < 0) { goto testend; } errno = 0; memset((char *)&name, 0, sizeof(name)); name.sin_family = AF_INET; name.sin_port = htons(SUN_PORT +2); name.sin_addr.s_addr = inet_addr(SUN_ADDR); namelen = sizeof(name);testno = 12; ret = unix_connect(s, (struct sockaddr *)&name, namelen); if (ret == 0) { printf("OK! :DGRAM: no error check. connect(s(port 1)) ret = %d\n", ret); result[testno] = 0; } else { printf("Fail! :DGRAM: no error check. connect(s(port 1)) ret = %d\n", ret); result[testno] = 1; } unix_close(s); errno = 0; if ((s = unix_socket(AF_INET, SOCK_DGRAM, 0)) < 0) { printf("socket(AF_INET,SOCK_DGRAM,0) fail\n"); goto testend; } /* Test 12 */ printf("Connect Test %d: \n",num++); errno = 0; name.sin_addr.s_addr = inet_addr(BAD_ADDR); name.sin_port = htons(SUN_PORT +2); namelen = sizeof(name);testno = 13; ret = unix_connect(s, (struct sockaddr *)&name, namelen); if (ret == 0) { printf("OK! :DGRAM: no error check. connect(s, name(in bad addr), namelen) ret = %d\n", ret); result[testno] = 0; } else { printf("Fail! :DGRAM: no error check. connect(s, name(in bad addr), namelen) ret = %d\n", ret); result[testno] = 1; } /* Test 13 */ printf("Connect Test %d: \n",num++); errno = 0; name.sin_addr.s_addr = inet_addr(SUN_ADDR); name.sin_port = htons(SUN_PORT +2);testno = 14; ret = unix_connect(s, (struct sockaddr *)&name, namelen); if (ret == 0) { printf("OK! :DGRAM: normal case. connect(s,name,namelen),ret = %d \n",ret); result[testno] = 0; } else { printf("Fail! :DGRAM: normal case. connect(s,name,namelen),ret = %d \n",ret); result[testno] = 1; } errno = 0;testno = 15; ret = unix_connect(s, (struct sockaddr *)&name, namelen); if (ret == 0) { printf("OK! :DGRAM: no error check. connect(s(already connected),name,namelen),ret = %d \n",ret); result[testno] = 0; } else { printf("Fail! :DGRAM: no error check. connect(s(already connected),name,namelen),ret = %d \n",ret); result[testno] = 1; } unix_close(s); errno = 0; if ((s = unix_socket(AF_INET, SOCK_DGRAM, 0)) < 0) { printf("socket(AF_INET,SOCK_DGRAM,0) fail\n"); goto testend; } /* Test 14 */ printf("Connect Test %d: \n",num++); errno = 0; memset((char *)&name, 0, sizeof(name)); name.sin_family = AF_INET; name.sin_port = htons(SUN_PORT); name.sin_addr.s_addr = inet_addr(SUN_ADDR); namelen = sizeof(name);testno = 16; ret = unix_connect(s, (struct sockaddr *)NULL, namelen); if (ret < 0) { printf("OK! :DGRAM: connect(s, NULL, namelen), EFAULT, errno = %d \n",errno); result[testno] = 0; } else { printf("Fail! :DGRAM: connect(s, NULL, namelen), EFAULT, errno = %d \n",errno); result[testno] = 1; } /* Test 15 */ printf("Connect Test %d: \n",num++); errno = 0;testno = 17; ret = unix_connect(s, (struct sockaddr *)-1, namelen); if (ret < 0) { printf("OK! :DGRAM: connect(s, -1, namelen), EFAULT, errno = %d \n",errno); result[testno] = 0; } else { printf("Fail! :DGRAM: connect(s, -1, namelen), EFAULT, errno = %d \n",errno); result[testno] = 1; } /* Test 16 */ printf("Connect Test %d: \n",num++); errno = 0;testno = 18; ret = unix_connect(s, (struct sockaddr *)&name, 0); if (ret < 0) { printf("OK! :DGRAM: connect(s, name, 0), EINVAL, errno = %d\n",errno); result[testno] = 0; } else { printf("Fail! :DGRAM: connect(s, name, 0), EINVAL, errno = %d\n",errno); result[testno] = 1; } /* Test 17 */ printf("Connect Test %d: \n",num++); errno = 0;testno = 19; ret = unix_connect(s, (struct sockaddr *)&name, -1); if (ret < 0) { printf("OK! :DGRAM: connect(s, name, -1),EINVAL, errno = %d\n",errno); result[testno] = 0; } else { printf("Fail! :DGRAM: connect(s, name, -1),EINVAL, errno = %d\n",errno); result[testno] = 1; } unix_close(s);#if defined(T_KERNEL) tk_slp_tsk(2000);#endiftestend: /* check the results */ testno2 = 19; for (i=1; i <= testno; i++) { if (result[i] == 1) break; } if (i > testno2) printf("Pass.\n"); else printf("Error.\n");#if defined(T_KERNEL) tk_slp_tsk(TMO_FEVR);#endif}/* EOF */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -