亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? print-icmp6.c

?? TCPDUMP的C語言源代碼,是在數(shù)據(jù)鏈路層的應(yīng)用
?? C
?? 第 1 頁 / 共 3 頁
字號:
		printf(", tgt is %s",			ip6addr_string(&p->nd_na_target));		if (vflag) {                        printf(", Flags [%s]",                               bittok2str(icmp6_nd_na_flag_values,                                          "none",                                          EXTRACT_32BITS(&p->nd_na_flags_reserved)));#define NDADVLEN 24			icmp6_opt_print((const u_char *)dp + NDADVLEN,					length - NDADVLEN);#undef NDADVLEN		}	    }		break;	case ND_REDIRECT:#define RDR(i) ((struct nd_redirect *)(i))		TCHECK(RDR(dp)->nd_rd_dst);		printf(", %s", getname6((const u_char *)&RDR(dp)->nd_rd_dst));		TCHECK(RDR(dp)->nd_rd_target);		printf(" to %s",		    getname6((const u_char*)&RDR(dp)->nd_rd_target));#define REDIRECTLEN 40		if (vflag) {			icmp6_opt_print((const u_char *)dp + REDIRECTLEN,					length - REDIRECTLEN);		}		break;#undef REDIRECTLEN#undef RDR	case ICMP6_ROUTER_RENUMBERING:		icmp6_rrenum_print(bp, ep);		break;	case ICMP6_NI_QUERY:	case ICMP6_NI_REPLY:		icmp6_nodeinfo_print(length, bp, ep);		break;	case IND_SOLICIT:	case IND_ADVERT:		break;	case ICMP6_V2_MEMBERSHIP_REPORT:		mldv2_report_print((const u_char *) dp, length);		break;	case ICMP6_MOBILEPREFIX_SOLICIT: /* fall through */	case ICMP6_HADISCOV_REQUEST:                TCHECK(dp->icmp6_data16[0]);                printf(", id 0x%04x", EXTRACT_16BITS(&dp->icmp6_data16[0]));                break;	case ICMP6_HADISCOV_REPLY:		if (vflag) {			struct in6_addr *in6;			u_char *cp;			TCHECK(dp->icmp6_data16[0]);			printf(", id 0x%04x", EXTRACT_16BITS(&dp->icmp6_data16[0]));			cp = (u_char *)dp + length;			in6 = (struct in6_addr *)(dp + 1);			for (; (u_char *)in6 < cp; in6++) {				TCHECK(*in6);				printf(", %s", ip6addr_string(in6));			}		}		break;	case ICMP6_MOBILEPREFIX_ADVERT:		if (vflag) {			TCHECK(dp->icmp6_data16[0]);			printf(", id 0x%04x", EXTRACT_16BITS(&dp->icmp6_data16[0]));			if (dp->icmp6_data16[1] & 0xc0)				printf(" ");			if (dp->icmp6_data16[1] & 0x80)				printf("M");			if (dp->icmp6_data16[1] & 0x40)				printf("O");#define MPADVLEN 8			icmp6_opt_print((const u_char *)dp + MPADVLEN,					length - MPADVLEN);		}		break;	default:                printf(", length %u", length);                if (vflag <= 1)                    print_unknown_data(bp,"\n\t", length);                return;        }        if (!vflag)            printf(", length %u", length); 	return;trunc:	fputs("[|icmp6]", stdout);}static struct udphdr *get_upperlayer(u_char *bp, u_int *prot){	const u_char *ep;	struct ip6_hdr *ip6 = (struct ip6_hdr *)bp;	struct udphdr *uh;	struct ip6_hbh *hbh;	struct ip6_frag *fragh;	struct ah *ah;	u_int nh;	int hlen;	/* 'ep' points to the end of available data. */	ep = snapend;	if (!TTEST(ip6->ip6_nxt))		return NULL;	nh = ip6->ip6_nxt;	hlen = sizeof(struct ip6_hdr);	while (bp < ep) {		bp += hlen;		switch(nh) {		case IPPROTO_UDP:		case IPPROTO_TCP:			uh = (struct udphdr *)bp;			if (TTEST(uh->uh_dport)) {				*prot = nh;				return(uh);			}			else				return(NULL);			/* NOTREACHED */		case IPPROTO_HOPOPTS:		case IPPROTO_DSTOPTS:		case IPPROTO_ROUTING:			hbh = (struct ip6_hbh *)bp;			if (!TTEST(hbh->ip6h_len))				return(NULL);			nh = hbh->ip6h_nxt;			hlen = (hbh->ip6h_len + 1) << 3;			break;		case IPPROTO_FRAGMENT: /* this should be odd, but try anyway */			fragh = (struct ip6_frag *)bp;			if (!TTEST(fragh->ip6f_offlg))				return(NULL);			/* fragments with non-zero offset are meaningless */			if ((EXTRACT_16BITS(&fragh->ip6f_offlg) & IP6F_OFF_MASK) != 0)				return(NULL);			nh = fragh->ip6f_nxt;			hlen = sizeof(struct ip6_frag);			break;		case IPPROTO_AH:			ah = (struct ah *)bp;			if (!TTEST(ah->ah_len))				return(NULL);			nh = ah->ah_nxt;			hlen = (ah->ah_len + 2) << 2;			break;		default:	/* unknown or undecodable header */			*prot = nh; /* meaningless, but set here anyway */			return(NULL);		}	}	return(NULL);		/* should be notreached, though */}static voidicmp6_opt_print(const u_char *bp, int resid){	const struct nd_opt_hdr *op;	const struct nd_opt_hdr *opl;	/* why there's no struct? */	const struct nd_opt_prefix_info *opp;	const struct icmp6_opts_redirect *opr;	const struct nd_opt_mtu *opm;	const struct nd_opt_advinterval *opa;	const struct nd_opt_homeagent_info *oph;	const struct nd_opt_route_info *opri;	const u_char *cp, *ep;	struct in6_addr in6, *in6p;	size_t l;#define ECHECK(var) if ((u_char *)&(var) > ep - sizeof(var)) return	cp = bp;	/* 'ep' points to the end of available data. */	ep = snapend;	while (cp < ep) {		op = (struct nd_opt_hdr *)cp;		ECHECK(op->nd_opt_len);		if (resid <= 0)			return;		if (op->nd_opt_len == 0)			goto trunc;		if (cp + (op->nd_opt_len << 3) > ep)			goto trunc;                printf("\n\t  %s option (%u), length %u (%u): ",                       tok2str(icmp6_opt_values, "unknown", op->nd_opt_type),                       op->nd_opt_type,                       op->nd_opt_len << 3,                       op->nd_opt_len);		switch (op->nd_opt_type) {		case ND_OPT_SOURCE_LINKADDR:			opl = (struct nd_opt_hdr *)op;			l = (op->nd_opt_len << 3) - 2;			print_lladdr(cp + 2, l);			break;		case ND_OPT_TARGET_LINKADDR:			opl = (struct nd_opt_hdr *)op;			l = (op->nd_opt_len << 3) - 2;			print_lladdr(cp + 2, l);			break;		case ND_OPT_PREFIX_INFORMATION:			opp = (struct nd_opt_prefix_info *)op;			TCHECK(opp->nd_opt_pi_prefix);                        printf("%s/%u%s, Flags [%s], valid time %ss",                               ip6addr_string(&opp->nd_opt_pi_prefix),                               opp->nd_opt_pi_prefix_len,                               (op->nd_opt_len != 4) ? "badlen" : "",                               bittok2str(icmp6_opt_pi_flag_values, "none", opp->nd_opt_pi_flags_reserved),                               get_lifetime(EXTRACT_32BITS(&opp->nd_opt_pi_valid_time)));                        printf(", pref. time %ss", get_lifetime(EXTRACT_32BITS(&opp->nd_opt_pi_preferred_time)));			break;		case ND_OPT_REDIRECTED_HEADER:			opr = (struct icmp6_opts_redirect *)op;                        print_unknown_data(bp,"\n\t    ",op->nd_opt_len<<3);			/* xxx */			break;		case ND_OPT_MTU:			opm = (struct nd_opt_mtu *)op;			TCHECK(opm->nd_opt_mtu_mtu);			printf(" %u%s",                               EXTRACT_32BITS(&opm->nd_opt_mtu_mtu),                               (op->nd_opt_len != 1) ? "bad option length" : "" );                        break;		case ND_OPT_ADVINTERVAL:			opa = (struct nd_opt_advinterval *)op;			TCHECK(opa->nd_opt_adv_interval);			printf(" %us", EXTRACT_32BITS(&opa->nd_opt_adv_interval));			break;		case ND_OPT_HOMEAGENT_INFO:			oph = (struct nd_opt_homeagent_info *)op;			TCHECK(oph->nd_opt_hai_lifetime);			printf(" preference %u, lifetime %u",                               EXTRACT_16BITS(&oph->nd_opt_hai_preference),                               EXTRACT_16BITS(&oph->nd_opt_hai_lifetime));			break;		case ND_OPT_ROUTE_INFO:			opri = (struct nd_opt_route_info *)op;			TCHECK(opri->nd_opt_rti_lifetime);			memset(&in6, 0, sizeof(in6));			in6p = (struct in6_addr *)(opri + 1);			switch (op->nd_opt_len) {			case 1:				break;			case 2:				TCHECK2(*in6p, 8);				memcpy(&in6, opri + 1, 8);				break;			case 3:				TCHECK(*in6p);				memcpy(&in6, opri + 1, sizeof(in6));				break;			default:				goto trunc;			}			printf(" %s/%u", ip6addr_string(&in6),			    opri->nd_opt_rti_prefixlen);			printf(", pref=%s", get_rtpref(opri->nd_opt_rti_flags));			printf(", lifetime=%s",			    get_lifetime(EXTRACT_32BITS(&opri->nd_opt_rti_lifetime)));			break;		default:                        if (vflag <= 1) {                            print_unknown_data(cp+2,"\n\t  ", (op->nd_opt_len << 3) - 2); /* skip option header */                            return;                        }                        break;		}                /* do we want to see an additional hexdump ? */                if (vflag> 1)                    print_unknown_data(cp+2,"\n\t    ", (op->nd_opt_len << 3) - 2); /* skip option header */		cp += op->nd_opt_len << 3;		resid -= op->nd_opt_len << 3;	}	return; trunc:	fputs("[ndp opt]", stdout);	return;#undef ECHECK}static voidmld6_print(const u_char *bp){	struct mld6_hdr *mp = (struct mld6_hdr *)bp;	const u_char *ep;	/* 'ep' points to the end of available data. */	ep = snapend;	if ((u_char *)mp + sizeof(*mp) > ep)		return;	printf("max resp delay: %d ", EXTRACT_16BITS(&mp->mld6_maxdelay));	printf("addr: %s", ip6addr_string(&mp->mld6_addr));}static voidmldv2_report_print(const u_char *bp, u_int len){    struct icmp6_hdr *icp = (struct icmp6_hdr *) bp;    u_int group, nsrcs, ngroups;    u_int i, j;    /* Minimum len is 8 */    if (len < 8) {	printf(" [invalid len %d]", len);	return;    }    TCHECK(icp->icmp6_data16[1]);    ngroups = ntohs(icp->icmp6_data16[1]);    printf(", %d group record(s)", ngroups);    if (vflag > 0) {	/* Print the group records */	group = 8;        for (i = 0; i < ngroups; i++) {	    /* type(1) + auxlen(1) + numsrc(2) + grp(16) */	    if (len < group + 20) {		printf(" [invalid number of groups]");		return;	    }            TCHECK2(bp[group + 4], sizeof(struct in6_addr));            printf(" [gaddr %s", ip6addr_string(&bp[group + 4]));	    printf(" %s", tok2str(mldv2report2str, " [v2-report-#%d]",								bp[group]));            nsrcs = (bp[group + 2] << 8) + bp[group + 3];	    /* Check the number of sources and print them */	    if (len < group + 20 + (nsrcs * sizeof(struct in6_addr))) {		printf(" [invalid number of sources %d]", nsrcs);		return;	    }            if (vflag == 1)                printf(", %d source(s)", nsrcs);            else {		/* Print the sources */                (void)printf(" {");                for (j = 0; j < nsrcs; j++) {                    TCHECK2(bp[group + 20 + j * sizeof(struct in6_addr)],                            sizeof(struct in6_addr));		    printf(" %s", ip6addr_string(&bp[group + 20 + j * sizeof(struct in6_addr)]));		}                (void)printf(" }");            }	    /* Next group record */            group += 20 + nsrcs * sizeof(struct in6_addr);	    printf("]");        }    }    return;trunc:    (void)printf("[|icmp6]");    return;}static voidmldv2_query_print(const u_char *bp, u_int len){    struct icmp6_hdr *icp = (struct icmp6_hdr *) bp;    u_int mrc;    int mrt, qqi;    u_int nsrcs;    register u_int i;    /* Minimum len is 28 */    if (len < 28) {	printf(" [invalid len %d]", len);	return;    }    TCHECK(icp->icmp6_data16[0]);    mrc = ntohs(icp->icmp6_data16[0]);    if (mrc < 32768) {	mrt = mrc;    } else {        mrt = ((mrc & 0x0fff) | 0x1000) << (((mrc & 0x7000) >> 12) + 3);    }    if (vflag) {	(void)printf(" [max resp delay=%d]", mrt);    }    TCHECK2(bp[8], sizeof(struct in6_addr));    printf(" [gaddr %s", ip6addr_string(&bp[8]));    if (vflag) {        TCHECK(bp[25]);	if (bp[24] & 0x08) {		printf(" sflag");	}	if (bp[24] & 0x07) {		printf(" robustness=%d", bp[24] & 0x07);	}	if (bp[25] < 128) {		qqi = bp[25];	} else {		qqi = ((bp[25] & 0x0f) | 0x10) << (((bp[25] & 0x70) >> 4) + 3);	}	printf(" qqi=%d", qqi);    }    TCHECK2(bp[26], 2);    nsrcs = ntohs(*(u_short *)&bp[26]);    if (nsrcs > 0) {	if (len < 28 + nsrcs * sizeof(struct in6_addr))	    printf(" [invalid number of sources]");	else if (vflag > 1) {	    printf(" {");	    for (i = 0; i < nsrcs; i++) {		TCHECK2(bp[28 + i * sizeof(struct in6_addr)],                        sizeof(struct in6_addr));		printf(" %s", ip6addr_string(&bp[28 + i * sizeof(struct in6_addr)]));	    }	    printf(" }");	} else	    printf(", %d source(s)", nsrcs);    }    printf("]");    return;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
136国产福利精品导航| 日韩一级黄色片| 亚洲人成人一区二区在线观看| 国产传媒一区在线| 国产欧美一区二区精品秋霞影院 | 91在线视频在线| 亚洲视频免费观看| 欧美色爱综合网| 美女一区二区在线观看| 久久久亚洲欧洲日产国码αv| 国产成人免费在线| 最新日韩在线视频| 欧美午夜片在线看| 久久精品国产亚洲5555| 国产午夜精品在线观看| 成人精品在线视频观看| 亚洲一二三专区| 日韩欧美aaaaaa| 99精品久久99久久久久| 日韩一区精品视频| 国产精品理伦片| 在线播放/欧美激情| 国产精品456露脸| 亚洲综合免费观看高清完整版在线 | 日韩美女视频在线| 成人午夜激情影院| 亚洲最大的成人av| 精品88久久久久88久久久| 99在线精品免费| 天天综合网天天综合色| 国产视频911| 欧美日韩国产一级二级| 国产一区二区福利视频| 亚洲综合在线电影| 久久久国产精品午夜一区ai换脸| 日本道精品一区二区三区| 麻豆91在线看| 亚洲一区二区三区四区在线 | 婷婷成人综合网| 国产精品国产精品国产专区不片| 91精品国产高清一区二区三区蜜臀 | 国产精品国产自产拍高清av| 欧美日韩久久久一区| 国产91色综合久久免费分享| 午夜久久久久久| 综合电影一区二区三区 | 日本一区二区综合亚洲| 欧美高清一级片在线| 成人精品在线视频观看| 免费成人av资源网| 亚洲午夜免费福利视频| 中文字幕色av一区二区三区| www亚洲一区| 欧美视频中文字幕| 91麻豆文化传媒在线观看| 精品一区二区在线视频| 日日夜夜免费精品视频| 伊人婷婷欧美激情| 国产精品不卡在线| 国产精品视频麻豆| 久久久久久久av麻豆果冻| 日韩一区二区三区精品视频| 精品视频在线免费| 在线观看日韩精品| 日本韩国精品在线| 色吧成人激情小说| 色综合中文字幕国产| 国产精品88888| 国产精品一区二区免费不卡 | 国产精品久久久久久久久动漫| 欧美精品一区二区三区高清aⅴ| 69堂国产成人免费视频| 欧美色图激情小说| 欧美日韩国产欧美日美国产精品| 一本一道久久a久久精品综合蜜臀| 成人黄色在线网站| www.亚洲激情.com| 色香蕉成人二区免费| 91国在线观看| 在线观看亚洲精品| 56国语精品自产拍在线观看| 欧美精品在线观看播放| 欧美一区二区视频在线观看2020 | 欧美专区在线观看一区| 欧美在线制服丝袜| 欧美视频在线观看一区二区| 欧美日韩国产不卡| 日韩欧美专区在线| 久久久久久久综合色一本| 欧美国产日产图区| 最新国产成人在线观看| 亚洲狠狠丁香婷婷综合久久久| 一区二区激情视频| 日日噜噜夜夜狠狠视频欧美人| 日韩av在线发布| 国产麻豆精品在线观看| 大桥未久av一区二区三区中文| 91同城在线观看| 欧美无砖砖区免费| 精品国产自在久精品国产| 国产精品理论在线观看| 亚洲一级不卡视频| 久久国产精品一区二区| 成人免费不卡视频| 欧美在线视频全部完| 日韩欧美在线观看一区二区三区| 久久亚洲春色中文字幕久久久| 中文字幕一区免费在线观看| 一区二区三区国产豹纹内裤在线| 日精品一区二区| 成人性生交大合| 欧美高清hd18日本| 国产清纯白嫩初高生在线观看91 | 欧美三级韩国三级日本三斤| 精品国产免费一区二区三区香蕉| 国产精品美女一区二区在线观看| 亚洲精品你懂的| 久久www免费人成看片高清| 91麻豆国产香蕉久久精品| 日韩一区二区影院| 136国产福利精品导航| 日本不卡在线视频| 99久久婷婷国产精品综合| 日韩一区二区麻豆国产| 亚洲日本在线观看| 久久99精品久久久久婷婷| 欧美中文字幕一二三区视频| 久久久久久久久久久久电影 | aaa国产一区| 26uuu亚洲综合色欧美| 亚洲制服欧美中文字幕中文字幕| 精品一区二区三区在线视频| 欧美性xxxxx极品少妇| 国产亲近乱来精品视频 | 精品亚洲国内自在自线福利| 色吧成人激情小说| 国产精品久久久久婷婷二区次| 视频一区在线播放| 色婷婷综合久久久中文一区二区| 久久亚洲春色中文字幕久久久| 天天影视色香欲综合网老头| 日本韩国一区二区三区| 欧美国产丝袜视频| 国产九色sp调教91| 日韩视频一区二区三区| 一区二区高清免费观看影视大全 | 亚洲国产精品嫩草影院| 91在线视频播放| 亚洲国产精品成人综合| 麻豆视频观看网址久久| 69p69国产精品| 亚洲成人黄色影院| 在线精品视频免费观看| 亚洲精品伦理在线| 99精品国产视频| 日韩一区日韩二区| av中文字幕一区| 国产精品欧美精品| 国产suv精品一区二区883| 久久久综合精品| 国产毛片精品视频| 久久精品视频免费观看| 国产乱码精品一品二品| 欧美va亚洲va| 经典三级在线一区| 久久亚洲精品小早川怜子| 国内精品第一页| 久久品道一品道久久精品| 国产一区视频网站| 精品盗摄一区二区三区| 久久疯狂做爰流白浆xx| 日韩午夜激情av| 精品在线一区二区| 久久精品亚洲乱码伦伦中文| 国产成人精品三级麻豆| 欧美—级在线免费片| 成人黄色小视频| 一区二区三区丝袜| 欧美精三区欧美精三区| 久久精品国产免费| 国产欧美日本一区二区三区| 成人激情小说乱人伦| 国产精品国产a级| 欧美丝袜自拍制服另类| 日韩国产在线一| 久久亚洲二区三区| 白白色亚洲国产精品| 亚洲午夜免费电影| 日韩亚洲欧美在线| 国产精品一区二区91| 亚洲视频电影在线| 欧美视频在线不卡| 国产综合色精品一区二区三区| 国产日韩影视精品| 日本丶国产丶欧美色综合| 日日摸夜夜添夜夜添亚洲女人| 亚洲精品一线二线三线| 91亚洲精华国产精华精华液| 亚洲va欧美va国产va天堂影院| 精品久久久久99|