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

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

?? _dhcp6.c

?? This directory contains source code for tcpdump, a tool for network monitoring and data acquisition
?? C
字號:
/*
 * Copyright (C) 1998 and 1999 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.
 */

#if 0
static const char rcsid[] =
"@(#) $Header: /tcpdump/master/tcpdump/print-dhcp6.c,v 1.3 1999/12/22 06:27:20 itojun Exp $";
#endif

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <memory.h>

#include <sys/param.h>
#include <sys/time.h>
#include <sys/socket.h>

#include <net/if.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#include "interfac.h"
#include "a2name.h"
#include "dhcp6.h"
#include "dhcp6opt.h"

#ifdef USE_INET6

#if 0
  static void              dhcp6opttab_init   (void);
  static struct dhcp6_opt *dhcp6opttab_byname (char *);
#endif

static struct dhcp6_opt *dhcp6opttab_bycode (u_int);

static char tstr[] = " [|dhcp6]";

static struct dhcp6_opt dh6opttab[] = {
  /* IP Address Extension */
  { 1, OL6_N, "IP Address", OT6_NONE, },

  /* General Extension */
  { 2, 4, "Time Offset", OT6_NUM, },
  { 3, OL6_N, "IEEE 1003.1 POSIX Timezone", OT6_STR, },
  { 6, OL6_16N, "Domain Name Server", OT6_V6, },
  { 10, OL6_N, "Domain Name", OT6_STR, },

  /* Application and Service Parameters */
  { 16, OL6_N, "Directory Agent", OT6_NONE, },
  { 17, OL6_N, "Service Scope", OT6_NONE, },
  { 18, OL6_16N, "Network Time Protocol Servers", OT6_V6, },
  { 19, OL6_N, "NIS Domain", OT6_STR, },
  { 20, OL6_16N, "NIS Servers", OT6_V6, },
  { 21, OL6_N, "NIS+ Domain", OT6_STR, },
  { 22, OL6_16N, "NIS+ Servers", OT6_V6, },

  /* TCP Parameters */
  { 32, 4, "TCP Keepalive Interval", OT6_NUM, },

  /* DHCPv6 Extensions */
  { 40, 4, "Maximum DHCPv6 Message Size", OT6_NUM, },
  { 41, OL6_N, "DHCP Retransmission and Configuration Parameter", OT6_NONE, },
  { 48, OL6_N, "Platform Specific Information", OT6_NONE, },
  { 49, OL6_N, "Platform Class Identifier", OT6_STR, },
  { 64, OL6_N, "Class Identifier", OT6_STR, },
  { 66, 16, "Reconfigure Multicast Address", OT6_V6, },
  { 67, 16, "Renumber DHCPv6 Server Address", OT6_V6, },
  { 68, OL6_N, "DHCP Relay ICMP Error Message", OT6_NONE, },
  { 84, OL6_N, "Client-Server Authentication", OT6_NONE, },
  { 85, 4, "Client Key Selection", OT6_NUM, },

  /* End Extension */
  { 65536, OL6_Z, "End", OT6_NONE, },

  { 0 },
};

#if 0
static struct dhcp6_opt *dh6o_pad;
static struct dhcp6_opt *dh6o_end;

static void dhcp6opttab_init (void)
{
  dh6o_pad = dhcp6opttab_bycode (0);
  dh6o_end = dhcp6opttab_bycode (65536);
}

static struct dhcp6_opt *dhcp6opttab_byname (char *name)
{
  struct dhcp6_opt *p;

  for (p = dh6opttab; p->code; p++)
    if (!strcmp (name, p->name))
      return p;
  return NULL;
}
#endif

static struct dhcp6_opt *dhcp6opttab_bycode (u_int code)
{
  struct dhcp6_opt *p;

  for (p = dh6opttab; p->code; p++)
    if (p->code == code)
      return p;
  return NULL;
}

