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

📄 print-decnet.c

📁 该软件根据网络数据生成NetFlow记录。NetFlow可用于网络规划、负载均衡、安全监控等
💻 C
📖 第 1 页 / 共 2 页
字号:
			    else				(void)printf("oack %d ", ack & SGQ_MASK);			    ack = EXTRACT_LE_16BITS(shp->sh_seq[2]);			    data_off += sizeof(short);			}		    }		    (void)printf("seg %d ", ack & SGQ_MASK);#ifdef	PRINT_NSPDATA		    dp = &(nspp[data_off]);		    pdata(dp, 10);#endif		}		break;	    case MFS_ILS+MFS_INT:		printf("intr ");		{		    struct seghdr *shp = (struct seghdr *)nspp;		    int ack;#ifdef	PRINT_NSPDATA		    u_char *dp;#endif		    u_int data_off = sizeof(struct minseghdr);		    ack = EXTRACT_LE_16BITS(shp->sh_seq[0]);		    if (ack & SGQ_ACK) {	/* acknum field */			if ((ack & SGQ_NAK) == SGQ_NAK)			    (void)printf("nak %d ", ack & SGQ_MASK);			else			    (void)printf("ack %d ", ack & SGQ_MASK);		        ack = EXTRACT_LE_16BITS(shp->sh_seq[1]);			data_off += sizeof(short);			if (ack & SGQ_OACK) {	/* ackdat field */			    if ((ack & SGQ_ONAK) == SGQ_ONAK)				(void)printf("nakdat %d ", ack & SGQ_MASK);			    else				(void)printf("ackdat %d ", ack & SGQ_MASK);			    ack = EXTRACT_LE_16BITS(shp->sh_seq[2]);			    data_off += sizeof(short);			}		    }		    (void)printf("seg %d ", ack & SGQ_MASK);#ifdef	PRINT_NSPDATA		    dp = &(nspp[data_off]);		    pdata(dp, 10);#endif		}		break;	    case MFS_ILS:		(void)printf("link-service %d>%d ", src, dst);		{		    struct seghdr *shp = (struct seghdr *)nspp;		    struct lsmsg *lsmp =			(struct lsmsg *)&(nspp[sizeof(struct seghdr)]);		    int ack;		    int lsflags, fcval;		    ack = EXTRACT_LE_16BITS(shp->sh_seq[0]);		    if (ack & SGQ_ACK) {	/* acknum field */			if ((ack & SGQ_NAK) == SGQ_NAK)			    (void)printf("nak %d ", ack & SGQ_MASK);			else			    (void)printf("ack %d ", ack & SGQ_MASK);		        ack = EXTRACT_LE_16BITS(shp->sh_seq[1]);			if (ack & SGQ_OACK) {	/* ackdat field */			    if ((ack & SGQ_ONAK) == SGQ_ONAK)				(void)printf("nakdat %d ", ack & SGQ_MASK);			    else				(void)printf("ackdat %d ", ack & SGQ_MASK);			    ack = EXTRACT_LE_16BITS(shp->sh_seq[2]);			}		    }		    (void)printf("seg %d ", ack & SGQ_MASK);		    lsflags = EXTRACT_LE_8BITS(lsmp->ls_lsflags);		    fcval = EXTRACT_LE_8BITS(lsmp->ls_fcval);		    switch (lsflags & LSI_MASK) {		    case LSI_DATA:			(void)printf("dat seg count %d ", fcval);			switch (lsflags & LSM_MASK) {			case LSM_NOCHANGE:			    break;			case LSM_DONOTSEND:			    (void)printf("donotsend-data ");			    break;			case LSM_SEND:			    (void)printf("send-data ");			    break;			default:			    (void)printf("reserved-fcmod? %x", lsflags);			    break;			}			break;		    case LSI_INTR:			(void)printf("intr req count %d ", fcval);			break;		    default:			(void)printf("reserved-fcval-int? %x", lsflags);			break;		    }		}		break;	    default:		(void)printf("reserved-subtype? %x %d > %d", flags, src, dst);		break;	    }	    break;	case MFT_ACK:	    switch (flags & NSP_SUBMASK) {	    case MFS_DACK:		(void)printf("data-ack %d>%d ", src, dst);		{		    struct ackmsg *amp = (struct ackmsg *)nspp;		    int ack;		    ack = EXTRACT_LE_16BITS(amp->ak_acknum[0]);		    if (ack & SGQ_ACK) {	/* acknum field */			if ((ack & SGQ_NAK) == SGQ_NAK)			    (void)printf("nak %d ", ack & SGQ_MASK);			else			    (void)printf("ack %d ", ack & SGQ_MASK);		        ack = EXTRACT_LE_16BITS(amp->ak_acknum[1]);			if (ack & SGQ_OACK) {	/* ackoth field */			    if ((ack & SGQ_ONAK) == SGQ_ONAK)				(void)printf("onak %d ", ack & SGQ_MASK);			    else				(void)printf("oack %d ", ack & SGQ_MASK);			}		    }		}		break;	    case MFS_IACK:		(void)printf("ils-ack %d>%d ", src, dst);		{		    struct ackmsg *amp = (struct ackmsg *)nspp;		    int ack;		    ack = EXTRACT_LE_16BITS(amp->ak_acknum[0]);		    if (ack & SGQ_ACK) {	/* acknum field */			if ((ack & SGQ_NAK) == SGQ_NAK)			    (void)printf("nak %d ", ack & SGQ_MASK);			else			    (void)printf("ack %d ", ack & SGQ_MASK);		        ack = EXTRACT_LE_16BITS(amp->ak_acknum[1]);			if (ack & SGQ_OACK) {	/* ackdat field */			    if ((ack & SGQ_ONAK) == SGQ_ONAK)				(void)printf("nakdat %d ", ack & SGQ_MASK);			    else				(void)printf("ackdat %d ", ack & SGQ_MASK);			}		    }		}		break;	    case MFS_CACK:		(void)printf("conn-ack %d", dst);		break;	    default:		(void)printf("reserved-acktype? %x %d > %d", flags, src, dst);		break;	    }	    break;	case MFT_CTL:	    switch (flags & NSP_SUBMASK) {	    case MFS_CI:	    case MFS_RCI:		if ((flags & NSP_SUBMASK) == MFS_CI)		    (void)printf("conn-initiate ");		else		    (void)printf("retrans-conn-initiate ");		(void)printf("%d>%d ", src, dst);		{		    struct cimsg *cimp = (struct cimsg *)nspp;		    int services, info, segsize;#ifdef	PRINT_NSPDATA		    u_char *dp;#endif		    services = EXTRACT_LE_8BITS(cimp->ci_services);		    info = EXTRACT_LE_8BITS(cimp->ci_info);		    segsize = EXTRACT_LE_16BITS(cimp->ci_segsize);		    switch (services & COS_MASK) {		    case COS_NONE:			break;		    case COS_SEGMENT:			(void)printf("seg ");			break;		    case COS_MESSAGE:			(void)printf("msg ");			break;		    case COS_CRYPTSER:			(void)printf("crypt ");			break;		    }		    switch (info & COI_MASK) {		    case COI_32:			(void)printf("ver 3.2 ");			break;		    case COI_31:			(void)printf("ver 3.1 ");			break;		    case COI_40:			(void)printf("ver 4.0 ");			break;		    case COI_41:			(void)printf("ver 4.1 ");			break;		    }		    (void)printf("segsize %d ", segsize);#ifdef	PRINT_NSPDATA		    dp = &(nspp[sizeof(struct cimsg)]);		    pdata(dp, nsplen - sizeof(struct cimsg));#endif		}		break;	    case MFS_CC:		(void)printf("conn-confirm %d>%d ", src, dst);		{		    struct ccmsg *ccmp = (struct ccmsg *)nspp;		    int services, info;		    u_int segsize, optlen;#ifdef	PRINT_NSPDATA		    u_char *dp;#endif		    services = EXTRACT_LE_8BITS(ccmp->cc_services);		    info = EXTRACT_LE_8BITS(ccmp->cc_info);		    segsize = EXTRACT_LE_16BITS(ccmp->cc_segsize);		    optlen = EXTRACT_LE_8BITS(ccmp->cc_optlen);		    switch (services & COS_MASK) {		    case COS_NONE:			break;		    case COS_SEGMENT:			(void)printf("seg ");			break;		    case COS_MESSAGE:			(void)printf("msg ");			break;		    case COS_CRYPTSER:			(void)printf("crypt ");			break;		    }		    switch (info & COI_MASK) {		    case COI_32:			(void)printf("ver 3.2 ");			break;		    case COI_31:			(void)printf("ver 3.1 ");			break;		    case COI_40:			(void)printf("ver 4.0 ");			break;		    case COI_41:			(void)printf("ver 4.1 ");			break;		    }		    (void)printf("segsize %d ", segsize);		    if (optlen) {			(void)printf("optlen %d ", optlen);#ifdef	PRINT_NSPDATA			optlen = min(optlen, nsplen - sizeof(struct ccmsg));			dp = &(nspp[sizeof(struct ccmsg)]);			pdata(dp, optlen);#endif		    }		}		break;	    case MFS_DI:		(void)printf("disconn-initiate %d>%d ", src, dst);		{		    struct dimsg *dimp = (struct dimsg *)nspp;		    int reason;		    u_int optlen;#ifdef	PRINT_NSPDATA		    u_char *dp;#endif		    reason = EXTRACT_LE_16BITS(dimp->di_reason);		    optlen = EXTRACT_LE_8BITS(dimp->di_optlen);		    print_reason(reason);		    if (optlen) {			(void)printf("optlen %d ", optlen);#ifdef	PRINT_NSPDATA			optlen = min(optlen, nsplen - sizeof(struct dimsg));			dp = &(nspp[sizeof(struct dimsg)]);			pdata(dp, optlen);#endif		    }		}		break;	    case MFS_DC:		(void)printf("disconn-confirm %d>%d ", src, dst);		{		    struct dcmsg *dcmp = (struct dcmsg *)nspp;		    int reason;		    reason = EXTRACT_LE_16BITS(dcmp->dc_reason);		    print_reason(reason);		}		break;	    default:		(void)printf("reserved-ctltype? %x %d > %d", flags, src, dst);		break;	    }	    break;	default:	    (void)printf("reserved-type? %x %d > %d", flags, src, dst);	    break;	}}static struct tok reason2str[] = {	{ UC_OBJREJECT,		"object rejected connect" },	{ UC_RESOURCES,		"insufficient resources" },	{ UC_NOSUCHNODE,	"unrecognized node name" },	{ DI_SHUT,		"node is shutting down" },	{ UC_NOSUCHOBJ,		"unrecognized object" },	{ UC_INVOBJFORMAT,	"invalid object name format" },	{ UC_OBJTOOBUSY,	"object too busy" },	{ DI_PROTOCOL,		"protocol error discovered" },	{ DI_TPA,		"third party abort" },	{ UC_USERABORT,		"user abort" },	{ UC_INVNODEFORMAT,	"invalid node name format" },	{ UC_LOCALSHUT,		"local node shutting down" },	{ DI_LOCALRESRC,	"insufficient local resources" },	{ DI_REMUSERRESRC,	"insufficient remote user resources" },	{ UC_ACCESSREJECT,	"invalid access control information" },	{ DI_BADACCNT,		"bad ACCOUNT information" },	{ UC_NORESPONSE,	"no response from object" },	{ UC_UNREACHABLE,	"node unreachable" },	{ DC_NOLINK,		"no link terminate" },	{ DC_COMPLETE,		"disconnect complete" },	{ DI_BADIMAGE,		"bad image data in connect" },	{ DI_SERVMISMATCH,	"cryptographic service mismatch" },	{ 0,			NULL }};static voidprint_reason(register int reason){	printf("%s ", tok2str(reason2str, "reason-%d", reason));}char *dnnum_string(u_short dnaddr){	char *str;	int area = (u_short)(dnaddr & AREAMASK) >> AREASHIFT;	int node = dnaddr & NODEMASK;	str = (char *)malloc(sizeof("00.0000"));	if (str == NULL)		error("dnnum_string: malloc");	sprintf(str, "%d.%d", area, node);	return(str);}char *dnname_string(u_short dnaddr){#ifdef	HAVE_LIBDNET	struct dn_naddr dna;	dna.a_len = sizeof(short);	memcpy((char *)dna.a_addr, (char *)&dnaddr, sizeof(short));	return (savestr(dnet_htoa(&dna)));#else	return(dnnum_string(dnaddr));	/* punt */#endif}#ifdef	PRINT_NSPDATAstatic voidpdata(u_char *dp, u_int maxlen){	char c;	u_int x = maxlen;	while (x-- > 0) {	    c = *dp++;	    if (isprint(c))		putchar(c);	    else		printf("\\%o", c & 0xFF);	}}#endif

⌨️ 快捷键说明

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