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

📄 test-m2pa.c

📁 No7信令,我需要交换类似的代码, 请店长审核,谢谢了,急着交换,谢谢
💻 C
📖 第 1 页 / 共 5 页
字号:
			return UNKNOWN;		case N_BIND_ACK:			if ( verbose )			{				printf("                                             !bind ack              \n");				printf("                                                   cons = %lu\n",p->npi.bind_ack.CONIND_number);				printf("                                                   tok  = %lx\n",p->npi.bind_ack.TOKEN_value);				printf("                                                   alen = %lu\n",p->npi.bind_ack.ADDR_length);				if ( p->npi.bind_ack.ADDR_length == 14 )				{					addr_t *a = (addr_t *)(buf+p->npi.bind_ack.ADDR_offset);					printf("                                                   port = %u\n",ntohs(a->port));					printf("                                                   add1 = %d.%d.%d.%d\n",							(a->addr[0]>> 0)&0xff,							(a->addr[0]>> 8)&0xff,							(a->addr[0]>>16)&0xff,							(a->addr[0]>>24)&0xff);					printf("                                                   add2 = %d.%d.%d.%d\n",							(a->addr[1]>> 0)&0xff,							(a->addr[1]>> 8)&0xff,							(a->addr[1]>>16)&0xff,							(a->addr[1]>>24)&0xff);					printf("                                                   add3 = %d.%d.%d.%d\n",							(a->addr[2]>> 0)&0xff,							(a->addr[2]>> 8)&0xff,							(a->addr[2]>>16)&0xff,							(a->addr[2]>>24)&0xff);				}				FFLUSH(stdout);			}			iut_tok = p->npi.bind_ack.TOKEN_value;			return BIND_ACK;		case N_ERROR_ACK:			if ( verbose )			{				printf("                                             !error ack             \n");				FFLUSH(stdout);			}			return ERROR_ACK;		case N_OK_ACK:			if ( verbose )			{				printf("                                             !ok ack                \n");				FFLUSH(stdout);			}			return OK_ACK;		case N_UNITDATA_IND:			if ( verbose )			{				printf("                                             !unitdata ind          \n");				FFLUSH(stdout);			}			return UNKNOWN;		case N_UDERROR_IND:			if ( verbose )			{				printf("                                             !uderror ind           \n");				FFLUSH(stdout);			}			return UNKNOWN;		case N_DATACK_IND:			if ( verbose )			{				printf("                                             !datack ind            \n");				FFLUSH(stdout);			}			return UNKNOWN;		case N_RESET_IND:			if ( verbose )			{				printf("                                             !reset ind             \n");				FFLUSH(stdout);			}			return UNKNOWN;		case N_RESET_CON:			if ( verbose )			{				printf("                                             !reset con             \n");				FFLUSH(stdout);			}			return UNKNOWN;		default:			printf("                                             !(unknown %5ld)       \n",p->sl.sl_primitive);			FFLUSH(stdout);			return UNKNOWN;	}}/* *  ------------------------------------------------------------------------- * *  Decode data at Management Stream * *  ------------------------------------------------------------------------- */static int mgm_decode_data(void){	printf("                 !data |                                            \n");	FFLUSH(stdout);	return UNKNOWN;}/* *  ------------------------------------------------------------------------- * *  Decode ctrl at Management Stream * *  ------------------------------------------------------------------------- */static int mgm_decode_msg(unsigned char *buf){	union primitives *p = (union primitives *)buf;	if ( p->npi.type != oldmgm )	{		oldmgm = p->npi.type;		cntmgm = 0;	}	else		if ( !expand )			cntmgm++;	switch ( p->prim )	{		case N_CONN_IND:			if ( verbose )			{				printf("             !conn ind |                                            \n");				FFLUSH(stdout);			}			mgm_seq = p->npi.conn_ind.SEQ_number;			return CONN_IND;		case N_CONN_CON:			if ( verbose )			{				printf("             !conn con |                                            \n");				FFLUSH(stdout);			}			return UNKNOWN;		case N_DISCON_IND:			if ( verbose )			{				printf("           !discon ind |                                            \n");				FFLUSH(stdout);			}			return DISCON_IND;		case N_INFO_ACK:			if ( verbose )			{				printf("             !info ack |                                            \n");				FFLUSH(stdout);			}			return UNKNOWN;		case N_BIND_ACK:			if ( verbose )			{				printf("             !bind ack |                                            \n");				printf("    cons = %lu\n",p->npi.bind_ack.CONIND_number);				printf("    tok  = %lx\n",p->npi.bind_ack.TOKEN_value);				printf("    alen = %lu\n",p->npi.bind_ack.ADDR_length);				if ( p->npi.bind_ack.ADDR_length == 14 )				{					addr_t *a = (addr_t *)(buf+p->npi.bind_ack.ADDR_offset);					printf("    port = %u\n",ntohs(a->port));					printf("    add1 = %d.%d.%d.%d\n",							(a->addr[0]>> 0)&0xff,							(a->addr[0]>> 8)&0xff,							(a->addr[0]>>16)&0xff,							(a->addr[0]>>24)&0xff);					printf("    add2 = %d.%d.%d.%d\n",							(a->addr[1]>> 0)&0xff,							(a->addr[1]>> 8)&0xff,							(a->addr[1]>>16)&0xff,							(a->addr[1]>>24)&0xff);					printf("    add3 = %d.%d.%d.%d\n",							(a->addr[2]>> 0)&0xff,							(a->addr[2]>> 8)&0xff,							(a->addr[2]>>16)&0xff,							(a->addr[2]>>24)&0xff);				}				FFLUSH(stdout);			}			mgm_tok = p->npi.bind_ack.TOKEN_value;			return BIND_ACK;		case N_ERROR_ACK:			if ( verbose )			{				printf("            !error ack |                                            \n");				FFLUSH(stdout);			}			return ERROR_ACK;		case N_OK_ACK:			if ( verbose )			{				printf("               !ok ack |                                            \n");				FFLUSH(stdout);			}			return OK_ACK;		case N_UNITDATA_IND:			if ( verbose )			{				printf("         !unitdata ind |                                            \n");				FFLUSH(stdout);			}			return UNKNOWN;		case N_UDERROR_IND:			if ( verbose )			{				printf("          !uderror ind |                                            \n");				FFLUSH(stdout);			}			return UNKNOWN;		case N_DATACK_IND:			if ( verbose )			{				printf("           !datack ind |                                            \n");				FFLUSH(stdout);			}			return UNKNOWN;		case N_RESET_IND:			if ( verbose )			{				printf("            !reset ind |                                            \n");				FFLUSH(stdout);			}			return UNKNOWN;		case N_RESET_CON:			if ( verbose )			{				printf("            !reset con |                                            \n");				FFLUSH(stdout);			}			return UNKNOWN;		default:			printf("      !(uninown %5ld) |                                            \n",p->npi.type);			FFLUSH(stdout);			return UNKNOWN;	}}/* *  ========================================================================= * *  EVENT HANDLING * *  ========================================================================= */static int show_timeout = 0;/* *  ------------------------------------------------------------------------- * *  Wait for message or timeout. * *  ------------------------------------------------------------------------- */static int wait_event(int wait){	while (1)	{		struct pollfd pfd[] =		{			{  pt_fd, POLLIN|POLLPRI, 0 },			{ iut_fd, POLLIN|POLLPRI, 0 },			{ mgm_fd, POLLIN|POLLPRI, 0 }		};		if ( timer_timeout )		{			timer_timeout = 0;			if ( show_timeout || verbose )			{				printf("                         -----timeout------                         \n");				FFLUSH(stdout);				if ( show_timeout ) show_timeout--;			}			return TIMEOUT;		}		if ( debug && verbose )		{			printf("                         ......polling.....                         \n");			FFLUSH(stdout);		}		switch ( poll(pfd, 3, wait) )		{			case -1:				if ( debug && verbose )				{					printf("                         = = = ERROR = = =                          \n");					FFLUSH(stdout);				}				break;			case 0:				if ( debug && verbose )				{					printf("                         + + +nothing + + +                         \n");					FFLUSH(stdout);				}				return NO_MSG;			case 1:			case 2:			case 3:				if ( debug && verbose )				{					printf("                         ^^^^^^polled^^^^^^                         \n");					FFLUSH(stdout);				}				if ( pfd[0].revents & (POLLIN|POLLPRI|POLLERR|POLLHUP) )				{					int ret = UNKNOWN;					int flags = 0;					unsigned char cbuf[BUFSIZE];					struct strbuf						ctrl = { BUFSIZE, 0,   cbuf },						data = { BUFSIZE, 0, pt_buf };					if ( debug && verbose )					{						printf("pt getmsg...                                                        \n");						FFLUSH(stdout);					}					if ( getmsg(pt_fd, &ctrl, &data, &flags) < 0 )					{						printf("****ERROR: pt getmsg failed\n");						printf("           %s: %s\n",__FUNCTION__,strerror(errno));						FFLUSH(stdout);						return NO_MSG;					}					else					{						if ( debug && verbose )						{							printf("pt gotmsg... [%2d,%2d]                                                \n",ctrl.len,data.len);							FFLUSH(stdout);						}						if ( ctrl.len > 0 &&								(ret = pt_decode_msg(ctrl.buf)) != UNKNOWN )							return ret;						if ( data.len > 0 &&								(ret = pt_decode_data()) != UNKNOWN )							return ret;					}				}				if ( pfd[1].revents & (POLLIN|POLLPRI|POLLERR|POLLHUP) )				{					int ret = UNKNOWN;					int flags = 0;					unsigned char cbuf[BUFSIZE];					struct strbuf						ctrl = { BUFSIZE, 0,    cbuf },						data = { BUFSIZE, 0, iut_buf };					if ( debug && verbose )					{						printf("                                             iut getmsg             \n");						FFLUSH(stdout);					}					if ( getmsg(iut_fd, &ctrl, &data, &flags) < 0 )					{						printf("                                   ****ERROR: iut getmsg failed\n");						printf("                                              %s: %s\n",__FUNCTION__,strerror(errno));						FFLUSH(stdout);						return NO_MSG;					}					else					{						if ( debug && verbose )						{							printf("                                             iut gotmsg [%2d,%2d]     \n",ctrl.len,data.len);							FFLUSH(stdout);						}						if ( ctrl.len > 0 &&								(ret = iut_decode_msg(ctrl.buf)) != UNKNOWN )							return ret;						if ( data.len > 0 &&								(ret = iut_decode_data()) != UNKNOWN )							return ret;					}				}				if ( pfd[2].revents & (POLLIN|POLLPRI|POLLERR|POLLHUP) )				{					int ret = UNKNOWN;					int flags = 0;					unsigned char cbuf[BUFSIZE];					struct strbuf						ctrl = { BUFSIZE, 0,    cbuf },						data = { BUFSIZE, 0, mgm_buf };					if ( debug && verbose )					{						printf("  mgm getmsg...                                                     \n");						FFLUSH(stdout);					}					if ( getmsg(mgm_fd, &ctrl, &data, &flags) < 0 )					{						printf("  ****ERROR: mgm getmsg failed\n");						printf("             %s: %s\n",__FUNCTION__,strerror(errno));						FFLUSH(stdout);						return NO_MSG;					}					else					{						if ( debug && verbose )						{							printf("  mgm gotmsg... [%2d,%2d]                                             \n",ctrl.len,data.len);							FFLUSH(stdout);						}						if ( ctrl.len > 0 &&								(ret = mgm_decode_msg(ctrl.buf)) != UNKNOWN )							return ret;						if ( data.len > 0 &&								(ret = mgm_decode_data()) != UNKNOWN )							return ret;					}				}			default:				break;		}	}}static int event(void){	return wait_event(-1);}/* *  ========================================================================= * *  The test cases... * *  ========================================================================= */#if 0static int check_snibs(unsigned char bsnib, unsigned char fsnib){	printf("                 check b/f sn/ib:  ---> (%02x/%02x)\n", bsnib, fsnib);	FFLUSH(stdout);	if ( (iut_bib|iut_bsn) == bsnib && (iut_fib|iut_fsn) == fsnib )		return SUCCESS;	return FAILURE;}#endifstatic int test_1_1a(void){	for (;;)	{		switch ( state )		{			case 0:				send(POWER_ON);				send(OUT_OF_SERVICE);				signal(POWER_ON);				state = 1;				break;			case 1:				switch ( event() )				{					case OUT_OF_SERVICE:						return SUCCESS;					default:						return FAILURE;				}				break;			default:				ret

⌨️ 快捷键说明

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