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

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

?? print-ip6opts.c

?? TCPDUMP的C語言源代碼,是在數據鏈路層的應用
?? C
字號:
/* * Copyright (C) 1998 WIDE Project. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. Neither the name of the project 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 BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */#ifdef HAVE_CONFIG_H#include "config.h"#endif#ifndef lintstatic const char rcsid[] _U_ =     "@(#) $Header: /tcpdump/master/tcpdump/print-ip6opts.c,v 1.18 2005-04-20 22:18:50 guy Exp $";#endif#ifdef INET6#include <tcpdump-stdinc.h>#include <stdio.h>#include "ip6.h"#include "interface.h"#include "addrtoname.h"#include "extract.h"/* items outside of rfc2292bis */#ifndef IP6OPT_MINLEN#define IP6OPT_MINLEN	2#endif#ifndef IP6OPT_RTALERT_LEN#define IP6OPT_RTALERT_LEN	4#endif#ifndef IP6OPT_JUMBO_LEN#define IP6OPT_JUMBO_LEN	6#endif#define IP6OPT_HOMEADDR_MINLEN 18#define IP6OPT_BU_MINLEN       10#define IP6OPT_BA_MINLEN       13#define IP6OPT_BR_MINLEN        2#define IP6SOPT_UI            0x2#define IP6SOPT_UI_MINLEN       4#define IP6SOPT_ALTCOA        0x3#define IP6SOPT_ALTCOA_MINLEN  18#define IP6SOPT_AUTH          0x4#define IP6SOPT_AUTH_MINLEN     6static void ip6_sopt_print(const u_char *, int);static voidip6_sopt_print(const u_char *bp, int len){    int i;    int optlen;    for (i = 0; i < len; i += optlen) {	if (bp[i] == IP6OPT_PAD1)	    optlen = 1;	else {	    if (i + 1 < len)		optlen = bp[i + 1] + 2;	    else		goto trunc;	}	if (i + optlen > len)	    goto trunc;	switch (bp[i]) {	case IP6OPT_PAD1:            printf(", pad1");	    break;	case IP6OPT_PADN:	    if (len - i < IP6OPT_MINLEN) {		printf(", padn: trunc");		goto trunc;	    }            printf(", padn");	    break;        case IP6SOPT_UI:             if (len - i < IP6SOPT_UI_MINLEN) {		printf(", ui: trunc");		goto trunc;	    }            printf(", ui: 0x%04x ", EXTRACT_16BITS(&bp[i + 2]));	    break;        case IP6SOPT_ALTCOA:             if (len - i < IP6SOPT_ALTCOA_MINLEN) {		printf(", altcoa: trunc");		goto trunc;	    }            printf(", alt-CoA: %s", ip6addr_string(&bp[i+2]));	    break;        case IP6SOPT_AUTH:             if (len - i < IP6SOPT_AUTH_MINLEN) {		printf(", auth: trunc");		goto trunc;	    }            printf(", auth spi: 0x%08x", EXTRACT_32BITS(&bp[i + 2]));	    break;	default:	    if (len - i < IP6OPT_MINLEN) {		printf(", sopt_type %d: trunc)", bp[i]);		goto trunc;	    }	    printf(", sopt_type 0x%02x: len=%d", bp[i], bp[i + 1]);	    break;	}    }    return;trunc:    printf("[trunc] ");}voidip6_opt_print(const u_char *bp, int len){    int i;    int optlen = 0;    for (i = 0; i < len; i += optlen) {	if (bp[i] == IP6OPT_PAD1)	    optlen = 1;	else {	    if (i + 1 < len)		optlen = bp[i + 1] + 2;	    else		goto trunc;	}	if (i + optlen > len)	    goto trunc;	switch (bp[i]) {	case IP6OPT_PAD1:            printf("(pad1)");	    break;	case IP6OPT_PADN:	    if (len - i < IP6OPT_MINLEN) {		printf("(padn: trunc)");		goto trunc;	    }            printf("(padn)");	    break;	case IP6OPT_ROUTER_ALERT:	    if (len - i < IP6OPT_RTALERT_LEN) {		printf("(rtalert: trunc)");		goto trunc;	    }	    if (bp[i + 1] != IP6OPT_RTALERT_LEN - 2) {		printf("(rtalert: invalid len %d)", bp[i + 1]);		goto trunc;	    }	    printf("(rtalert: 0x%04x) ", EXTRACT_16BITS(&bp[i + 2]));	    break;	case IP6OPT_JUMBO:	    if (len - i < IP6OPT_JUMBO_LEN) {		printf("(jumbo: trunc)");		goto trunc;	    }	    if (bp[i + 1] != IP6OPT_JUMBO_LEN - 2) {		printf("(jumbo: invalid len %d)", bp[i + 1]);		goto trunc;	    }	    printf("(jumbo: %u) ", EXTRACT_32BITS(&bp[i + 2]));	    break;        case IP6OPT_HOME_ADDRESS:	    if (len - i < IP6OPT_HOMEADDR_MINLEN) {		printf("(homeaddr: trunc)");		goto trunc;	    }	    if (bp[i + 1] < IP6OPT_HOMEADDR_MINLEN - 2) {		printf("(homeaddr: invalid len %d)", bp[i + 1]);		goto trunc;	    }	    printf("(homeaddr: %s", ip6addr_string(&bp[i + 2]));            if (bp[i + 1] > IP6OPT_HOMEADDR_MINLEN - 2) {		ip6_sopt_print(&bp[i + IP6OPT_HOMEADDR_MINLEN],		    (optlen - IP6OPT_HOMEADDR_MINLEN));	    }            printf(")");	    break;        case IP6OPT_BINDING_UPDATE:	    if (len - i < IP6OPT_BU_MINLEN) {		printf("(bu: trunc)");		goto trunc;	    }	    if (bp[i + 1] < IP6OPT_BU_MINLEN - 2) {		printf("(bu: invalid len %d)", bp[i + 1]);		goto trunc;	    }	    printf("(bu: ");	    if (bp[i + 2] & 0x80)		    printf("A");	    if (bp[i + 2] & 0x40)		    printf("H");	    if (bp[i + 2] & 0x20)		    printf("S");	    if (bp[i + 2] & 0x10)		    printf("D");	    if ((bp[i + 2] & 0x0f) || bp[i + 3] || bp[i + 4])		    printf("res");	    printf(", sequence: %u", bp[i + 5]);	    printf(", lifetime: %u", EXTRACT_32BITS(&bp[i + 6]));	    if (bp[i + 1] > IP6OPT_BU_MINLEN - 2) {		ip6_sopt_print(&bp[i + IP6OPT_BU_MINLEN],		    (optlen - IP6OPT_BU_MINLEN));	    }	    printf(")");	    break;	case IP6OPT_BINDING_ACK:	    if (len - i < IP6OPT_BA_MINLEN) {		printf("(ba: trunc)");		goto trunc;	    }	    if (bp[i + 1] < IP6OPT_BA_MINLEN - 2) {		printf("(ba: invalid len %d)", bp[i + 1]);		goto trunc;	    }	    printf("(ba: ");	    printf("status: %u", bp[i + 2]);	    if (bp[i + 3])		    printf("res");	    printf(", sequence: %u", bp[i + 4]);	    printf(", lifetime: %u", EXTRACT_32BITS(&bp[i + 5]));	    printf(", refresh: %u", EXTRACT_32BITS(&bp[i + 9]));	    if (bp[i + 1] > IP6OPT_BA_MINLEN - 2) {		ip6_sopt_print(&bp[i + IP6OPT_BA_MINLEN],		    (optlen - IP6OPT_BA_MINLEN));	    }            printf(")");	    break;        case IP6OPT_BINDING_REQ:	    if (len - i < IP6OPT_BR_MINLEN) {		printf("(br: trunc)");		goto trunc;	    }            printf("(br");            if (bp[i + 1] > IP6OPT_BR_MINLEN - 2) {		ip6_sopt_print(&bp[i + IP6OPT_BR_MINLEN],		    (optlen - IP6OPT_BR_MINLEN));	    }            printf(")");	    break;	default:	    if (len - i < IP6OPT_MINLEN) {		printf("(type %d: trunc)", bp[i]);		goto trunc;	    }	    printf("(opt_type 0x%02x: len=%d) ", bp[i], bp[i + 1]);	    break;	}    }#if 0end:#endif    return;trunc:    printf("[trunc] ");}inthbhopt_print(register const u_char *bp){    const struct ip6_hbh *dp = (struct ip6_hbh *)bp;    int hbhlen = 0;    TCHECK(dp->ip6h_len);    hbhlen = (int)((dp->ip6h_len + 1) << 3);    TCHECK2(*dp, hbhlen);    printf("HBH ");    if (vflag)	ip6_opt_print((const u_char *)dp + sizeof(*dp), hbhlen - sizeof(*dp));    return(hbhlen);  trunc:    fputs("[|HBH]", stdout);    return(-1);}intdstopt_print(register const u_char *bp){    const struct ip6_dest *dp = (struct ip6_dest *)bp;    int dstoptlen = 0;    TCHECK(dp->ip6d_len);    dstoptlen = (int)((dp->ip6d_len + 1) << 3);    TCHECK2(*dp, dstoptlen);    printf("DSTOPT ");    if (vflag) {	ip6_opt_print((const u_char *)dp + sizeof(*dp),	    dstoptlen - sizeof(*dp));    }    return(dstoptlen);  trunc:    fputs("[|DSTOPT]", stdout);    return(-1);}#endif /* INET6 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区黄视频 | 欧美疯狂性受xxxxx喷水图片| 欧美精品久久一区| 中文字幕一区二区在线播放| 免费在线观看一区二区三区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产欧美日韩麻豆91| 亚州成人在线电影| 91网站最新地址| 国产亚洲精品7777| 麻豆极品一区二区三区| 在线视频一区二区三区| 国产日韩高清在线| 久久草av在线| 91精品在线免费观看| 亚洲综合av网| 91老师片黄在线观看| 中文字幕欧美激情| 成人性视频免费网站| 久久久夜色精品亚洲| 久久精品国产久精国产爱| 欧美高清视频不卡网| 亚洲女人****多毛耸耸8| 99久久99久久综合| 自拍偷在线精品自拍偷无码专区 | 国产精品久久久久影院老司| 六月丁香综合在线视频| 欧美美女网站色| 日韩精品一区第一页| 欧美日韩国产首页| 性久久久久久久久| 91精品综合久久久久久| 青青草成人在线观看| 欧美岛国在线观看| 美国十次综合导航| 久久免费美女视频| www.在线欧美| 亚洲另类在线制服丝袜| 欧美丝袜丝交足nylons| 亚洲午夜精品一区二区三区他趣| 色综合色综合色综合色综合色综合 | 亚洲国产经典视频| 国产成人自拍在线| 亚洲视频在线一区| 欧美性xxxxx极品少妇| 日本视频一区二区| 欧美tk—视频vk| 国产在线精品免费av| 欧美国产成人在线| 91在线国内视频| 日本伊人色综合网| 精品成人一区二区三区四区| 成人免费观看男女羞羞视频| 亚洲乱码精品一二三四区日韩在线| 在线视频一区二区三区| 免费精品99久久国产综合精品| 26uuu欧美| 色综合欧美在线视频区| 久久国产欧美日韩精品| 国产精品久久久久一区| 欧美日韩免费视频| 激情综合网最新| 一区二区高清视频在线观看| 欧美一区三区二区| 成人国产免费视频| 午夜久久福利影院| 国产嫩草影院久久久久| 欧美性受xxxx| 粉嫩aⅴ一区二区三区四区| 亚洲午夜激情网页| 久久久激情视频| 欧美福利一区二区| 成人不卡免费av| 美女一区二区视频| 亚洲视频一区在线观看| 日韩欧美亚洲国产另类 | 日韩亚洲欧美综合| 99久久精品国产一区| 青青草97国产精品免费观看| 国产精品久久久久久久蜜臀 | 99精品欧美一区二区蜜桃免费| 亚洲成a人片综合在线| 国产精品国产精品国产专区不片 | 欧美探花视频资源| 国产很黄免费观看久久| 五月婷婷综合在线| 亚洲五月六月丁香激情| 亚洲国产成人自拍| 久久综合九色综合97_久久久| 一本色道久久综合亚洲91| 粉嫩av亚洲一区二区图片| 麻豆精品视频在线观看| 丝袜亚洲另类欧美| 国产综合色在线| 日韩精品视频网站| 亚洲精品国产a久久久久久| 国产免费成人在线视频| 精品国产麻豆免费人成网站| 欧美人与z0zoxxxx视频| 色吊一区二区三区| 97久久久精品综合88久久| 国产成人精品在线看| 久久超碰97人人做人人爱| 日本中文字幕不卡| 天天色天天操综合| 偷拍一区二区三区四区| 亚洲国产aⅴ成人精品无吗| 亚洲免费三区一区二区| 亚洲天堂中文字幕| 最新国产精品久久精品| 日本一区二区三区久久久久久久久不| 欧美成人video| 日韩精品一区在线| 精品国产91九色蝌蚪| 日韩女优毛片在线| 精品福利一区二区三区| 日韩你懂的在线播放| 精品免费一区二区三区| 久久人人超碰精品| 国产亚洲成年网址在线观看| 久久久精品tv| 中文字幕一区二区三区色视频| 中文字幕乱码日本亚洲一区二区| 国产喷白浆一区二区三区| 国产精品亲子乱子伦xxxx裸| 中文字幕亚洲综合久久菠萝蜜| 亚洲免费色视频| 五月天精品一区二区三区| 日韩电影在线看| 国产精品一区二区久久不卡| eeuss鲁片一区二区三区 | 亚洲一区二区精品3399| 日韩**一区毛片| 国产乱码精品一品二品| 99精品一区二区三区| 欧美在线视频全部完| 欧美一区二区三区人| 精品国产凹凸成av人网站| 国产午夜精品久久久久久久| 亚洲手机成人高清视频| 婷婷综合五月天| 国产福利精品一区| 欧美在线视频日韩| 久久夜色精品国产欧美乱极品| 亚洲国产一区二区三区青草影视| 天天做天天摸天天爽国产一区| 久久成人久久爱| 日本韩国一区二区| 精品国产成人在线影院| 亚洲欧美色图小说| 精品一区中文字幕| 色丁香久综合在线久综合在线观看| 日韩免费看的电影| 一区二区三区.www| 韩国理伦片一区二区三区在线播放| 99久久精品国产精品久久| 欧美一区永久视频免费观看| 亚洲欧美在线另类| 久草在线在线精品观看| 日本高清免费不卡视频| 久久久久久久久99精品| 亚洲va欧美va国产va天堂影院| 国产成人在线电影| 3atv一区二区三区| 亚洲视频一区二区免费在线观看| 久久精品99久久久| 欧美乱妇20p| 亚洲美女免费视频| 国产福利一区二区三区视频| 欧美另类久久久品| 一区二区三区日韩精品视频| 国产一区二区三区综合| 国产成人在线看| 精品久久国产97色综合| 午夜精品爽啪视频| 欧美色区777第一页| 亚洲欧美自拍偷拍| 成人毛片在线观看| 久久综合九色欧美综合狠狠| 性感美女久久精品| 欧美日韩国产影片| 亚洲午夜精品17c| 欧美在线观看18| 一区二区三区精密机械公司| 成人av午夜电影| 中文一区在线播放| 高清不卡在线观看av| 久久久久国产精品免费免费搜索| 美腿丝袜一区二区三区| 欧美欧美欧美欧美| 秋霞午夜av一区二区三区| 欧美年轻男男videosbes| 亚洲国产cao| 欧美久久久久免费| 婷婷成人激情在线网| 91精品国产色综合久久久蜜香臀| 日本欧美久久久久免费播放网| 日韩一区二区免费在线观看| 亚洲成a人v欧美综合天堂| 欧美人与性动xxxx|