static void dhcp6ext_print (u_char * cp, u_char * ep)
{
  struct dhcp6_opt *p;
  u_int16_t code, len;
  char      buf[BUFSIZ];
  int       i;

  if (cp == ep)
     return;

  PUTCHAR (' ');
  while (cp < ep)
  {
    code = ntohs (*(u_int16_t *) & cp[0]);
    if (code != 65535)
      len = ntohs (*(u_int16_t *) & cp[2]);
    else
      len = 0;
    p = dhcp6opttab_bycode (code);
    if (p == NULL)
    {
      PRINTF ("(unknown, len=%d)", len);
      cp += len + 4;
      continue;
    }

    /* sanity check on length */
    switch (p->len)
    {
      case OL6_N:
           break;
      case OL6_16N:
           if (len % 16 != 0)
             goto trunc;
           break;
      case OL6_Z:
           if (len != 0)
             goto trunc;
           break;
      default:
           if (len != p->len)
             goto trunc;
           break;
    }
    if (cp + 4 + len > ep)
    {
      PRINTF ("[|%s]", p->name);
      return;
    }

    PRINTF ("(%s, ", p->name);
    switch (p->type)
    {
      case OT6_V6:
           for (i = 0; i < len; i += 16)
           {
             inet_ntop (AF_INET6, &cp[4 + i], buf, sizeof(buf));
             if (i != 0)
               PUTCHAR (',');
             PRINTF ("%s", buf);
           }
           break;
      case OT6_STR:
           memset (&buf, 0, sizeof(buf));
           strncpy (buf, &cp[4], len);
           PRINTF ("%s", buf);
           break;
      case OT6_NUM:
           PRINTF ("%d", (u_int32_t) ntohl (*(u_int32_t *) & cp[4]));
           break;
      default:
           for (i = 0; i < len; i++)
             PRINTF ("%02x", cp[4 + i] & 0xff);
    }
    PUTCHAR (')');
    cp += len + 4;
  }
  return;

trunc:
  PUTS ("[|dhcp6ext]");
}

/*
 * Print dhcp6 requests
 */
