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

📄 test-inet_raw.c

📁 This a separate release of the OpenSS7 X/Open XTI/TLI library, TLI modules (timod, tirdwr) and the I
💻 C
📖 第 1 页 / 共 5 页
字号:
		m = m / 1000000;		t += m;		lockf(fileno(stdout), F_LOCK, 0);		fprintf(stdout, "                    | %11.6g                   |  |                    <%d>\n", t, state);		fflush(stdout);		lockf(fileno(stdout), F_ULOCK, 0);	}	return (event);}static int timer_timeout = 0;static voidtimer_handler(int signum){	if (signum == SIGALRM)		timer_timeout = 1;	return;}static inttimer_sethandler(void){	sigset_t mask;	struct sigaction act;	act.sa_handler = timer_handler;	act.sa_flags = SA_RESTART | SA_ONESHOT;	sigemptyset(&act.sa_mask);	if (sigaction(SIGALRM, &act, NULL))		return __RESULT_FAILURE;	sigemptyset(&mask);	sigaddset(&mask, SIGALRM);	sigprocmask(SIG_UNBLOCK, &mask, NULL);	return __RESULT_SUCCESS;}/*  *  Start an interval timer as the overall test timer. */static intstart_tt(long duration){	struct itimerval setting = {		{0, 0},		{duration / 1000, (duration % 1000) * 1000}	};	if (timer_sethandler())		return __RESULT_FAILURE;	if (setitimer(ITIMER_REAL, &setting, NULL))		return __RESULT_FAILURE;	timer_timeout = 0;	return __RESULT_SUCCESS;}static intstart_st(long duration){	long sdur = (duration + timer_scale - 1) / timer_scale;	return start_tt(sdur);}static intstop_tt(void){	struct itimerval setting = { {0, 0}, {0, 0} };	sigset_t mask;	struct sigaction act;	if (setitimer(ITIMER_REAL, &setting, NULL))		return __RESULT_FAILURE;	act.sa_handler = SIG_DFL;	act.sa_flags = 0;	sigemptyset(&act.sa_mask);	if (sigaction(SIGALRM, &act, NULL))		return __RESULT_FAILURE;	timer_timeout = 0;	sigemptyset(&mask);	sigaddset(&mask, SIGALRM);	sigprocmask(SIG_BLOCK, &mask, NULL);	return __RESULT_SUCCESS;}/*  *  Options *//*  * data options  */struct {	struct t_opthdr tos_hdr __attribute__ ((packed)); t_scalar_t tos_val __attribute__ ((packed));	struct t_opthdr ttl_hdr __attribute__ ((packed)); t_scalar_t ttl_val __attribute__ ((packed));	struct t_opthdr drt_hdr __attribute__ ((packed)); t_scalar_t drt_val __attribute__ ((packed));	struct t_opthdr csm_hdr __attribute__ ((packed)); t_scalar_t csm_val __attribute__ ((packed));	struct t_opthdr ppi_hdr __attribute__ ((packed)); t_scalar_t ppi_val __attribute__ ((packed));	struct t_opthdr sid_hdr __attribute__ ((packed)); t_scalar_t sid_val __attribute__ ((packed));} opt_data = {	{ sizeof(struct t_opthdr) + sizeof(unsigned char), T_INET_IP, T_IP_TOS, T_SUCCESS} , 0x0	, { sizeof(struct t_opthdr) + sizeof(unsigned char), T_INET_IP, T_IP_TTL, T_SUCCESS} , 64	, { sizeof(struct t_opthdr) + sizeof(unsigned int), T_INET_IP, T_IP_DONTROUTE, T_SUCCESS} , T_NO	, { sizeof(struct t_opthdr) + sizeof(t_uscalar_t), T_INET_UDP, T_UDP_CHECKSUM, T_SUCCESS} , T_NO	, { sizeof(struct t_opthdr) + sizeof(t_uscalar_t), T_INET_SCTP, T_SCTP_PPI, T_SUCCESS} , 10	, { sizeof(struct t_opthdr) + sizeof(t_uscalar_t), T_INET_SCTP, T_SCTP_SID, T_SUCCESS} , 0};/*  * receive data options  */typedef struct rdat_opt {	struct t_opthdr tos_hdr __attribute__ ((packed)); t_scalar_t tos_val __attribute__ ((packed));	struct t_opthdr ttl_hdr __attribute__ ((packed)); t_scalar_t ttl_val __attribute__ ((packed));	struct t_opthdr ppi_hdr __attribute__ ((packed)); t_scalar_t ppi_val __attribute__ ((packed));	struct t_opthdr sid_hdr __attribute__ ((packed)); t_scalar_t sid_val __attribute__ ((packed));	struct t_opthdr ssn_hdr __attribute__ ((packed)); t_scalar_t ssn_val __attribute__ ((packed));	struct t_opthdr tsn_hdr __attribute__ ((packed)); t_scalar_t tsn_val __attribute__ ((packed));} rdat_opt_t;/*  * connect options  */struct {	struct t_opthdr tos_hdr __attribute__ ((packed)); t_scalar_t tos_val __attribute__ ((packed));	struct t_opthdr ttl_hdr __attribute__ ((packed)); t_scalar_t ttl_val __attribute__ ((packed));	struct t_opthdr drt_hdr __attribute__ ((packed)); t_scalar_t drt_val __attribute__ ((packed));	struct t_opthdr bca_hdr __attribute__ ((packed)); t_scalar_t bca_val __attribute__ ((packed));	struct t_opthdr reu_hdr __attribute__ ((packed)); t_scalar_t reu_val __attribute__ ((packed));	struct t_opthdr ist_hdr __attribute__ ((packed)); t_scalar_t ist_val __attribute__ ((packed));	struct t_opthdr ost_hdr __attribute__ ((packed)); t_scalar_t ost_val __attribute__ ((packed));} opt_conn = {	{	sizeof(struct t_opthdr) + sizeof(unsigned char), T_INET_IP, T_IP_TOS, T_SUCCESS} , 0x0	, { sizeof(struct t_opthdr) + sizeof(unsigned char), T_INET_IP, T_IP_TTL, T_SUCCESS} , 64	, { sizeof(struct t_opthdr) + sizeof(unsigned int), T_INET_IP, T_IP_DONTROUTE, T_SUCCESS} , T_NO	, { sizeof(struct t_opthdr) + sizeof(unsigned int), T_INET_IP, T_IP_BROADCAST, T_SUCCESS} , T_NO	, { sizeof(struct t_opthdr) + sizeof(t_uscalar_t), T_INET_IP, T_IP_REUSEADDR, T_SUCCESS} , T_NO	, { sizeof(struct t_opthdr) + sizeof(t_uscalar_t), T_INET_SCTP, T_SCTP_ISTREAMS, T_SUCCESS} , 1	, { sizeof(struct t_opthdr) + sizeof(t_uscalar_t), T_INET_SCTP, T_SCTP_OSTREAMS, T_SUCCESS} , 1};/*  * management options  */struct {	struct t_opthdr tos_hdr __attribute__ ((packed)); t_scalar_t tos_val __attribute__ ((packed));	struct t_opthdr ttl_hdr __attribute__ ((packed)); t_scalar_t ttl_val __attribute__ ((packed));	struct t_opthdr drt_hdr __attribute__ ((packed)); t_scalar_t drt_val __attribute__ ((packed));	struct t_opthdr bca_hdr __attribute__ ((packed)); t_scalar_t bca_val __attribute__ ((packed));	struct t_opthdr reu_hdr __attribute__ ((packed)); t_scalar_t reu_val __attribute__ ((packed));#if 0	struct t_opthdr ndl_hdr __attribute__ ((packed)); t_scalar_t ndl_val __attribute__ ((packed));	struct t_opthdr mxs_hdr __attribute__ ((packed)); t_scalar_t mxs_val __attribute__ ((packed));	struct t_opthdr kpa_hdr __attribute__ ((packed)); t_scalar_t kpa_val __attribute__ ((packed));	struct t_opthdr csm_hdr __attribute__ ((packed)); t_scalar_t csm_val __attribute__ ((packed));	struct t_opthdr nod_hdr __attribute__ ((packed)); t_scalar_t nod_val __attribute__ ((packed));	struct t_opthdr crk_hdr __attribute__ ((packed)); t_scalar_t crk_val __attribute__ ((packed));	struct t_opthdr ppi_hdr __attribute__ ((packed)); t_scalar_t ppi_val __attribute__ ((packed));	struct t_opthdr sid_hdr __attribute__ ((packed)); t_scalar_t sid_val __attribute__ ((packed));	struct t_opthdr rcv_hdr __attribute__ ((packed)); t_scalar_t rcv_val __attribute__ ((packed));	struct t_opthdr ckl_hdr __attribute__ ((packed)); t_scalar_t ckl_val __attribute__ ((packed));	struct t_opthdr skd_hdr __attribute__ ((packed)); t_scalar_t skd_val __attribute__ ((packed));	struct t_opthdr prt_hdr __attribute__ ((packed)); t_scalar_t prt_val __attribute__ ((packed));	struct t_opthdr art_hdr __attribute__ ((packed)); t_scalar_t art_val __attribute__ ((packed));	struct t_opthdr irt_hdr __attribute__ ((packed)); t_scalar_t irt_val __attribute__ ((packed));	struct t_opthdr hbi_hdr __attribute__ ((packed)); t_scalar_t hbi_val __attribute__ ((packed));	struct t_opthdr rin_hdr __attribute__ ((packed)); t_scalar_t rin_val __attribute__ ((packed));	struct t_opthdr rmn_hdr __attribute__ ((packed)); t_scalar_t rmn_val __attribute__ ((packed));	struct t_opthdr rmx_hdr __attribute__ ((packed)); t_scalar_t rmx_val __attribute__ ((packed));	struct t_opthdr ist_hdr __attribute__ ((packed)); t_scalar_t ist_val __attribute__ ((packed));	struct t_opthdr ost_hdr __attribute__ ((packed)); t_scalar_t ost_val __attribute__ ((packed));	struct t_opthdr cin_hdr __attribute__ ((packed)); t_scalar_t cin_val __attribute__ ((packed));	struct t_opthdr tin_hdr __attribute__ ((packed)); t_scalar_t tin_val __attribute__ ((packed));	struct t_opthdr mac_hdr __attribute__ ((packed)); t_scalar_t mac_val __attribute__ ((packed));	struct t_opthdr dbg_hdr __attribute__ ((packed)); t_scalar_t dbg_val __attribute__ ((packed));#endif} opt_optm = {	{ sizeof(struct t_opthdr) + sizeof(unsigned char), T_INET_IP, T_IP_TOS, T_SUCCESS}, 0x0	, { sizeof(struct t_opthdr) + sizeof(unsigned char), T_INET_IP, T_IP_TTL, T_SUCCESS}, 64	, { sizeof(struct t_opthdr) + sizeof(unsigned int), T_INET_IP, T_IP_DONTROUTE, T_SUCCESS}, T_NO	, { sizeof(struct t_opthdr) + sizeof(unsigned int), T_INET_IP, T_IP_BROADCAST, T_SUCCESS}, T_NO	, { sizeof(struct t_opthdr) + sizeof(unsigned int), T_INET_IP, T_IP_REUSEADDR, T_SUCCESS}, T_NO#if 0	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_TCP, T_TCP_NODELAY, T_SUCCESS} , T_NO	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_TCP, T_TCP_MAXSEG, T_SUCCESS} , 576	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_TCP, T_TCP_KEEPALIVE, T_SUCCESS} , T_NO	, { sizeof(struct t_opthdr) + sizeof(t_uscalar_t), T_INET_UDP, T_UDP_CHECKSUM, T_SUCCESS} , T_NO	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_NODELAY, T_SUCCESS} , T_YES	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_CORK, T_SUCCESS} , T_YES	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_PPI, T_SUCCESS} , 10	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_SID, T_SUCCESS} , 0	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_RECVOPT, T_SUCCESS} , T_NO	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_COOKIE_LIFE, T_SUCCESS} , 60000	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_SACK_DELAY, T_SUCCESS} , 0	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_PATH_MAX_RETRANS, T_SUCCESS} , 0	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_ASSOC_MAX_RETRANS, T_SUCCESS} , 12	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_MAX_INIT_RETRIES, T_SUCCESS} , 12	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_HEARTBEAT_ITVL, T_SUCCESS} , 200	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_RTO_INITIAL, T_SUCCESS} , 0	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_RTO_MIN, T_SUCCESS} , 0	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_RTO_MAX, T_SUCCESS} , 0	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_OSTREAMS, T_SUCCESS} , 1	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_ISTREAMS, T_SUCCESS} , 1	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_COOKIE_INC, T_SUCCESS} , 1000	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_THROTTLE_ITVL, T_SUCCESS} , 50	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_MAC_TYPE, T_SUCCESS} , T_SCTP_HMAC_NONE	, { sizeof(struct t_opthdr) + sizeof(t_scalar_t), T_INET_SCTP, T_SCTP_DEBUG, T_SUCCESS} , 0#endif};char *errno_string(long err){	switch (err) {	case 0:		return ("ok");	case EPERM:		return ("[EPERM]");	case ENOENT:		return ("[ENOENT]");	case ESRCH:		return ("[ESRCH]");	case EINTR:		return ("[EINTR]");	case EIO:		return ("[EIO]");	case ENXIO:		return ("[ENXIO]");	case E2BIG:		return ("[E2BIG]");	case ENOEXEC:		return ("[ENOEXEC]");	case EBADF:		return ("[EBADF]");	case ECHILD:		return ("[ECHILD]");	case EAGAIN:		return ("[EAGAIN]");	case ENOMEM:		return ("[ENOMEM]");	case EACCES:		return ("[EACCES]");	case EFAULT:		return ("[EFAULT]");	case ENOTBLK:		return ("[ENOTBLK]");	case EBUSY:		return ("[EBUSY]");	case EEXIST:		return ("[EEXIST]");	case EXDEV:		return ("[EXDEV]");	case ENODEV:		return ("[ENODEV]");	case ENOTDIR:		return ("[ENOTDIR]");	case EISDIR:		return ("[EISDIR]");	case EINVAL:		return ("[EINVAL]");	case ENFILE:		return ("[ENFILE]");	case EMFILE:		return ("[EMFILE]");	case ENOTTY:		return ("[ENOTTY]");	case ETXTBSY:		return ("[ETXTBSY]");	case EFBIG:		return ("[EFBIG]");	case ENOSPC:		return ("[ENOSPC]");	case ESPIPE:		return ("[ESPIPE]");	case EROFS:		return ("[EROFS]");	case EMLINK:		return ("[EMLINK]");	case EPIPE:		return ("[EPIPE]");	case EDOM:		return ("[EDOM]");	case ERANGE:		return ("[ERANGE]");	case EDEADLK:		return ("[EDEADLK]");	case ENAMETOOLONG:		return ("[ENAMETOOLONG]");	case ENOLCK:		return ("[ENOLCK]");	case ENOSYS:		return ("[ENOSYS]");	case ENOTEMPTY:		return ("[ENOTEMPTY]");	case ELOOP:		return ("[ELOOP]");	case ENOMSG:		return ("[ENOMSG]");	case EIDRM:		return ("[EIDRM]");	case ECHRNG:		return ("[ECHRNG]");	case EL2NSYNC:		return ("[EL2NSYNC]");	case EL3HLT:		return ("[EL3HLT]");	case EL3RST:		return ("[EL3RST]");	case ELNRNG:		return ("[ELNRNG]");	case EUNATCH:		return ("[EUNATCH]");	case ENOCSI:		return ("[ENOCSI]");	case EL2HLT:		return ("[EL2HLT]");	case EBADE:		return ("[EBADE]");	case EBADR:		return ("[EBADR]");	case EXFULL:		return ("[EXFULL]");	case ENOANO:		return ("[ENOANO]");	case EBADRQC:		return ("[EBADRQC]");	case EBADSLT:		return ("[EBADSLT]");	case EBFONT:		return ("[EBFONT]");	case ENOSTR:		return ("[ENOSTR]");	case ENODATA:		return ("[ENODATA]");	case ETIME:		return ("[ETIME]");	case ENOSR:		return ("[ENOSR]");	case ENONET:		return ("[ENONET]");	case ENOPKG:		return ("[ENOPKG]");	case EREMOTE:		return ("[EREMOTE]");	case ENOLINK:		return ("[ENOLINK]");	case EADV:		return ("[EADV]");	case ESRMNT:		return ("[ESRMNT]");	case ECOMM:		return ("[ECOMM]");	case EPROTO:		return ("[EPROTO]");	case EMULTIHOP:		return ("[EMULTIHOP]");	case EDOTDOT:		return ("[EDOTDOT]");	case EBADMSG:		return ("[EBADMSG]");	case EOVERFLOW:		return ("[EOVERFLOW]");	case ENOTUNIQ:		return ("[ENOTUNIQ]");	case EBADFD:		return ("[EBADFD]");	case EREMCHG:		return ("[EREMCHG]");	case ELIBACC:		return ("[ELIBACC]");	case ELIBBAD:		return ("[ELIBBAD]");	case ELIBSCN:		return ("[ELIBSCN]");	case ELIBMAX:		return ("[ELIBMAX]");	case ELIBEXEC:		return ("[ELIBEXEC]");	case EILSEQ:		return ("[EILSEQ]");	case ERESTART:		return ("[ERESTART]");	case ESTRPIPE:		return ("[ESTRPIPE]");	case EUSERS:		return ("[EUSERS]");	case ENOTSOCK:		return ("[ENOTSOCK]");	case EDESTADDRREQ:		return ("[EDESTADDRREQ]");	case EMSGSIZE:		return ("[EMSGSIZE]");	case EPROTOTYPE:		return ("[EPROTOTYPE]");	case ENOPROTOOPT:		return ("[ENOPROTOOPT]");	case EPROTONOSUPPORT:

⌨️ 快捷键说明

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