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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? print-fr.c

?? TCPDUMP的C語言源代碼,是在數據鏈路層的應用
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996 *	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-fr.c,v 1.51 2006-06-23 22:20:32 hannes Exp $ (LBL)";#endif#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <tcpdump-stdinc.h>#include <stdio.h>#include <string.h>#include <pcap.h>#include "addrtoname.h"#include "interface.h"#include "ethertype.h"#include "nlpid.h"#include "extract.h"#include "oui.h"static void frf15_print(const u_char *, u_int);/* * the frame relay header has a variable length * * the EA bit determines if there is another byte * in the header * * minimum header length is 2 bytes * maximum header length is 4 bytes * *      7    6    5    4    3    2    1    0 *    +----+----+----+----+----+----+----+----+ *    |        DLCI (6 bits)        | CR | EA | *    +----+----+----+----+----+----+----+----+ *    |   DLCI (4 bits)   |FECN|BECN| DE | EA | *    +----+----+----+----+----+----+----+----+ *    |           DLCI (7 bits)          | EA | *    +----+----+----+----+----+----+----+----+ *    |        DLCI (6 bits)        |SDLC| EA | *    +----+----+----+----+----+----+----+----+ */#define FR_EA_BIT	0x01#define FR_CR_BIT       0x02000000#define FR_DE_BIT	0x00020000#define FR_BECN_BIT	0x00040000#define FR_FECN_BIT	0x00080000#define FR_SDLC_BIT	0x00000002struct tok fr_header_flag_values[] = {    { FR_CR_BIT, "C!" },    { FR_DE_BIT, "DE" },    { FR_BECN_BIT, "BECN" },    { FR_FECN_BIT, "FECN" },    { FR_SDLC_BIT, "sdlcore" },    { 0, NULL }};/* FRF.15 / FRF.16 */#define MFR_B_BIT 0x80#define MFR_E_BIT 0x40#define MFR_C_BIT 0x20#define MFR_BEC_MASK    (MFR_B_BIT | MFR_E_BIT | MFR_C_BIT)#define MFR_CTRL_FRAME  (MFR_B_BIT | MFR_E_BIT | MFR_C_BIT)#define MFR_FRAG_FRAME  (MFR_B_BIT | MFR_E_BIT )struct tok frf_flag_values[] = {    { MFR_B_BIT, "Begin" },    { MFR_E_BIT, "End" },    { MFR_C_BIT, "Control" },    { 0, NULL }};/* Finds out Q.922 address length, DLCI and flags. Returns 0 on success * save the flags dep. on address length */static int parse_q922_addr(const u_char *p, u_int *dlci,                           u_int *addr_len, u_int8_t *flags){	if ((p[0] & FR_EA_BIT))		return -1;	*addr_len = 2;	*dlci = ((p[0] & 0xFC) << 2) | ((p[1] & 0xF0) >> 4);        flags[0] = p[0] & 0x02; /* populate the first flag fields */        flags[1] = p[1] & 0x0c;        flags[2] = 0;           /* clear the rest of the flags */        flags[3] = 0;	if (p[1] & FR_EA_BIT)		return 0;	/* 2-byte Q.922 address */	p += 2;	(*addr_len)++;		/* 3- or 4-byte Q.922 address */	if ((p[0] & FR_EA_BIT) == 0) {		*dlci = (*dlci << 7) | (p[0] >> 1);		(*addr_len)++;	/* 4-byte Q.922 address */		p++;	}	if ((p[0] & FR_EA_BIT) == 0)		return -1; /* more than 4 bytes of Q.922 address? */        flags[3] = p[0] & 0x02;        *dlci = (*dlci << 6) | (p[0] >> 2);	return 0;}char *q922_string(const u_char *p) {    static u_int dlci, addr_len;    static u_int8_t flags[4];    static char buffer[sizeof("DLCI xxxxxxxxxx")];    memset(buffer, 0, sizeof(buffer));    if (parse_q922_addr(p, &dlci, &addr_len, flags) == 0){        snprintf(buffer, sizeof(buffer), "DLCI %u", dlci);    }    return buffer;}/* Frame Relay packet structure, with flags and CRC removed                  +---------------------------+                  |       Q.922 Address*      |                  +--                       --+                  |                           |                  +---------------------------+                  | Control (UI = 0x03)       |                  +---------------------------+                  | Optional Pad      (0x00)  |                  +---------------------------+                  | NLPID                     |                  +---------------------------+                  |             .             |                  |             .             |                  |             .             |                  |           Data            |                  |             .             |                  |             .             |                  +---------------------------+           * Q.922 addresses, as presently defined, are two octets and             contain a 10-bit DLCI.  In some networks Q.922 addresses             may optionally be increased to three or four octets.*/static u_intfr_hdrlen(const u_char *p, u_int addr_len){	if (!p[addr_len + 1] /* pad exist */)		return addr_len + 1 /* UI */ + 1 /* pad */ + 1 /* NLPID */;	else 		return addr_len + 1 /* UI */ + 1 /* NLPID */;}static voidfr_hdr_print(int length, u_int addr_len, u_int dlci, u_int8_t *flags, u_int16_t nlpid){    if (qflag) {        (void)printf("Q.922, DLCI %u, length %u: ",                     dlci,                     length);    } else {        if (nlpid <= 0xff) /* if its smaller than 256 then its a NLPID */            (void)printf("Q.922, hdr-len %u, DLCI %u, Flags [%s], NLPID %s (0x%02x), length %u: ",                         addr_len,                         dlci,                         bittok2str(fr_header_flag_values, "none", EXTRACT_32BITS(flags)),                         tok2str(nlpid_values,"unknown", nlpid),                         nlpid,                         length);        else /* must be an ethertype */            (void)printf("Q.922, hdr-len %u, DLCI %u, Flags [%s], cisco-ethertype %s (0x%04x), length %u: ",                         addr_len,                         dlci,                         bittok2str(fr_header_flag_values, "none", EXTRACT_32BITS(flags)),                         tok2str(ethertype_values, "unknown", nlpid),                         nlpid,                         length);            }}u_intfr_if_print(const struct pcap_pkthdr *h, register const u_char *p){	register u_int length = h->len;	register u_int caplen = h->caplen;        TCHECK2(*p, 4); /* minimum frame header length */        if ((length = fr_print(p, length)) == 0)            return (0);        else            return length; trunc:        printf("[|fr]");        return caplen;}u_intfr_print(register const u_char *p, u_int length){	u_int16_t extracted_ethertype;	u_int dlci;	u_int addr_len;	u_int16_t nlpid;	u_int hdr_len;	u_int8_t flags[4];	if (parse_q922_addr(p, &dlci, &addr_len, flags)) {		printf("Q.922, invalid address");		return 0;	}        TCHECK2(*p,addr_len+1+1);	hdr_len = fr_hdrlen(p, addr_len);        TCHECK2(*p,hdr_len);	if (p[addr_len] != 0x03 && dlci != 0) {                /* lets figure out if we have cisco style encapsulation: */                extracted_ethertype = EXTRACT_16BITS(p+addr_len);                if (eflag)                    fr_hdr_print(length, addr_len, dlci, flags, extracted_ethertype);                if (ether_encap_print(extracted_ethertype,                                      p+addr_len+ETHERTYPE_LEN,                                      length-addr_len-ETHERTYPE_LEN,                                      length-addr_len-ETHERTYPE_LEN,                                      &extracted_ethertype) == 0)                    /* ether_type not known, probably it wasn't one */                    printf("UI %02x! ", p[addr_len]);                else                    return hdr_len;        }	if (!p[addr_len + 1]) {	/* pad byte should be used with 3-byte Q.922 */		if (addr_len != 3)			printf("Pad! ");	} else if (addr_len == 3)		printf("No pad! ");	nlpid = p[hdr_len - 1];	if (eflag)		fr_hdr_print(length, addr_len, dlci, flags, nlpid);	p += hdr_len;	length -= hdr_len;	switch (nlpid) {	case NLPID_IP:	        ip_print(gndo, p, length);		break;#ifdef INET6	case NLPID_IP6:		ip6_print(p, length);		break;#endif	case NLPID_CLNP:	case NLPID_ESIS:	case NLPID_ISIS:                isoclns_print(p-1, length+1, length+1); /* OSI printers need the NLPID field */		break;	case NLPID_SNAP:		if (snap_print(p, length, length, &extracted_ethertype, 0) == 0) {			/* ether_type not known, print raw packet */                        if (!eflag)                            fr_hdr_print(length + hdr_len, hdr_len,                                         dlci, flags, nlpid);			if (!suppress_default_print)                            default_print(p - hdr_len, length + hdr_len);		}		break;        case NLPID_Q933:		q933_print(p, length);		break;        case NLPID_MFR:                frf15_print(p, length);                break;        case NLPID_PPP:                ppp_print(p, length);                break;	default:		if (!eflag)                    fr_hdr_print(length + hdr_len, addr_len,				     dlci, flags, nlpid);		if (!xflag)			default_print(p, length);	}	return hdr_len; trunc:        printf("[|fr]");        return 0;}u_intmfr_if_print(const struct pcap_pkthdr *h, register const u_char *p){	register u_int length = h->len;	register u_int caplen = h->caplen;        TCHECK2(*p, 2); /* minimum frame header length */        if ((length = mfr_print(p, length)) == 0)            return (0);        else            return length; trunc:        printf("[|mfr]");        return caplen;}#define MFR_CTRL_MSG_ADD_LINK        1#define MFR_CTRL_MSG_ADD_LINK_ACK    2#define MFR_CTRL_MSG_ADD_LINK_REJ    3#define MFR_CTRL_MSG_HELLO           4#define MFR_CTRL_MSG_HELLO_ACK       5#define MFR_CTRL_MSG_REMOVE_LINK     6#define MFR_CTRL_MSG_REMOVE_LINK_ACK 7struct tok mfr_ctrl_msg_values[] = {    { MFR_CTRL_MSG_ADD_LINK, "Add Link" },    { MFR_CTRL_MSG_ADD_LINK_ACK, "Add Link ACK" },    { MFR_CTRL_MSG_ADD_LINK_REJ, "Add Link Reject" },    { MFR_CTRL_MSG_HELLO, "Hello" },    { MFR_CTRL_MSG_HELLO_ACK, "Hello ACK" },    { MFR_CTRL_MSG_REMOVE_LINK, "Remove Link" },    { MFR_CTRL_MSG_REMOVE_LINK_ACK, "Remove Link ACK" },    { 0, NULL }};#define MFR_CTRL_IE_BUNDLE_ID  1#define MFR_CTRL_IE_LINK_ID    2#define MFR_CTRL_IE_MAGIC_NUM  3#define MFR_CTRL_IE_TIMESTAMP  5#define MFR_CTRL_IE_VENDOR_EXT 6#define MFR_CTRL_IE_CAUSE      7struct tok mfr_ctrl_ie_values[] = {    { MFR_CTRL_IE_BUNDLE_ID, "Bundle ID"},    { MFR_CTRL_IE_LINK_ID, "Link ID"},    { MFR_CTRL_IE_MAGIC_NUM, "Magic Number"},    { MFR_CTRL_IE_TIMESTAMP, "Timestamp"},    { MFR_CTRL_IE_VENDOR_EXT, "Vendor Extension"},    { MFR_CTRL_IE_CAUSE, "Cause"},    { 0, NULL }};#define MFR_ID_STRING_MAXLEN 50struct ie_tlv_header_t {    u_int8_t ie_type;    u_int8_t ie_len;};u_intmfr_print(register const u_char *p, u_int length){    u_int tlen,idx,hdr_len = 0;    u_int16_t sequence_num;    u_int8_t ie_type,ie_len;    const u_int8_t *tptr;/* * FRF.16 Link Integrity Control Frame *  *      7    6    5    4    3    2    1    0 *    +----+----+----+----+----+----+----+----+ *    | B  | E  | C=1| 0    0    0    0  | EA | *    +----+----+----+----+----+----+----+----+ *    | 0    0    0    0    0    0    0    0  | *    +----+----+----+----+----+----+----+----+ *    |              message type             | *    +----+----+----+----+----+----+----+----+ */    TCHECK2(*p, 4); /* minimum frame header length */    if ((p[0] & MFR_BEC_MASK) == MFR_CTRL_FRAME && p[1] == 0) {        printf("FRF.16 Control, Flags [%s], %s, length %u",               bittok2str(frf_flag_values,"none",(p[0] & MFR_BEC_MASK)),               tok2str(mfr_ctrl_msg_values,"Unknown Message (0x%02x)",p[2]),               length);        tptr = p + 3;        tlen = length -3;        hdr_len = 3;        if (!vflag)            return hdr_len;        while (tlen>sizeof(struct ie_tlv_header_t)) {            TCHECK2(*tptr, sizeof(struct ie_tlv_header_t));            ie_type=tptr[0];            ie_len=tptr[1];            printf("\n\tIE %s (%u), length %u: ",                   tok2str(mfr_ctrl_ie_values,"Unknown",ie_type),                   ie_type,                   ie_len);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国模大尺度视频| 亚洲国产精品成人综合| 欧美精品一区二区不卡| 亚洲欧美另类久久久精品| 秋霞午夜av一区二区三区| eeuss影院一区二区三区| 日韩三级免费观看| 亚洲成人自拍偷拍| 91免费视频网| 中文av字幕一区| 国产麻豆午夜三级精品| 欧美久久久久免费| 一区二区三区在线免费| 成人黄动漫网站免费app| 久久久久久久电影| 国产一区二区在线观看视频| 欧美一级午夜免费电影| 午夜在线电影亚洲一区| 欧美中文字幕久久| 亚洲综合一区二区| 欧美在线一区二区三区| 伊人色综合久久天天| 97精品国产97久久久久久久久久久久| 久久久一区二区三区| 韩国午夜理伦三级不卡影院| 在线综合视频播放| 轻轻草成人在线| 日韩一级高清毛片| 激情综合色播五月| 精品精品国产高清一毛片一天堂| 免费成人在线影院| 欧美精品一区男女天堂| 国内精品久久久久影院色| 欧美xxxx老人做受| 国产麻豆一精品一av一免费| 国产亚洲综合在线| 99综合影院在线| 亚洲在线观看免费| 欧美一级视频精品观看| 日日摸夜夜添夜夜添国产精品| 91麻豆精品国产91久久久使用方法 | 国产蜜臀av在线一区二区三区| 蜜臀va亚洲va欧美va天堂| 精品女同一区二区| 岛国一区二区三区| 综合精品久久久| 欧美日本视频在线| 国产一区二区网址| 亚洲视频1区2区| 91精品国产一区二区| 国产曰批免费观看久久久| 中文字幕av一区二区三区| 黄一区二区三区| 亚洲乱码国产乱码精品精98午夜| 在线免费亚洲电影| 另类欧美日韩国产在线| 国产精品丝袜久久久久久app| 99国产麻豆精品| 视频一区二区三区入口| 久久久一区二区三区捆绑**| 91浏览器打开| 久久av老司机精品网站导航| 国产精品久久久久久一区二区三区| 色婷婷av一区二区| 日韩—二三区免费观看av| 国产亚洲综合在线| 欧美日韩国产a| 成人性生交大片免费看中文| 亚洲一级二级三级在线免费观看| 欧美大胆一级视频| 91久久久免费一区二区| 国产综合成人久久大片91| 亚洲黄色尤物视频| 国产人妖乱国产精品人妖| 欧美日韩一区不卡| 不卡一区二区三区四区| 九一久久久久久| 亚洲一区二区三区中文字幕| 欧美激情在线免费观看| 欧美日韩国产高清一区| 91在线一区二区| 国产精品18久久久久久久久久久久| 亚洲一级不卡视频| 国产精品妹子av| 欧美成人一区二区三区| 欧美日韩色一区| 色综合久久久久| 国产成人精品免费| 久久精品国产亚洲一区二区三区| 亚洲主播在线播放| 亚洲欧美偷拍另类a∨色屁股| 国产亚洲成av人在线观看导航 | 91女厕偷拍女厕偷拍高清| 久国产精品韩国三级视频| 亚洲成人激情av| 一区二区三区欧美久久| 中文字幕中文字幕在线一区| 久久久www免费人成精品| 精品久久五月天| 欧美一区午夜精品| 在线播放国产精品二区一二区四区| 色老头久久综合| 91视频一区二区| 91蜜桃网址入口| 91在线精品一区二区三区| 成人午夜短视频| 成人av网站免费观看| 成人一级片网址| av一区二区三区在线| av电影一区二区| 日本乱人伦aⅴ精品| 欧美亚洲一区二区在线| 色妹子一区二区| 欧美三级在线播放| 欧美日韩黄色一区二区| 3d动漫精品啪啪1区2区免费| 欧美精品三级在线观看| 日韩欧美你懂的| 精品国产a毛片| 中文在线资源观看网站视频免费不卡 | 久久精品999| 精品一区免费av| 国产不卡免费视频| 99久久伊人精品| 在线观看免费亚洲| 欧美一级搡bbbb搡bbbb| 久久在线免费观看| 中文字幕日韩av资源站| 亚洲一区免费视频| 日本va欧美va瓶| 高清不卡在线观看| 日本电影亚洲天堂一区| 欧美丰满少妇xxxxx高潮对白| 91精品国产综合久久精品app | 激情五月婷婷综合网| 国产激情一区二区三区四区 | 国产性天天综合网| 亚洲日本在线看| 日韩福利电影在线| 成人手机在线视频| 欧美日韩aaa| 久久综合九色欧美综合狠狠| 国产日韩欧美综合一区| 亚洲激情av在线| 狠狠v欧美v日韩v亚洲ⅴ| zzijzzij亚洲日本少妇熟睡| 欧美三级在线看| 欧美极品美女视频| 亚洲国产精品久久不卡毛片| 国产中文字幕一区| 欧美视频一区二区三区| 国产欧美日韩在线| 亚洲成人av在线电影| 成人免费观看视频| 日韩欧美色综合| 亚洲综合小说图片| 懂色av一区二区三区免费观看| 欧美日韩国产一级片| 国产精品伦理一区二区| 免费av成人在线| 欧美在线观看一区| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲大片免费看| 91美女在线视频| 欧美激情艳妇裸体舞| 美国十次综合导航| 欧美三级资源在线| 亚洲乱码国产乱码精品精可以看 | 国产午夜精品理论片a级大结局| 亚洲成人在线观看视频| 97精品久久久午夜一区二区三区| 精品国产伦一区二区三区免费 | 91精品国产综合久久久久久久久久 | 91美女片黄在线观看91美女| 久久蜜桃香蕉精品一区二区三区| 亚洲h在线观看| 欧美色图12p| 夜夜揉揉日日人人青青一国产精品| 国产精品夜夜爽| www久久精品| 久久99国产精品麻豆| 日韩一区二区在线看| 婷婷成人综合网| 欧美日本在线观看| 亚洲国产综合在线| 欧洲中文字幕精品| 综合久久国产九一剧情麻豆| 成人黄色777网| 1024亚洲合集| 色综合av在线| 亚洲黄色片在线观看| 一本到一区二区三区| 亚洲人午夜精品天堂一二香蕉| 国产99久久久久| 国产精品免费久久久久| 99久久精品免费精品国产| 亚洲视频精选在线| 欧美日韩在线播放| 日本女优在线视频一区二区| 欧美xxxxx牲另类人与|