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

📄 slmon.c

📁 OpenSS7 This the fourth public release of the OpenSS7 Master Package. See README in the release for
💻 C
📖 第 1 页 / 共 4 页
字号:
		break;	case SL_BSNT_NOT_RETRIEVABLE_IND:		fprintf(stdout, "ctrl=SL_BSNT_NOT_RETRIEVABLE_IND");		fprintf(stdout, "{sl_bsnt=%u}", p->sl.bsnt_not_retr_ind.sl_bsnt);		break;	case SL_OPTMGMT_ACK:		fprintf(stdout, "ctrl=SL_OPTMGMT_ACK");		break;	case SL_NOTIFY_IND:		fprintf(stdout, "ctrl=SL_NOTIFY_IND");		break;	case SL_LOCAL_PROCESSOR_OUTAGE_IND:		fprintf(stdout, "ctrl=SL_LOCAL_PROCESSOR_OUTAGE_IND");		fprintf(stdout, "{sl_timestamp=%u}", p->sl.loc_proc_out_ind.sl_timestamp);		break;	case SL_LOCAL_PROCESSOR_RECOVERED_IND:		fprintf(stdout, "ctrl=SL_LOCAL_PROCESSOR_RECOVERED_IND");		fprintf(stdout, "{sl_timestamp=%u}", p->sl.loc_proc_recovered_ind.sl_timestamp);		break;	default:		return (-1);	}	fputc('\n', stdout);	return (prim);}intwait_event(int wait){	for (;;) {		struct pollfd pfd[] = {			{mon_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();		}		if (usr_signal) {			usr_signal = 0;			usr_action();		}		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__);			mon_exit(1);			return (-1);		case 0:			return (0);		case 1:			if (pfd[0].revents & (POLLIN | POLLPRI)) {				int flags = 0;				ctrl.maxlen = BUFSIZE;				ctrl.len = 0;				ctrl.buf = cbuf;				data.maxlen = BUFSIZE;				data.len = 0;				data.buf = dbuf;				if (getmsg(mon_fd, &ctrl, &data, &flags) < 0) {					syslog(LOG_ERR, "%s: getmsg error", __FUNCTION__);					syslog(LOG_ERR, "%s: %m", __FUNCTION__);					mon_exit(1);					break;				}				if (ctrl.len > 0)					return decode_ctrl();				if (data.len > 0)					return decode_data();				break;			}			if (pfd[0].revents & POLLNVAL) {				syslog(LOG_ERR, "%s: device invalid", __FUNCTION__);				mon_exit(1);				return (-1);			}			if (pfd[0].revents & POLLHUP) {				syslog(LOG_ERR, "%s: device hangup", __FUNCTION__);				mon_exit(1);				return (-1);			}			if (pfd[0].revents & POLLERR) {				syslog(LOG_ERR, "%s: device error", __FUNCTION__);				mon_exit(1);				return (-1);			}			break;		default:			syslog(LOG_ERR, "%s: poll error", __FUNCTION__);			mon_exit(1);			return (-1);		}	}}intmon_open(void){	if (output > 1)		syslog(LOG_NOTICE, "opening %s", devname);	if ((mon_fd = open(devname, O_NONBLOCK | O_RDWR)) < 0) {		syslog(LOG_ERR, "%s: could not open devname: %s", __FUNCTION__, devname);		syslog(LOG_ERR, "%s: %m", __FUNCTION__);		mon_exit(1);		return (-1);	}	if (output > 1)		syslog(LOG_NOTICE, "configuring %s", devname);	if (ioctl(mon_fd, I_SRDOPT, RMSGD) < 0) {		syslog(LOG_ERR, "%s: could not configure devname: %s", __FUNCTION__, devname);		syslog(LOG_ERR, "%s: %m", __FUNCTION__);		mon_exit(1);		return (-1);	}	return (0);}intmon_close(void){	close(mon_fd);	return (0);}intmon_attach(void){	union LMI_primitives *p = (union LMI_primitives *) cbuf;	int ret;	size_t ppa_len;	caddr_t ppa_ptr;	if (ppa != 0) {		ppa_len = sizeof(ppa);		ppa_ptr = (caddr_t) &ppa;	} else if (clei[0] != '\0') {		ppa_len = strnlen(clei, sizeof(clei));		ppa_ptr = (caddr_t) clei;	} else {		syslog(LOG_ERR, "%s: no address to attach", __FUNCTION__);		mon_exit(1);		return (-1);	}	ctrl.maxlen = sizeof(cbuf);	ctrl.len = sizeof(p->attach_req) + ppa_len;	ctrl.buf = cbuf;	p->lmi_primitive = LMI_ATTACH_REQ;	bcopy(&ppa, p->attach_req.lmi_ppa, ppa_len);	if ((ret = putmsg(mon_fd, &ctrl, NULL, RS_HIPRI)) < 0) {		syslog(LOG_ERR, "%s: putmsg: %m", __FUNCTION__);		mon_exit(1);		return (-1);	}	for (;;) {		switch ((ret = wait_event(100))) {		case 0:			syslog(LOG_ERR, "%s: error, no response to LMI_ATTACH_REQ", __FUNCTION__);			mon_exit(1);			return (-1);		case LMI_OK_ACK:			return (0);		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);			mon_exit(1);			return (-1);		default:			syslog(LOG_ERR, "%s: error, unexpected response to LMI_ATTACH_REQ %d",			       __FUNCTION__, ret);			mon_exit(1);			return (-1);		case (-1):			return (-1);		}	}}intmon_detach(void){	union LMI_primitives *p = (union LMI_primitives *) cbuf;	int ret;	ctrl.maxlen = sizeof(cbuf);	ctrl.len = sizeof(p->detach_req);	ctrl.buf = cbuf;	p->lmi_primitive = LMI_DETACH_REQ;	if ((ret = putmsg(mon_fd, &ctrl, NULL, RS_HIPRI)) < 0) {		syslog(LOG_ERR, "%s: putmsg: %m", __FUNCTION__);		mon_exit(1);		return (-1);	}	for (;;) {		switch ((ret = wait_event(100))) {		case 0:			syslog(LOG_ERR, "%s: error, no response to LMI_DETACH_REQ", __FUNCTION__);			mon_exit(1);			return (-1);		case LMI_OK_ACK:			return (0);		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);			mon_exit(1);			return (-1);		default:			syslog(LOG_ERR, "%s: error, unexpected response to LMI_DETACH_REQ %d",			       __FUNCTION__, ret);			mon_exit(1);			return (-1);		case (-1):			return (-1);		}	}}voidshow_sl_config(void){	ftimestamp();	fprint_time(stdout);	fprintf(stdout, " # sl config: t1: %u\n", monconf.sl.t1);	fprint_time(stdout);	fprintf(stdout, " # sl config: t2: %u\n", monconf.sl.t2);	fprint_time(stdout);	fprintf(stdout, " # sl config: t2l: %u\n", monconf.sl.t2l);	fprint_time(stdout);	fprintf(stdout, " # sl config: t2h: %u\n", monconf.sl.t2h);	fprint_time(stdout);	fprintf(stdout, " # sl config: t3: %u\n", monconf.sl.t3);	fprint_time(stdout);	fprintf(stdout, " # sl config: t4n: %u\n", monconf.sl.t4n);	fprint_time(stdout);	fprintf(stdout, " # sl config: t4e: %u\n", monconf.sl.t4e);	fprint_time(stdout);	fprintf(stdout, " # sl config: t5: %u\n", monconf.sl.t5);	fprint_time(stdout);	fprintf(stdout, " # sl config: t6: %u\n", monconf.sl.t6);	fprint_time(stdout);	fprintf(stdout, " # sl config: t7: %u\n", monconf.sl.t7);	fprint_time(stdout);	fprintf(stdout, " # sl config: rb_abate: %u\n", monconf.sl.rb_abate);	fprint_time(stdout);	fprintf(stdout, " # sl config: rb_accept: %u\n", monconf.sl.rb_accept);	fprint_time(stdout);	fprintf(stdout, " # sl config: rb_discard: %u\n", monconf.sl.rb_discard);	fprint_time(stdout);	fprintf(stdout, " # sl config: tb_abate_1: %u\n", monconf.sl.tb_abate_1);	fprint_time(stdout);	fprintf(stdout, " # sl config: tb_onset_1: %u\n", monconf.sl.tb_onset_1);	fprint_time(stdout);	fprintf(stdout, " # sl config: tb_discd_1: %u\n", monconf.sl.tb_discd_1);	fprint_time(stdout);	fprintf(stdout, " # sl config: tb_abate_2: %u\n", monconf.sl.tb_abate_2);	fprint_time(stdout);	fprintf(stdout, " # sl config: tb_onset_2: %u\n", monconf.sl.tb_onset_2);	fprint_time(stdout);	fprintf(stdout, " # sl config: tb_discd_2: %u\n", monconf.sl.tb_discd_2);	fprint_time(stdout);	fprintf(stdout, " # sl config: tb_abate_3: %u\n", monconf.sl.tb_abate_3);	fprint_time(stdout);	fprintf(stdout, " # sl config: tb_onset_3: %u\n", monconf.sl.tb_onset_3);	fprint_time(stdout);	fprintf(stdout, " # sl config: tb_discd_3: %u\n", monconf.sl.tb_discd_3);	fprint_time(stdout);	fprintf(stdout, " # sl config: N1: %u\n", monconf.sl.N1);	fprint_time(stdout);	fprintf(stdout, " # sl config: N2: %u\n", monconf.sl.N2);	fprint_time(stdout);	fprintf(stdout, " # sl config: M: %u\n", monconf.sl.M);}voidshow_sdt_config(void){	ftimestamp();	fprint_time(stdout);	fprintf(stdout, " # sdt config: t8: %u\n", monconf.sdt.t8);	fprint_time(stdout);	fprintf(stdout, " # sdt config: Tin: %u\n", monconf.sdt.Tin);	fprint_time(stdout);	fprintf(stdout, " # sdt config: Tie: %u\n", monconf.sdt.Tie);	fprint_time(stdout);	fprintf(stdout, " # sdt config: T: %u\n", monconf.sdt.T);	fprint_time(stdout);	fprintf(stdout, " # sdt config: D: %u\n", monconf.sdt.D);	fprint_time(stdout);	fprintf(stdout, " # sdt config: Te: %u\n", monconf.sdt.Te);	fprint_time(stdout);	fprintf(stdout, " # sdt config: De: %u\n", monconf.sdt.De);	fprint_time(stdout);	fprintf(stdout, " # sdt config: Ue: %u\n", monconf.sdt.Ue);	fprint_time(stdout);	fprintf(stdout, " # sdt config: N: %u\n", monconf.sdt.N);	fprint_time(stdout);	fprintf(stdout, " # sdt config: m: %u\n", monconf.sdt.m);	fprint_time(stdout);	fprintf(stdout, " # sdt config: b: %u\n", monconf.sdt.b);	fprint_time(stdout);	fprintf(stdout, " # sdt config: f: ");	switch (monconf.sdt.f) {	case SDT_FLAGS_ONE:		fprintf(stdout, "one\n");		break;	case SDT_FLAGS_SHARED:		fprintf(stdout, "shared\n");		break;	case SDT_FLAGS_TWO:		fprintf(stdout, "two\n");		break;	case SDT_FLAGS_THREE:		fprintf(stdout, "three\n");		break;	default:		fprintf(stdout, "%d\n", monconf.sdt.f);		break;	}}voidshow_sdl_config(void){	int i;	ftimestamp();	fprint_time(stdout);	fprintf(stdout, " # sdl config: ifname: %s\n", monconf.sdl.ifname);	fprint_time(stdout);	fprintf(stdout, " # sdl config: ifflags:");	if (monconf.sdl.ifflags & SDL_IF_UP)		fprintf(stdout, " up");	if (monconf.sdl.ifflags & SDL_IF_RX_RUNNING)		fprintf(stdout, " rx");	if (monconf.sdl.ifflags & SDL_IF_TX_RUNNING)		fprintf(stdout, " tx");	fputc('\n', stdout);	fprint_time(stdout);	fprintf(stdout, " # sdl config: iftype:");	switch (monconf.sdl.iftype) {	case SDL_TYPE_NONE:		fprintf(stdout, " none");		break;	case SDL_TYPE_V35:		fprintf(stdout, " v35");		break;	case SDL_TYPE_DS0:		fprintf(stdout, " ds0");		break;	case SDL_TYPE_DS0A:		fprintf(stdout, " ds0a");		break;	case SDL_TYPE_E1:		fprintf(stdout, " e1");		break;	case SDL_TYPE_T1:		fprintf(stdout, " t1");		break;	case SDL_TYPE_J1:		fprintf(stdout, " j1");		break;	case SDL_TYPE_ATM:		fprintf(stdout, " atm");		break;	case SDL_TYPE_PACKET:		fprintf(stdout, " packet");		break;	default:		fprintf(stdout, " [%u]", monconf.sdl.iftype);		break;	}	fputc('\n', stdout);	fprint_time(stdout);	fprintf(stdout, " # sdl config: ifrate:");	switch (monconf.sdl.ifrate) {	case SDL_RATE_NONE:		fprintf(stdout, " none");		break;	case SDL_RATE_DS0A:		fprintf(stdout, " ds0a");		break;	case SDL_RATE_DS0:		fprintf(stdout, " ds0");		break;	case SDL_RATE_T1:	/* SDL_RATE_J1 */		fprintf(stdout, " t1/j1");		break;	case SDL_RATE_E1:		fprintf(stdout, " e1");		break;	default:		fprintf(stdout, " %u", monconf.sdl.ifrate);		break;	}	fputc('\n', stdout);	fprintf(stdout, " # sdl config: ifgtype:");	switch (monconf.sdl.ifgtype) {	case SDL_GTYPE_NONE:		fprintf(stdout, " none");		break;	case SDL_GTYPE_T1:		fprintf(stdout, " t1");		break;	case SDL_GTYPE_E1:		fprintf(stdout, " e1");		break;	case SDL_GTYPE_J1:		fprintf(stdout, " j1");		break;	case SDL_GTYPE_ATM:		fprintf(stdout, " atm");		break;	case SDL_GTYPE_ETH:		fprintf(stdout, " eth");		break;	case SDL_GTYPE_IP:		fprintf(stdout, " ip");		break;	case SDL_GTYPE_UDP:		fprintf(stdout, " udp");		break;	case SDL_GTYPE_TCP:		fprintf(stdout, " tcp");		break;	case SDL_GTYPE_RTP:		fprintf(stdout, " rtp");		break;	case SDL_GTYPE_SCTP:		fprintf(stdout, " sctp");		break;	default:		fprintf(stdout, " [%u]", monconf.sdl.ifgtype);	}	fputc('\n', stdout);	fprint_time(stdout);	fprintf(stdout, " # sdl config: ifgrate:");	switch (monconf.sdl.ifgrate) {	case SDL_GRATE_NONE:		fprintf(stdout, " none");		break;	case SDL_GRATE_T1:	/* SDL_GRATE_J1 */		fprintf(stdout, " t1/j1");		break;	case SDL_GRATE_E1:		fprintf(stdout, " e1");		break;	default:		fprintf(stdout, " %u", monconf.sdl.ifgrate);		break;	}	fputc('\n', stdout);	fprint_time(stdout);	fprintf(stdout, " # sdl config: ifmode:");	switch (monconf.sdl.ifmode) {	case SDL_MODE_NONE:		fprintf(stdout, " none");		break;	case SDL_MODE_DSU:		fprintf(stdout, " dsu");		break;	case SDL_MODE_CSU:		fprintf(stdout, " csu");		break;	case SDL_MODE_DTE:		fprintf(stdout, " dte");		break;	case SDL_MODE_DCE:		fprintf(stdout, " dce");		break;	case SDL_MODE_CLIENT:		fprintf(stdout, " client");		break;	case SDL_MODE_SERVER:		fprintf(stdout, " server");		break;	case SDL_MODE_PEER:		fprintf(stdout, " peer");		break;	case SDL_MODE_ECHO:		fprintf(stdout, " echo");		break;	case SDL_MODE_REM_LB:		fprintf(stdout, " rem-lb");		break;	case SDL_MODE_LOC_LB:		fprintf(stdout, " loc-lb");		break;	case SDL_MODE_LB_ECHO:		fprintf(stdout, " lb-echo");		break;	case SDL_MODE_TEST:		fprintf(stdout, " test");		break;	default:		fprintf(stdout, " [%u]", monconf.sdl.ifmode);		break;	}	fputc('\n', stdout);	fprint_time(stdout);	fprintf(stdout, " # sdl config: ifgmode:");	switch (monconf.sdl.ifgmode) {	case SDL_GMODE_NONE:		fprintf(stdout, " none");		break;	case SDL_GMODE_LOC_LB:		fprintf(stdout, " loc-lb");		break;	case SDL_GMODE_REM_LB:		fprintf(stdout, " rem-lb");		break;	default:		fprintf(stdout, " [%u]", monconf.sdl.ifgmode);		break;	}	fputc('\n', stdout);	fprint_time(stdout);	fprintf(stdout, " # sdl config: ifgcrc:");	switch (monconf.sdl.ifgcrc) {	case SDL_GCRC_NONE:		fprintf(stdout, " none");		break;	case SDL_GCRC_CRC4:		fprintf(stdout, " crc4");		break;	case SDL_GCRC_CRC5:		fprintf(stdout, " crc5");		break;	case SDL_GCRC_CRC6:		fprintf(stdout, " crc6");		break;	case SDL_GCRC_CRC6J:		fprintf(stdout, " crc6j");		break;	default:		fprintf(stdout, " [%u]", monconf.sdl.ifgcrc);		break;	}	fputc('\n', stdout);	fprint_time(stdout);	fprintf(stdout, " # sdl config: ifclock:");	switch (monconf.sdl.ifclock) {	case SDL_CLOCK_NONE:		fprintf(stdout, " none");		break;	case SDL_CLOCK_INT:		fprintf(stdout, " int");		break;	case SDL_CLOCK_EXT:		fprintf(stdout, " ext");		break;	case SDL_CLOCK_LOOP:		fprintf(stdout, " loop");		break;	case SDL_CLOCK_MASTER:		fprintf(stdout, " master");		break;	case SDL_CLOCK_SLAVE:		fprintf(stdout, " slave");		break;	case SDL_CLOCK_DPLL:		fprintf(stdout, " dpll");		break;	case SDL_CLOCK_ABR:		fprintf(stdout, " abr");		break;	case SDL_CLOCK_SHAPER:		fprintf(stdout, " shaper");		break;	case SDL_CLOCK_TICK:

⌨️ 快捷键说明

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