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

📄 ss7capd.c

📁 OpenSS7 This the fourth public release of the OpenSS7 Master Package. See README in the release for
💻 C
📖 第 1 页 / 共 3 页
字号:
		break;	case LMI_ERROR_IND:		ftimestamp();		fprint_time(stdout);		fprintf(stdout, " # LMI_ERROR_IND\n");		return CAP_NONE;	case LMI_STATS_IND:		ftimestamp();		fprint_time(stdout);		fprintf(stdout, " # LMI_STATS_IND\n");		return CAP_NONE;	case LMI_EVENT_IND:		ftimestamp();		fprint_time(stdout);		fprintf(stdout, " # LMI_EVENT_IND\n");		return CAP_NONE;	case SDT_RC_CONGESTION_ACCEPT_IND:		ftimestamp();		fprint_time(stdout);		fprintf(stdout, " # SDT_RC_CONGESTION_ACCEPT_IND\n");		return CAP_NONE;	case SDT_RC_CONGESTION_DISCARD_IND:		ftimestamp();		fprint_time(stdout);		fprintf(stdout, " # SDT_RC_CONGESTION_DISCARD_IND\n");		return CAP_NONE;	case SDT_RC_NO_CONGESTION_IND:		ftimestamp();		fprint_time(stdout);		fprintf(stdout, " # SDT_RC_NO_CONGESTION_IND\n");		return CAP_NONE;	case SDT_IAC_CORRECT_SU_IND:		ftimestamp();		fprint_time(stdout);		fprintf(stdout, " # SDT_IAC_CORRECT_SU_IND\n");		return CAP_NONE;	case SDT_IAC_ABORT_PROVING_IND:		ftimestamp();		fprint_time(stdout);		fprintf(stdout, " # SDT_IAC_ABORT_PROVING_IND\n");		return CAP_NONE;	case SDT_LSC_LINK_FAILURE_IND:		ftimestamp();		fprint_time(stdout);		fprintf(stdout, " # SDT_LSC_LINK_FAILURE_IND\n");		return CAP_NONE;	case SDT_TXC_TRANSMISSION_REQUEST_IND:		ftimestamp();		fprint_time(stdout);		fprintf(stdout, " # SDT_TXC_TRANSMISSION_REQUEST_IND\n");		return CAP_NONE;	default:		break;	}	if (flag)		return CAP_PCPROTO;	return CAP_PROTO;}intwait_event(int wait){	for (;;) {		struct pollfd pfd[] = {			{cap_fd, POLLIN | POLLPRI | POLLERR | POLLHUP, 0}		};		if (trm_signal) {			trm_signal = 0;			trm_action();		}		if (hup_signal) {			hup_signal = 0;			hup_action();		}		if (alm_signal) {			alm_signal = 0;			alm_action();			return CAP_TIMEOUT;		}		if (output > 2)			fprintf(stderr, "entering poll loop\n");		switch (poll(pfd, 1, wait)) {		case -1:			if (errno == EAGAIN || errno == EINTR || errno == ERESTART)				continue;			syslog(LOG_ERR, "%s: poll error", __FUNCTION__);			syslog(LOG_ERR, "%s: %m", __FUNCTION__);			cap_exit(1);			return CAP_FAILURE;		case 0:			return CAP_NONE;		case 1:			if (pfd[0].revents & (POLLIN | POLLPRI)) {				int ret, flags = 0;				ctrl.maxlen = BUFSIZE;				ctrl.len = 0;				ctrl.buf = cbuf;				data.maxlen = BUFSIZE;				data.len = 0;				data.buf = dbuf;				if (getmsg(cap_fd, &ctrl, &data, &flags) < 0) {					syslog(LOG_ERR, "%s: getmsg error", __FUNCTION__);					syslog(LOG_ERR, "%s: %m", __FUNCTION__);					cap_exit(1);					break;				}				if (ctrl.len > 0) {					if ((ret = decode_ctrl(flags)) == CAP_NONE)						continue;					return ret;				}				if (data.len > 0) {					if ((ret = decode_data()) == CAP_NONE)						continue;					return ret;				}				break;			}			if (pfd[0].revents & POLLNVAL) {				syslog(LOG_ERR, "%s: device invalid", __FUNCTION__);				cap_exit(1);				return CAP_FAILURE;			}			if (pfd[0].revents & POLLHUP) {				syslog(LOG_ERR, "%s: device hangup", __FUNCTION__);				cap_exit(1);				return CAP_FAILURE;			}			if (pfd[0].revents & POLLERR) {				syslog(LOG_ERR, "%s: device error", __FUNCTION__);				cap_exit(1);				return CAP_FAILURE;			}			break;		default:			syslog(LOG_ERR, "%s: poll error", __FUNCTION__);			cap_exit(1);			return CAP_FAILURE;		}	}}intcap_open(void){	if (output > 1)		syslog(LOG_NOTICE, "opening %s", devname);	if ((cap_fd = open(devname, O_NONBLOCK | O_RDWR)) < 0) {		syslog(LOG_ERR, "%s: couldn't open devname: %s", __FUNCTION__, devname);		syslog(LOG_ERR, "%s: %m", __FUNCTION__);		cap_exit(1);		return CAP_FAILURE;	}	if (output > 1)		syslog(LOG_NOTICE, "configuring %s", devname);	if (ioctl(cap_fd, I_SRDOPT, RMSGD) < 0) {		syslog(LOG_ERR, "%s: couldn't configure devname: %s", __FUNCTION__, devname);		syslog(LOG_ERR, "%s: %m", __FUNCTION__);		cap_exit(1);		return CAP_FAILURE;	}	return CAP_SUCCESS;}intcap_attach(void){	union LMI_primitives *p = (union LMI_primitives *) cbuf;	unsigned short ppa = (card << 12) | (span << 8) | (slot << 0);	int ret;	ctrl.maxlen = sizeof(cbuf);	ctrl.len = sizeof(p->attach_req) + sizeof(ppa);	ctrl.buf = cbuf;	p->lmi_primitive = LMI_ATTACH_REQ;	bcopy(&ppa, p->attach_req.lmi_ppa, sizeof(ppa));	if ((ret = putmsg(cap_fd, &ctrl, NULL, RS_HIPRI)) < 0) {		syslog(LOG_ERR, "%s: putmsg: %m", __FUNCTION__);		cap_exit(1);		return CAP_FAILURE;	}	for (;;) {		switch ((ret = wait_event(100))) {		case CAP_NONE:			syslog(LOG_ERR, "%s: error, no response to LMI_ATTACH_REQ", __FUNCTION__);			cap_exit(1);			return CAP_FAILURE;		case CAP_PCPROTO:			switch (p->lmi_primitive) {			case LMI_OK_ACK:				return CAP_SUCCESS;			case LMI_ERROR_ACK:				syslog(LOG_ERR, "%s: lmi_errno: %s", __FUNCTION__,				       strerror(p->error_ack.lmi_errno));				syslog(LOG_ERR, "%s: lmi_reason: 0x%08x", __FUNCTION__,				       p->error_ack.lmi_reason);				syslog(LOG_ERR, "%s: lmi_error_primitive: %d", __FUNCTION__,				       p->error_ack.lmi_error_primitive);				cap_exit(1);				return CAP_FAILURE;			default:				syslog(LOG_ERR,				       "%s: error, unexpected response to LMI_ATTACH_REQ %d",				       __FUNCTION__, p->lmi_primitive);				cap_exit(1);				return CAP_FAILURE;			}		default:			syslog(LOG_ERR, "%s: error, unexpected response to LMI_ATTACH_REQ %d",			       __FUNCTION__, ret);			cap_exit(1);		case CAP_FAILURE:			return CAP_FAILURE;		}	}}intcap_enable(void){	union LMI_primitives *p = (union LMI_primitives *) cbuf;	int ret;	ctrl.maxlen = sizeof(cbuf);	ctrl.len = sizeof(p->enable_req);	ctrl.buf = cbuf;	p->enable_req.lmi_primitive = LMI_ENABLE_REQ;	if ((ret = putmsg(cap_fd, &ctrl, NULL, RS_HIPRI)) < 0) {		syslog(LOG_ERR, "%s: putmsg: %m", __FUNCTION__);		cap_exit(1);		return CAP_FAILURE;	}	for (;;) {		switch ((ret = wait_event(100))) {		case CAP_NONE:			syslog(LOG_ERR, "%s: error, no response to LMI_ENABLE_REQ", __FUNCTION__);			cap_exit(1);			return CAP_FAILURE;		case CAP_PCPROTO:			if (p->lmi_primitive == LMI_ENABLE_CON || p->lmi_primitive == LMI_OK_ACK)				return CAP_SUCCESS;			syslog(LOG_ERR, "%s: error, unexpected response to LMI_ENABLE_REQ %u",			       __FUNCTION__, p->lmi_primitive);			cap_exit(1);			return CAP_FAILURE;		default:			syslog(LOG_ERR, "%s: error, unexpected response to LMI_ENABLE_REQ %d",			       __FUNCTION__, ret);			cap_exit(1);		case CAP_FAILURE:			return CAP_FAILURE;		}	}}voidshow_sdl_config(void){	fprintf(stderr, "\tifname: %s", capconf.sdl.ifname);	fprintf(stderr, "\n\tifflags:");	if (capconf.sdl.ifflags & SDL_IF_UP)		fprintf(stderr, " up");	if (capconf.sdl.ifflags & SDL_IF_RX_RUNNING)		fprintf(stderr, " rx");	if (capconf.sdl.ifflags & SDL_IF_TX_RUNNING)		fprintf(stderr, " tx");	fprintf(stderr, "\n\tiftype:");	switch (capconf.sdl.iftype) {	case SDL_TYPE_NONE:		fprintf(stderr, " none");		break;	case SDL_TYPE_V35:		fprintf(stderr, " v35");		break;	case SDL_TYPE_DS0:		fprintf(stderr, " ds0");		break;	case SDL_TYPE_DS0A:		fprintf(stderr, " ds0a");		break;	case SDL_TYPE_E1:		fprintf(stderr, " e1");		break;	case SDL_TYPE_T1:		fprintf(stderr, " t1");		break;	case SDL_TYPE_ATM:		fprintf(stderr, " atm");		break;	case SDL_TYPE_PACKET:		fprintf(stderr, " packet");		break;	default:		fprintf(stderr, " [%u]", capconf.sdl.iftype);		break;	}	fprintf(stderr, "\n\tifrate: %u", capconf.sdl.ifrate);	fprintf(stderr, "\n\tifgtype:");	switch (capconf.sdl.ifgtype) {	case SDL_GTYPE_NONE:		fprintf(stderr, " none");		break;	case SDL_GTYPE_T1:		fprintf(stderr, " t1");		break;	case SDL_GTYPE_E1:		fprintf(stderr, " e1");		break;	case SDL_GTYPE_J1:		fprintf(stderr, " j1");		break;	case SDL_GTYPE_ATM:		fprintf(stderr, " atm");		break;	case SDL_GTYPE_ETH:		fprintf(stderr, " eth");		break;	case SDL_GTYPE_IP:		fprintf(stderr, " ip");		break;	case SDL_GTYPE_UDP:		fprintf(stderr, " udp");		break;	case SDL_GTYPE_TCP:		fprintf(stderr, " tcp");		break;	case SDL_GTYPE_RTP:		fprintf(stderr, " rtp");		break;	case SDL_GTYPE_SCTP:		fprintf(stderr, " sctp");		break;	default:		fprintf(stderr, " [%u]", capconf.sdl.ifgtype);		break;	}	fprintf(stderr, "\n\tifgrate: %u", capconf.sdl.ifgrate);	fprintf(stderr, "\n\tifmode:");	switch (capconf.sdl.ifmode) {	case SDL_MODE_NONE:		fprintf(stderr, " none");		break;	case SDL_MODE_DSU:		fprintf(stderr, " dsu");		break;	case SDL_MODE_CSU:		fprintf(stderr, " csu");		break;	case SDL_MODE_DTE:		fprintf(stderr, " dte");		break;	case SDL_MODE_DCE:		fprintf(stderr, " dce");		break;	case SDL_MODE_CLIENT:		fprintf(stderr, " client");		break;	case SDL_MODE_SERVER:		fprintf(stderr, " server");		break;	case SDL_MODE_PEER:		fprintf(stderr, " peer");		break;	case SDL_MODE_ECHO:		fprintf(stderr, " echo");		break;	case SDL_MODE_REM_LB:		fprintf(stderr, " rem_lb");		break;	case SDL_MODE_LOC_LB:		fprintf(stderr, " loc_lb");		break;	case SDL_MODE_LB_ECHO:		fprintf(stderr, " lb_echo");		break;	case SDL_MODE_TEST:		fprintf(stderr, " test");		break;	default:		fprintf(stderr, " [%u]", capconf.sdl.ifmode);		break;	}	fprintf(stderr, "\n\tifgmode:");	switch (capconf.sdl.ifgmode) {	case SDL_GMODE_NONE:		fprintf(stderr, " none");		break;	case SDL_GMODE_LOC_LB:		fprintf(stderr, " loc_lb");		break;	case SDL_GMODE_REM_LB:		fprintf(stderr, " rem_lb");		break;	default:		fprintf(stderr, " [%u]", capconf.sdl.ifgmode);		break;	}	fprintf(stderr, "\n\tifgcrc:");	switch (capconf.sdl.ifgcrc) {	case SDL_GCRC_NONE:		fprintf(stderr, " none");		break;	case SDL_GCRC_CRC4:		fprintf(stderr, " crc4");		break;	case SDL_GCRC_CRC5:		fprintf(stderr, " crc5");		break;	case SDL_GCRC_CRC6:		fprintf(stderr, " crc6");		break;	default:		fprintf(stderr, " [%u]", capconf.sdl.ifgcrc);		break;	}	fprintf(stderr, "\n\tifclock:");	switch (capconf.sdl.ifclock) {	case SDL_CLOCK_NONE:		fprintf(stderr, " none");		break;	case SDL_CLOCK_INT:		fprintf(stderr, " int");		break;	case SDL_CLOCK_EXT:		fprintf(stderr, " ext");		break;	case SDL_CLOCK_LOOP:		fprintf(stderr, " loop");		break;	case SDL_CLOCK_MASTER:		fprintf(stderr, " master");		break;	case SDL_CLOCK_SLAVE:		fprintf(stderr, " slave");		break;	case SDL_CLOCK_DPLL:		fprintf(stderr, " dpll");		break;	case SDL_CLOCK_ABR:		fprintf(stderr, " abr");		break;	case SDL_CLOCK_SHAPER:		fprintf(stderr, " shaper");		break;	case SDL_CLOCK_TICK:		fprintf(stderr, " tick");		break;	default:		fprintf(stderr, " [%u]", capconf.sdl.ifclock);		break;	}	fprintf(stderr, "\n\tifcoding:");	switch (capconf.sdl.ifcoding) {	case SDL_CODING_NONE:		fprintf(stderr, " none");		break;	case SDL_CODING_NRZ:		fprintf(stderr, " nrz");		break;	case SDL_CODING_NRZI:		fprintf(stderr, " nrzi");		break;	case SDL_CODING_AMI:		fprintf(stderr, " ami");		break;	case SDL_CODING_B6ZS:		fprintf(stderr, " b6zs");		break;	case SDL_CODING_B8ZS:		fprintf(stderr, " b8zs");		break;	case SDL_CODING_HDB3:		fprintf(stderr, " hdb3");		break;	case SDL_CODING_AAL1:		fprintf(stderr, " aal1");		break;	case SDL_CODING_AAL2:		fprintf(stderr, " aal2");		break;	case SDL_CODING_AAL5:		fprintf(stderr, " aal5");		break;	default:		fprintf(stderr, " [%u]", capconf.sdl.ifcoding);		break;	}	fprintf(stderr, "\n\tifframing:");	switch (capconf.sdl.ifframing) {	case SDL_FRAMING_NONE:		fprintf(stderr, " none");		break;	case SDL_FRAMING_CCS:		fprintf(stderr, " ccs");		break;	case SDL_FRAMING_CAS:		fprintf(stderr, " cas");		break;	case SDL_FRAMING_SF:		fprintf(stderr, " sf");		break;	case SDL_FRAMING_ESF:		fprintf(stderr, " esf");		break;	default:		fprintf(stderr, " [%u]", capconf.sdl.ifframing);		break;	}	fprintf(stderr, "\n\tifblksize: %u", capconf.sdl.ifblksize);	fprintf(stderr, "\n\tifleads:");	if (capconf.sdl.ifleads & SDL_LEAD_DTR)		fprintf(stderr, " dtr");	if (capconf.sdl.ifleads & SDL_LEAD_RTS)		fprintf(stderr, " rts");	if (capconf.sdl.ifleads & SDL_LEAD_DCD)		fprintf(stderr, " dcd");	if (capconf.sdl.ifleads & SDL_LEAD_CTS)		fprintf(stderr, " cts");	if (capconf.sdl.ifleads & SDL_LEAD_DSR)		fprintf(stderr, " dsr");	fprintf(stderr, "\n\tifbpv: %u", capconf.sdl.ifbpv);	fprintf(stderr, "\n\tifalarms:");	if (capconf.sdl.ifalarms & SDL_ALARM_RED)		fprintf(stderr, " red");	if (capconf.sdl.ifalarms & SDL_ALARM_BLU)		fprintf(stderr, " blue");	if (capconf.sdl.ifalarms & SDL_ALARM_YEL)		fprintf(stderr, " yellow");	if (capconf.sdl.ifalarms & SDL_ALARM_REC)		fprintf(stderr, " recovery");	fprintf(stderr, "\n\tifrxlevel: %u", capconf.sdl.ifrxlevel);	fprintf(stderr, "\n\tiftxlevel: %u", capconf.sdl.iftxlevel);	fprintf(stderr, "\n\tifsync: %u", capconf.sdl.ifsync);	fprintf(stderr, "\n\tifsyncsrc:");	fprintf(stderr, " %u", capconf.sdl.ifsyncsrc[0]);	fprintf(stderr, ",%u", capconf.sdl.ifsyncsrc[1]);

⌨️ 快捷键说明

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