void dhcp6_print (const u_char * cp, u_int length, u_short sport, u_short dport)
{
  union dhcp6 *dh6;
  u_char      *ep;
  u_char      *extp;

  PUTS ("dhcp6");

  ep = (u_char *) snapend;

  dh6 = (union dhcp6 *) cp;
  TCHECK (dh6->dh6_msgtype);
  switch (dh6->dh6_msgtype)
  {
    case DH6_SOLICIT:
         if (vflag && TTEST (dh6->dh6_sol.dh6sol_relayaddr))
         {
           PUTS (" solicit(");
           if ((dh6->dh6_sol.dh6sol_flags & DH6SOL_CLOSE) != 0)
             PUTCHAR ('C');
           if (dh6->dh6_sol.dh6sol_flags != 0)
             PUTCHAR (' ');
           PRINTF ("cliaddr=%s", ip6addr_string (&dh6->dh6_sol.dh6sol_cliaddr));
           PRINTF (" relayaddr=%s", ip6addr_string (&dh6->dh6_sol.dh6sol_relayaddr));
           PUTCHAR (')');
         }
         else
           PUTS (" solicit");
         break;

    case DH6_ADVERT:
         if (!(vflag && TTEST (dh6->dh6_adv.dh6adv_serveraddr)))
         {
           PUTS (" advert");
           break;
         }
         PUTS (" advert(");
         if ((dh6->dh6_adv.dh6adv_flags & DH6ADV_SERVPRESENT) != 0)
           PUTCHAR ('S');
         if (dh6->dh6_adv.dh6adv_flags != 0)
           PUTCHAR (' ');
         PRINTF ("pref=%u", dh6->dh6_adv.dh6adv_pref);
         PRINTF (" cliaddr=%s", ip6addr_string (&dh6->dh6_adv.dh6adv_cliaddr));
         PRINTF (" relayaddr=%s", ip6addr_string (&dh6->dh6_adv.dh6adv_relayaddr));
         PRINTF (" servaddr=%s", ip6addr_string (&dh6->dh6_adv.dh6adv_serveraddr));
         extp = (u_char *) ((&dh6->dh6_adv) + 1);
         dhcp6ext_print (extp, ep);
         PUTCHAR (')');
         break;

    case DH6_REQUEST:
         if (!(vflag && TTEST (dh6->dh6_req.dh6req_relayaddr)))
         {
           PUTS (" request");
           break;
         }
         PUTS (" request(");
         if ((dh6->dh6_req.dh6req_flags & DH6REQ_CLOSE) != 0)
           PUTCHAR ('C');
         if ((dh6->dh6_req.dh6req_flags & DH6REQ_SERVPRESENT) != 0)
           PUTS ("S");
         if ((dh6->dh6_req.dh6req_flags & DH6REQ_REBOOT) != 0)
           PUTCHAR ('R');
         if (dh6->dh6_req.dh6req_flags != 0)
           PUTCHAR (' ');
         PRINTF ("xid=0x%04x", dh6->dh6_req.dh6req_xid);
         PRINTF (" cliaddr=%s", ip6addr_string (&dh6->dh6_req.dh6req_cliaddr));
         PRINTF (" relayaddr=%s", ip6addr_string (&dh6->dh6_req.dh6req_relayaddr));
         extp = (char *) ((&dh6->dh6_req) + 1);
         if ((dh6->dh6_req.dh6req_flags & DH6REQ_SERVPRESENT) != 0)
         {
           PRINTF (" servaddr=%s", ip6addr_string (extp));
           extp += 16;
         }
         dhcp6ext_print (extp, ep);
         PUTCHAR (')');
         break;

    case DH6_REPLY:
         if (!(vflag && TTEST (dh6->dh6_rep.dh6rep_xid)))
         {
           PUTS (" reply");
           break;
         }
         PUTS (" reply(");
         if ((dh6->dh6_rep.dh6rep_flagandstat & DH6REP_CLIPRESENT) != 0)
           PUTCHAR ('C');
         if (dh6->dh6_rep.dh6rep_flagandstat != 0)
           PUTCHAR (' ');
         PRINTF ("stat=0x%02x", dh6->dh6_rep.dh6rep_flagandstat & DH6REP_STATMASK);
         extp = (u_char *) ((&dh6->dh6_rep) + 1);
         if ((dh6->dh6_rep.dh6rep_flagandstat & DH6REP_CLIPRESENT) != 0)
         {
           PRINTF (" cliaddr=%s", ip6addr_string (extp));
           extp += 16;
         }
         dhcp6ext_print (extp, ep);
         PUTCHAR (')');
         break;

    case DH6_RELEASE:
         PUTS (" release");
         break;

    case DH6_RECONFIG:
         PUTS (" reconfig");
         break;
  }
  return;

trunc:
  PRINTF ("%s", tstr);
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品99一区二区三区| 水蜜桃久久夜色精品一区的特点| 亚洲免费在线视频| 精久久久久久久久久久| 色综合色狠狠综合色| 久久久精品免费观看| 婷婷开心激情综合| www.亚洲激情.com| 久久亚区不卡日本| 不卡视频一二三四| 欧美一区二区三区小说| 亚洲精品一二三| 国模一区二区三区白浆| 制服.丝袜.亚洲.另类.中文| 成人免费一区二区三区在线观看| 久久99热99| 欧美日韩成人在线一区| 亚洲激情第一区| jizz一区二区| 中文幕一区二区三区久久蜜桃| 美女视频黄频大全不卡视频在线播放| 在线精品国精品国产尤物884a| 中文字幕第一区综合| 精品亚洲欧美一区| 日韩精品一区在线观看| 日本不卡1234视频| 欧美一区日本一区韩国一区| 亚洲成人精品一区| 91国偷自产一区二区开放时间| 中文字幕一区二区5566日韩| 床上的激情91.| 久久久噜噜噜久久人人看| 另类小说一区二区三区| 欧美一卡二卡在线| 麻豆国产欧美日韩综合精品二区| 欧美日韩高清在线| 视频一区中文字幕国产| 91精品国产综合久久久久| 日本一区中文字幕| 日韩精品一区二区三区蜜臀| 另类欧美日韩国产在线| 欧美变态口味重另类| 国产一区二区电影| 欧美激情综合五月色丁香小说| 成人午夜视频免费看| 亚洲欧洲精品一区二区三区不卡| 91麻豆蜜桃一区二区三区| 亚洲一区在线观看免费| 欧美日韩电影在线播放| 亚洲国产精品一区二区www在线| 日本乱人伦aⅴ精品| 五月激情综合婷婷| 欧美一级二级在线观看| 韩国一区二区视频| 国产精品久久久久永久免费观看| 色哟哟日韩精品| 天堂av在线一区| 久久久精品黄色| 91天堂素人约啪| 日韩中文字幕1| 久久午夜老司机| 色偷偷88欧美精品久久久| 亚洲成人精品一区| 久久久久久久电影| 欧洲一区二区av| 加勒比av一区二区| 亚洲精品你懂的| 日韩女同互慰一区二区| 99综合影院在线| 日本视频中文字幕一区二区三区| 国产色婷婷亚洲99精品小说| 色偷偷成人一区二区三区91| 免费人成精品欧美精品| 日产国产欧美视频一区精品| 国产日韩视频一区二区三区| 欧美亚洲综合一区| 国产成人在线网站| 亚洲影院在线观看| 国产三级欧美三级日产三级99| 91国在线观看| 国产福利一区二区三区视频 | 亚洲少妇30p| 欧美一区二区三区不卡| 91啪亚洲精品| 国产乱一区二区| 亚洲大尺度视频在线观看| 国产欧美精品一区二区三区四区| 欧美日韩在线播放三区| jlzzjlzz亚洲女人18| 国产精品亚洲第一区在线暖暖韩国 | 日本高清成人免费播放| 国产一区二区在线电影| 日韩高清不卡一区| 亚洲一区二区三区四区在线| 国产亚洲欧美色| 日韩欧美你懂的| 欧美日韩亚洲国产综合| 91视频91自| 国产91丝袜在线播放0| 美国十次了思思久久精品导航| 亚洲午夜精品在线| 亚洲免费电影在线| 国产精品久久久久9999吃药| 国产亚洲一区二区三区四区| 日韩一级大片在线观看| 国产精品久久久久久亚洲毛片| 日韩一区二区三区视频在线| 欧美日韩综合不卡| 91久久奴性调教| 色婷婷av一区| 色偷偷88欧美精品久久久| 91污片在线观看| 99re这里只有精品首页| 99免费精品在线| 99精品欧美一区二区蜜桃免费 | 日韩 欧美一区二区三区| 亚洲高清免费在线| 天天操天天干天天综合网| 亚洲成人综合在线| 亚洲国产日韩a在线播放性色| 一区二区三区在线视频免费| 亚洲三级视频在线观看| 亚洲黄色小视频| 一区二区三区欧美| 亚洲一二三四区不卡| 图片区小说区国产精品视频| 天天综合天天综合色| 日韩综合小视频| 九九在线精品视频| 国产成人午夜精品影院观看视频| 丁香桃色午夜亚洲一区二区三区 | 欧美aⅴ一区二区三区视频| 日本aⅴ免费视频一区二区三区| 蜜臀av在线播放一区二区三区| 美女诱惑一区二区| 国产·精品毛片| 91在线一区二区| 欧美精品在线观看播放| 欧美大片在线观看一区| 国产精品色哟哟| 亚洲综合激情另类小说区| 日韩黄色免费电影| 国产精品香蕉一区二区三区| 成人99免费视频| 欧美影院一区二区| 9191久久久久久久久久久| 欧美成人三级电影在线| 中文字幕中文字幕一区二区| 亚洲伊人伊色伊影伊综合网| 久久精品国产99国产精品| 成人精品电影在线观看| 欧美日韩视频在线一区二区| 2020国产精品| 亚洲精品成人天堂一二三| 热久久国产精品| 99国产精品国产精品久久| 日韩欧美亚洲另类制服综合在线| 国产精品久久久久影院色老大| 天堂成人国产精品一区| 成人午夜激情视频| 5566中文字幕一区二区电影| 亚洲国产成人在线| 日本欧美韩国一区三区| 99re免费视频精品全部| 精品国产制服丝袜高跟| 亚洲欧美国产高清| 国产精品一区二区三区99| 欧美三级日韩三级| 国产精品麻豆99久久久久久| 轻轻草成人在线| 91福利在线播放| 国产欧美精品在线观看| 蜜臀av一级做a爰片久久| 色欧美88888久久久久久影院| 精品国产露脸精彩对白| 亚洲电影你懂得| 色综合天天综合网国产成人综合天| 精品国产1区2区3区| 午夜av一区二区三区| 色欧美日韩亚洲| 亚洲天堂久久久久久久| 国产激情精品久久久第一区二区| 91精品国产免费| 亚洲成人精品一区二区| 在线观看视频91| 亚洲免费av观看| av电影天堂一区二区在线观看| 精品国产制服丝袜高跟| 蜜臀久久99精品久久久久久9| 欧美三级三级三级爽爽爽| 亚洲激情图片一区| 日本韩国精品一区二区在线观看| 国产精品国产三级国产aⅴ无密码| 精品亚洲aⅴ乱码一区二区三区| 日韩一级片网站| 日本欧美久久久久免费播放网| 91麻豆精品国产综合久久久久久| 亚洲国产一区二区a毛片| 精品视频1区2区| 污片在线观看一区二区|