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

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

?? print-icmp6.c

?? TCPDUMP的C語言源代碼,是在數(shù)據(jù)鏈路層的應(yīng)用
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
/* * Copyright (c) 1988, 1989, 1990, 1991, 1993, 1994 *	The Regents of the University of California.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that: (1) source code distributions * retain the above copyright notice and this paragraph in its entirety, (2) * distributions including binary code include the above copyright notice and * this paragraph in its entirety in the documentation or other materials * provided with the distribution, and (3) all advertising materials mentioning * features or use of this software display the following acknowledgement: * ``This product includes software developed by the University of California, * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of * the University nor the names of its contributors may be used to endorse * or promote products derived from this software without specific prior * written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */#ifndef lintstatic const char rcsid[] _U_ =    "@(#) $Header: /tcpdump/master/tcpdump/print-icmp6.c,v 1.85.2.1 2008-02-05 19:36:58 guy Exp $";#endif#ifdef HAVE_CONFIG_H#include "config.h"#endif#ifdef INET6#include <tcpdump-stdinc.h>#include <stdio.h>#include <string.h>#include "interface.h"#include "addrtoname.h"#include "extract.h"#include "ip6.h"#include "icmp6.h"#include "ipproto.h"#include "udp.h"#include "ah.h"static const char *get_rtpref(u_int);static const char *get_lifetime(u_int32_t);static void print_lladdr(const u_char *, size_t);static void icmp6_opt_print(const u_char *, int);static void mld6_print(const u_char *);static void mldv2_report_print(const u_char *, u_int);static void mldv2_query_print(const u_char *, u_int);static struct udphdr *get_upperlayer(u_char *, u_int *);static void dnsname_print(const u_char *, const u_char *);static void icmp6_nodeinfo_print(u_int, const u_char *, const u_char *);static void icmp6_rrenum_print(const u_char *, const u_char *);#ifndef abs#define abs(a)	((0 < (a)) ? (a) : -(a))#endifstatic struct tok icmp6_type_values[] = {    { ICMP6_DST_UNREACH, "destination unreachable"},    { ICMP6_PACKET_TOO_BIG, "packet too big"},    { ICMP6_TIME_EXCEEDED, "time exceeded in-transit"},    { ICMP6_PARAM_PROB, "parameter problem"},    { ICMP6_ECHO_REQUEST, "echo request"},    { ICMP6_ECHO_REPLY, "echo reply"},    { MLD6_LISTENER_QUERY, "multicast listener query"},    { MLD6_LISTENER_REPORT, "multicast listener report"},    { MLD6_LISTENER_DONE, "multicast listener done"},    { ND_ROUTER_SOLICIT, "router solicitation"},    { ND_ROUTER_ADVERT, "router advertisement"},    { ND_NEIGHBOR_SOLICIT, "neighbor solicitation"},    { ND_NEIGHBOR_ADVERT, "neighbor advertisement"},    { ND_REDIRECT, "redirect"},    { ICMP6_ROUTER_RENUMBERING, "router renumbering"},    { IND_SOLICIT, "inverse neighbor solicitation"},    { IND_ADVERT, "inverse neighbor advertisement"},    { MLDV2_LISTENER_REPORT, "multicast listener report v2"},    { ICMP6_HADISCOV_REQUEST, "ha discovery request"},    { ICMP6_HADISCOV_REPLY, "ha discovery reply"},    { ICMP6_MOBILEPREFIX_SOLICIT, "mobile router solicitation"},    { ICMP6_MOBILEPREFIX_ADVERT, "mobile router advertisement"},    { ICMP6_WRUREQUEST, "who-are-you request"},    { ICMP6_WRUREPLY, "who-are-you reply"},    { ICMP6_NI_QUERY, "node information query"},    { ICMP6_NI_REPLY, "node information reply"},    { MLD6_MTRACE, "mtrace message"},    { MLD6_MTRACE_RESP, "mtrace response"},    { 0,	NULL }};static struct tok icmp6_dst_unreach_code_values[] = {    { ICMP6_DST_UNREACH_NOROUTE, "unreachable route" },    { ICMP6_DST_UNREACH_ADMIN, " unreachable prohibited"},    { ICMP6_DST_UNREACH_BEYONDSCOPE, "beyond scope"},    { ICMP6_DST_UNREACH_ADDR, "unreachable address"},    { ICMP6_DST_UNREACH_NOPORT, "unreachable port"},    { 0,	NULL }};static struct tok icmp6_opt_pi_flag_values[] = {    { ND_OPT_PI_FLAG_ONLINK, "onlink" },    { ND_OPT_PI_FLAG_AUTO, "auto" },    { ND_OPT_PI_FLAG_ROUTER, "router" },    { 0,	NULL }};static struct tok icmp6_opt_ra_flag_values[] = {    { ND_RA_FLAG_MANAGED, "managed" },    { ND_RA_FLAG_OTHER, "other stateful"},    { ND_RA_FLAG_HOME_AGENT, "home agent"},    { 0,	NULL }};static struct tok icmp6_nd_na_flag_values[] = {    { ND_NA_FLAG_ROUTER, "router" },    { ND_NA_FLAG_SOLICITED, "solicited" },    { ND_NA_FLAG_OVERRIDE, "override" },    { 0,	NULL }};static struct tok icmp6_opt_values[] = {   { ND_OPT_SOURCE_LINKADDR, "source link-address"},   { ND_OPT_TARGET_LINKADDR, "destination link-address"},   { ND_OPT_PREFIX_INFORMATION, "prefix info"},   { ND_OPT_REDIRECTED_HEADER, "redirected header"},   { ND_OPT_MTU, "mtu"},   { ND_OPT_ADVINTERVAL, "advertisement interval"},   { ND_OPT_HOMEAGENT_INFO, "homeagent information"},   { ND_OPT_ROUTE_INFO, "route info"},   { 0,	NULL }};/* mldv2 report types */static struct tok mldv2report2str[] = {	{ 1,	"is_in" },	{ 2,	"is_ex" },	{ 3,	"to_in" },	{ 4,	"to_ex" },	{ 5,	"allow" },	{ 6,	"block" },	{ 0,	NULL }};static const char *get_rtpref(u_int v){	static const char *rtpref_str[] = {		"medium",		/* 00 */		"high",			/* 01 */		"rsv",			/* 10 */		"low"			/* 11 */	};	return rtpref_str[((v & ND_RA_FLAG_RTPREF_MASK) >> 3) & 0xff];}static const char *get_lifetime(u_int32_t v){	static char buf[20];	if (v == (u_int32_t)~0UL)		return "infinity";	else {		snprintf(buf, sizeof(buf), "%u", v);		return buf;	}}static voidprint_lladdr(const u_int8_t *p, size_t l){	const u_int8_t *ep, *q;	q = p;	ep = p + l;	while (l > 0 && q < ep) {		if (q > p)			printf(":");		printf("%02x", *q++);		l--;	}}static int icmp6_cksum(const struct ip6_hdr *ip6, const struct icmp6_hdr *icp,	u_int len){	size_t i;	register const u_int16_t *sp;	u_int32_t sum;	union {		struct {			struct in6_addr ph_src;			struct in6_addr ph_dst;			u_int32_t	ph_len;			u_int8_t	ph_zero[3];			u_int8_t	ph_nxt;		} ph;		u_int16_t pa[20];	} phu;	/* pseudo-header */	memset(&phu, 0, sizeof(phu));	phu.ph.ph_src = ip6->ip6_src;	phu.ph.ph_dst = ip6->ip6_dst;	phu.ph.ph_len = htonl(len);	phu.ph.ph_nxt = IPPROTO_ICMPV6;	sum = 0;	for (i = 0; i < sizeof(phu.pa) / sizeof(phu.pa[0]); i++)		sum += phu.pa[i];	sp = (const u_int16_t *)icp;	for (i = 0; i < (len & ~1); i += 2)		sum += *sp++;	if (len & 1)		sum += htons((*(const u_int8_t *)sp) << 8);	while (sum > 0xffff)		sum = (sum & 0xffff) + (sum >> 16);	sum = ~sum & 0xffff;	return (sum);}voidicmp6_print(const u_char *bp, u_int length, const u_char *bp2, int fragmented){	const struct icmp6_hdr *dp;	const struct ip6_hdr *ip;	const struct ip6_hdr *oip;	const struct udphdr *ouh;	int dport;	const u_char *ep;	u_int prot;	dp = (struct icmp6_hdr *)bp;	ip = (struct ip6_hdr *)bp2;	oip = (struct ip6_hdr *)(dp + 1);	/* 'ep' points to the end of available data. */	ep = snapend;	TCHECK(dp->icmp6_cksum);	if (vflag && !fragmented) {		int sum = dp->icmp6_cksum;		if (TTEST2(bp[0], length)) {			sum = icmp6_cksum(ip, dp, length);			if (sum != 0)				(void)printf("[bad icmp6 cksum %x!] ", sum);			else				(void)printf("[icmp6 sum ok] ");		}	}        printf("ICMP6, %s", tok2str(icmp6_type_values,"unknown icmp6 type (%u)",dp->icmp6_type));        /* display cosmetics: print the packet length for printer that use the vflag now */        if (vflag && (dp->icmp6_type ==                      ND_ROUTER_SOLICIT ||                      ND_ROUTER_ADVERT ||                      ND_NEIGHBOR_ADVERT ||                      ND_NEIGHBOR_SOLICIT ||                      ND_REDIRECT ||                      ICMP6_HADISCOV_REPLY ||                      ICMP6_MOBILEPREFIX_ADVERT ))            printf(", length %u", length);                      	switch (dp->icmp6_type) {	case ICMP6_DST_UNREACH:		TCHECK(oip->ip6_dst);                printf(", %s", tok2str(icmp6_dst_unreach_code_values,"unknown unreach code (%u)",dp->icmp6_code));		switch (dp->icmp6_code) {		case ICMP6_DST_UNREACH_NOROUTE: /* fall through */		case ICMP6_DST_UNREACH_ADMIN:		case ICMP6_DST_UNREACH_ADDR:                        printf(" %s",ip6addr_string(&oip->ip6_dst));                        break;		case ICMP6_DST_UNREACH_BEYONDSCOPE:			printf(" %s, source address %s",			       ip6addr_string(&oip->ip6_dst),			       ip6addr_string(&oip->ip6_src));			break;		case ICMP6_DST_UNREACH_NOPORT:			if ((ouh = get_upperlayer((u_char *)oip, &prot))			    == NULL)				goto trunc;			dport = EXTRACT_16BITS(&ouh->uh_dport);			switch (prot) {			case IPPROTO_TCP:				printf(", %s tcp port %s",					ip6addr_string(&oip->ip6_dst),					tcpport_string(dport));				break;			case IPPROTO_UDP:				printf(", %s udp port %s",					ip6addr_string(&oip->ip6_dst),					udpport_string(dport));				break;			default:				printf(", %s protocol %d port %d unreachable",					ip6addr_string(&oip->ip6_dst),					oip->ip6_nxt, dport);				break;			}			break;		default:                    if (vflag <= 1) {                            print_unknown_data(bp,"\n\t",length);                            return;                    }                    break;		}		break;	case ICMP6_PACKET_TOO_BIG:		TCHECK(dp->icmp6_mtu);		printf(", mtu %u", EXTRACT_32BITS(&dp->icmp6_mtu));		break;	case ICMP6_TIME_EXCEEDED:		TCHECK(oip->ip6_dst);		switch (dp->icmp6_code) {		case ICMP6_TIME_EXCEED_TRANSIT:			printf(" for %s",				ip6addr_string(&oip->ip6_dst));			break;		case ICMP6_TIME_EXCEED_REASSEMBLY:			printf(" (reassembly)");			break;		default:			printf(", unknown code (%u)", dp->icmp6_code);			break;		}		break;	case ICMP6_PARAM_PROB:		TCHECK(oip->ip6_dst);		switch (dp->icmp6_code) {		case ICMP6_PARAMPROB_HEADER:			printf(", errorneous - octet %u", EXTRACT_32BITS(&dp->icmp6_pptr));			break;		case ICMP6_PARAMPROB_NEXTHEADER:			printf(", next header - octet %u", EXTRACT_32BITS(&dp->icmp6_pptr));			break;		case ICMP6_PARAMPROB_OPTION:			printf(", option - octet %u", EXTRACT_32BITS(&dp->icmp6_pptr));			break;		default:			printf(", code-#%d",			       dp->icmp6_code);			break;		}		break;	case ICMP6_ECHO_REQUEST:	case ICMP6_ECHO_REPLY:		TCHECK(dp->icmp6_seq);		printf(", seq %u", EXTRACT_16BITS(&dp->icmp6_seq));		break;	case ICMP6_MEMBERSHIP_QUERY:		if (length == MLD_MINLEN) {			mld6_print((const u_char *)dp);		} else if (length >= MLDV2_MINLEN) {			printf("v2 ");			mldv2_query_print((const u_char *)dp, length);		} else {			printf(" unknown-version (len %u) ", length);		}		break;	case ICMP6_MEMBERSHIP_REPORT:		mld6_print((const u_char *)dp);		break;	case ICMP6_MEMBERSHIP_REDUCTION:		mld6_print((const u_char *)dp);		break;	case ND_ROUTER_SOLICIT:#define RTSOLLEN 8		if (vflag) {			icmp6_opt_print((const u_char *)dp + RTSOLLEN,					length - RTSOLLEN);		}		break;	case ND_ROUTER_ADVERT:#define RTADVLEN 16		if (vflag) {			struct nd_router_advert *p;			p = (struct nd_router_advert *)dp;			TCHECK(p->nd_ra_retransmit);			printf("\n\thop limit %u, Flags [%s]" \                               ", pref %s, router lifetime %us, reachable time %us, retrans time %us",                               (u_int)p->nd_ra_curhoplimit,                               bittok2str(icmp6_opt_ra_flag_values,"none",(p->nd_ra_flags_reserved)),                               get_rtpref(p->nd_ra_flags_reserved),                               EXTRACT_16BITS(&p->nd_ra_router_lifetime),                               EXTRACT_32BITS(&p->nd_ra_reachable),                               EXTRACT_32BITS(&p->nd_ra_retransmit));			icmp6_opt_print((const u_char *)dp + RTADVLEN,					length - RTADVLEN);		}		break;	case ND_NEIGHBOR_SOLICIT:	    {		struct nd_neighbor_solicit *p;		p = (struct nd_neighbor_solicit *)dp;		TCHECK(p->nd_ns_target);		printf(", who has %s", ip6addr_string(&p->nd_ns_target));		if (vflag) {#define NDSOLLEN 24			icmp6_opt_print((const u_char *)dp + NDSOLLEN,					length - NDSOLLEN);		}	    }		break;	case ND_NEIGHBOR_ADVERT:	    {		struct nd_neighbor_advert *p;		p = (struct nd_neighbor_advert *)dp;		TCHECK(p->nd_na_target);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人夜色高潮福利影视| 精品嫩草影院久久| 另类中文字幕网| 国产精品久久久久久妇女6080 | a级精品国产片在线观看| 亚洲专区一二三| 国产女同性恋一区二区| 欧美精品亚洲一区二区在线播放| 国产+成+人+亚洲欧洲自线| 亚洲va欧美va人人爽| 国产精品三级电影| 久久综合资源网| 欧美精品一二三四| 一本大道av伊人久久综合| 国产尤物一区二区在线| 亚洲午夜国产一区99re久久| 国产精品成人一区二区艾草| 久久久国产精品午夜一区ai换脸| 欧美精品久久99| 色久优优欧美色久优优| 成人午夜激情在线| 国产精品69久久久久水密桃| 日韩精品每日更新| 天堂成人免费av电影一区| 亚洲精品视频免费看| 中文一区二区在线观看| 亚洲精品一区在线观看| 欧美成人一区二区三区在线观看 | 亚洲成av人影院在线观看网| 综合久久久久久久| 国产精品无遮挡| 欧美国产激情二区三区| 国产午夜精品久久| 欧美国产日韩一二三区| 日本一区二区视频在线观看| 欧美经典一区二区| 久久精品视频在线免费观看| 久久久久久99久久久精品网站| 日韩美一区二区三区| 欧美精品777| 欧美日韩激情一区| 欧美乱熟臀69xxxxxx| 欧美日韩第一区日日骚| 欧美嫩在线观看| 日韩一区二区三| 精品福利一二区| 精品黑人一区二区三区久久| 久久一日本道色综合| 国产亚洲一二三区| 国产蜜臀av在线一区二区三区| 日本一区二区三区国色天香| 欧美国产欧美亚州国产日韩mv天天看完整| 国产日韩精品久久久| 亚洲色图另类专区| 亚洲一区在线观看免费| 日韩在线卡一卡二| 国产一区二区三区蝌蚪| 高清免费成人av| 一本到一区二区三区| 欧美午夜片在线看| 日韩免费在线观看| 中文字幕第一区综合| 一区二区三区四区亚洲| 三级不卡在线观看| 国产一区三区三区| 99久久久精品| 欧美人妇做爰xxxⅹ性高电影| 欧美一区二区视频在线观看| 久久免费国产精品| 18欧美乱大交hd1984| 午夜精品福利一区二区三区av | 中文子幕无线码一区tr| 夜夜嗨av一区二区三区中文字幕 | 国内外精品视频| 99精品久久只有精品| 欧美日韩的一区二区| 久久亚洲一级片| 一区二区在线观看不卡| 美女久久久精品| 成人激情小说乱人伦| 欧美挠脚心视频网站| 国产亚洲成av人在线观看导航| 亚洲色图一区二区三区| 久久精品国产**网站演员| 91在线小视频| 精品国产一区二区三区不卡 | 1000部国产精品成人观看| 丝袜诱惑亚洲看片| 成人动漫视频在线| 日韩午夜av一区| 一区二区三区国产豹纹内裤在线| 久久国产福利国产秒拍| 色婷婷综合激情| 久久综合久久综合亚洲| 一区二区三区精品| 丁香网亚洲国际| 日韩一级免费观看| 一区二区三区色| 国产不卡在线一区| 欧美变态口味重另类| 亚洲综合色网站| 成人免费看片app下载| 日韩欧美中文字幕一区| 亚洲一区自拍偷拍| 99久久精品一区二区| 久久亚洲综合色一区二区三区| 午夜在线电影亚洲一区| av电影一区二区| 欧美国产亚洲另类动漫| 久久99精品久久久| 在线不卡欧美精品一区二区三区| |精品福利一区二区三区| 国产精品一区二区果冻传媒| 91精品国产欧美一区二区18| 亚洲国产视频直播| 91丝袜美女网| 国产精品伦理在线| 国产高清精品久久久久| 精品久久久久久综合日本欧美| 亚洲国产精品久久人人爱蜜臀| 91美女片黄在线观看| 国产精品久久久久久久久免费丝袜 | 日本一区免费视频| 国产在线国偷精品免费看| 日韩欧美一卡二卡| 日韩激情视频网站| 在线成人免费观看| 日韩精品国产精品| 欧美精品乱码久久久久久| 一区二区三区四区不卡在线| 91视视频在线观看入口直接观看www| 久久久久久久久久看片| 国产一区二区在线看| 欧美精品一区二区精品网| 免费的成人av| 精品久久久久av影院| 激情小说欧美图片| 精品国产精品网麻豆系列| 美脚の诱脚舐め脚责91| 日韩精品一区二区三区老鸭窝| 男人的j进女人的j一区| 日韩免费性生活视频播放| 久久99这里只有精品| 欧美mv和日韩mv的网站| 狠狠色狠狠色综合日日91app| 久久一日本道色综合| 粉嫩在线一区二区三区视频| 国产精品污污网站在线观看| 99re视频精品| 亚洲第一综合色| 91精品国产综合久久精品麻豆| 日韩精品亚洲专区| 久久综合九色综合久久久精品综合| 精品综合久久久久久8888| 久久精品亚洲麻豆av一区二区| 成人动漫中文字幕| 一区二区三区日韩欧美| 欧美日本一道本| 精品亚洲国产成人av制服丝袜| 久久久久国产精品厨房| 一本一道综合狠狠老| 午夜在线电影亚洲一区| 久久综合色播五月| 91一区二区三区在线观看| 亚洲一级在线观看| 精品久久久久久亚洲综合网| 成人av小说网| 亚洲123区在线观看| 精品国产一区二区三区久久影院| 国产91丝袜在线播放| 一区二区三区精品视频| 精品国产乱码久久久久久夜甘婷婷| 国产成人av一区二区| 亚洲国产日韩一区二区| 久久视频一区二区| 色哟哟欧美精品| 久久国产剧场电影| 日韩美女啊v在线免费观看| 欧美精品久久99| 成人av午夜电影| 视频在线观看一区| 国产精品久久久久久福利一牛影视| 欧美日韩国产一区| 国产不卡免费视频| 午夜精品福利在线| 国产精品拍天天在线| 欧美精品一卡两卡| 99久久精品国产网站| 日韩精品一级二级| 国产精品不卡视频| 欧美videos大乳护士334| 91福利国产成人精品照片| 国产精品一区专区| 日韩国产欧美视频| 日韩码欧中文字| 2017欧美狠狠色| 欧美伦理电影网| 色综合天天综合网国产成人综合天| 日本美女一区二区三区| 亚洲乱码国产乱码精品精的特点 |