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

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

?? icmp.c

?? ARM7的一些試驗(yàn)程序
?? C
字號(hào):
/*
 * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
 * 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. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
 *
 * This file is part of the lwIP TCP/IP stack.
 *
 * Author: Adam Dunkels <adam@sics.se>
 *
 */

/* Some ICMP messages should be passed to the transport protocols. This
   is not implemented. */

#include "lwip/opt.h"

#include "lwip/icmp.h"
#include "lwip/inet.h"
#include "lwip/ip.h"
#include "lwip/def.h"

#include "lwip/stats.h"

#include "lwip/snmp.h"

void
icmp_input(struct pbuf *p, struct netif *inp)
{
  unsigned char type;
  unsigned char code;
  struct icmp_echo_hdr *iecho;
  struct ip_hdr *iphdr;
  struct ip_addr tmpaddr;
  u16_t hlen;

  ICMP_STATS_INC(icmp.recv);
  snmp_inc_icmpinmsgs();


  iphdr = p->payload;
  hlen = IPH_HL(iphdr) * 4;
  if (pbuf_header(p, -((s16_t)hlen)) || (p->tot_len < sizeof(u16_t)*2)) {
    LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: short ICMP (%u bytes) received\n", p->tot_len));
    pbuf_free(p);
    ICMP_STATS_INC(icmp.lenerr);
    snmp_inc_icmpinerrors();
    return;
  }

  type = *((u8_t *)p->payload);
  code = *(((u8_t *)p->payload)+1);
  switch (type) {
  case ICMP_ECHO:
    /* broadcast or multicast destination address? */
    if (ip_addr_isbroadcast(&iphdr->dest, inp) || ip_addr_ismulticast(&iphdr->dest)) {
      LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: Not echoing to multicast or broadcast pings\n"));
      ICMP_STATS_INC(icmp.err);
      pbuf_free(p);
      return;
    }
    LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ping\n"));
    if (p->tot_len < sizeof(struct icmp_echo_hdr)) {
      LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: bad ICMP echo received\n"));
      pbuf_free(p);
      ICMP_STATS_INC(icmp.lenerr);
      snmp_inc_icmpinerrors();

      return;
    }
    iecho = p->payload;
    if (inet_chksum_pbuf(p) != 0) {
      LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: checksum failed for received ICMP echo\n"));
      pbuf_free(p);
      ICMP_STATS_INC(icmp.chkerr);
      snmp_inc_icmpinerrors();
      return;
    }
    tmpaddr.addr = iphdr->src.addr;
    iphdr->src.addr = iphdr->dest.addr;
    iphdr->dest.addr = tmpaddr.addr;
    ICMPH_TYPE_SET(iecho, ICMP_ER);
    /* adjust the checksum */
    if (iecho->chksum >= htons(0xffff - (ICMP_ECHO << 8))) {
      iecho->chksum += htons(ICMP_ECHO << 8) + 1;
    } else {
      iecho->chksum += htons(ICMP_ECHO << 8);
    }
    ICMP_STATS_INC(icmp.xmit);
    /* increase number of messages attempted to send */
    snmp_inc_icmpoutmsgs();
    /* increase number of echo replies attempted to send */
    snmp_inc_icmpoutechoreps();

    pbuf_header(p, hlen);
    ip_output_if(p, &(iphdr->src), IP_HDRINCL,
		 IPH_TTL(iphdr), 0, IP_PROTO_ICMP, inp);
    break;
  default:
  LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ICMP type %d code %d not supported.\n", (int)type, (int)code));
    ICMP_STATS_INC(icmp.proterr);
    ICMP_STATS_INC(icmp.drop);
  }
  pbuf_free(p);
}

void
icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t)
{
  struct pbuf *q;
  struct ip_hdr *iphdr;
  struct icmp_dur_hdr *idur;

  q = pbuf_alloc(PBUF_IP, 8 + IP_HLEN + 8, PBUF_RAM);
  /* ICMP header + IP header + 8 bytes of data */

  iphdr = p->payload;

  idur = q->payload;
  ICMPH_TYPE_SET(idur, ICMP_DUR);
  ICMPH_CODE_SET(idur, t);

  memcpy((char *)q->payload + 8, p->payload, IP_HLEN + 8);

  /* calculate checksum */
  idur->chksum = 0;
  idur->chksum = inet_chksum(idur, q->len);
  ICMP_STATS_INC(icmp.xmit);
  /* increase number of messages attempted to send */
  snmp_inc_icmpoutmsgs();
  /* increase number of destination unreachable messages attempted to send */
  snmp_inc_icmpoutdestunreachs();

  ip_output(q, NULL, &(iphdr->src),
	    ICMP_TTL, 0, IP_PROTO_ICMP);
  pbuf_free(q);
}

#if IP_FORWARD
void
icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t)
{
  struct pbuf *q;
  struct ip_hdr *iphdr;
  struct icmp_te_hdr *tehdr;

  q = pbuf_alloc(PBUF_IP, 8 + IP_HLEN + 8, PBUF_RAM);

  iphdr = p->payload;
  LWIP_DEBUGF(ICMP_DEBUG, ("icmp_time_exceeded from "));
  ip_addr_debug_print(ICMP_DEBUG, &(iphdr->src));
  LWIP_DEBUGF(ICMP_DEBUG, (" to "));
  ip_addr_debug_print(ICMP_DEBUG, &(iphdr->dest));
  LWIP_DEBUGF(ICMP_DEBUG, ("\n"));

  tehdr = q->payload;
  ICMPH_TYPE_SET(tehdr, ICMP_TE);
  ICMPH_CODE_SET(tehdr, t);

  /* copy fields from original packet */
  memcpy((char *)q->payload + 8, (char *)p->payload, IP_HLEN + 8);

  /* calculate checksum */
  tehdr->chksum = 0;
  tehdr->chksum = inet_chksum(tehdr, q->len);
  ICMP_STATS_INC(icmp.xmit);
  /* increase number of messages attempted to send */
  snmp_inc_icmpoutmsgs();
  /* increase number of destination unreachable messages attempted to send */
  snmp_inc_icmpouttimeexcds();
  ip_output(q, NULL, &(iphdr->src),
	    ICMP_TTL, 0, IP_PROTO_ICMP);
  pbuf_free(q);
}

#endif /* IP_FORWARD */







?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品全国免费观看高清| 一区二区日韩av| 欧美三级电影在线看| 国产激情一区二区三区桃花岛亚洲| 一区二区免费看| 国产精品美女一区二区在线观看| 欧美老女人在线| 99九九99九九九视频精品| 久久99热这里只有精品| 一区二区在线免费| 日韩中文字幕麻豆| 亚洲激情网站免费观看| 日本一区二区三区电影| 亚洲精品在线电影| 91精品婷婷国产综合久久性色| 91美女片黄在线观看91美女| 国产乱码精品1区2区3区| 日韩精品成人一区二区三区| 亚洲老司机在线| 日韩一区在线播放| 中文字幕第一区第二区| 久久免费视频色| 26uuu另类欧美| 日韩手机在线导航| 欧美一区二区成人| 欧美电影在线免费观看| 在线观看视频一区二区| 色哟哟在线观看一区二区三区| 成人美女视频在线观看18| 国内精品在线播放| 精品一区二区三区在线播放| 免费高清在线视频一区·| 视频一区在线视频| 亚洲成人福利片| 丝袜亚洲精品中文字幕一区| 首页国产欧美久久| 日韩主播视频在线| 日韩一区欧美二区| 乱一区二区av| 国产一区二区三区精品欧美日韩一区二区三区 | 国内精品视频666| 日韩高清在线不卡| 日本欧美一区二区三区| 免费看日韩精品| 韩日av一区二区| 国产一区二区三区国产| 国产福利一区二区三区在线视频| 国产一区二区看久久| 国产精品18久久久久久vr| 国产电影一区在线| 成人精品视频网站| 一本一道综合狠狠老| 欧美性生交片4| 5566中文字幕一区二区电影| 欧美一区二区美女| 精品福利av导航| 国产精品久久久久天堂| 亚洲男帅同性gay1069| 亚洲综合在线视频| 午夜精品久久久久| 看电视剧不卡顿的网站| 福利一区在线观看| 色综合天天做天天爱| 欧美美女激情18p| 久久一二三国产| 中文字幕综合网| 天天色天天操综合| 国产精品资源网| 色婷婷香蕉在线一区二区| 欧美一区在线视频| 日本一区二区三区dvd视频在线| 亚洲视频一区在线| 日本视频中文字幕一区二区三区 | 91黄色免费观看| 欧美大片在线观看| 国产精品女主播av| 亚州成人在线电影| 国产成人精品免费| 欧美色老头old∨ideo| 亚洲大片精品永久免费| 激情综合亚洲精品| 91久久线看在观草草青青| 日韩免费在线观看| 亚洲制服欧美中文字幕中文字幕| 久久99国产精品久久| 99久久国产综合精品麻豆| 91精品国产综合久久久久久久| 国产日韩精品一区| 日韩福利电影在线| 91麻豆免费在线观看| 日韩精品影音先锋| 亚洲精品成a人| 国产成人av资源| 欧美肥妇毛茸茸| 亚洲人成精品久久久久久| 美国欧美日韩国产在线播放| 91污在线观看| 国产欧美日韩亚州综合| 麻豆精品久久久| 欧美日韩免费视频| 亚洲人成7777| 成人不卡免费av| 精品剧情在线观看| 日本最新不卡在线| 91搞黄在线观看| 国产精品福利一区二区| 国产最新精品免费| 555夜色666亚洲国产免| 亚洲一二三四在线| av中文字幕不卡| 国产农村妇女毛片精品久久麻豆 | 色婷婷综合久久| 国产精品丝袜一区| 国产精品一区在线观看你懂的| 正在播放亚洲一区| 亚洲国产美女搞黄色| a级高清视频欧美日韩| 欧美激情在线看| 国产成人亚洲精品狼色在线| 日韩一级免费一区| 一本色道久久加勒比精品| 国产精品久久久久桃色tv| 国产精品88888| 久久久精品2019中文字幕之3| 麻豆成人免费电影| 欧美一卡在线观看| 首页欧美精品中文字幕| 欧美精品久久99久久在免费线 | 欧美日韩成人综合在线一区二区| 亚洲免费在线视频一区 二区| 丁香婷婷综合网| 国产精品欧美一级免费| av中文字幕一区| 亚洲视频1区2区| 色菇凉天天综合网| 一区二区久久久| 欧美色电影在线| 亚洲第四色夜色| 日韩一区和二区| 韩国女主播一区| 中文字幕精品三区| 99久久久精品| 亚洲一区二三区| 欧美日韩黄色一区二区| 亚洲高清免费视频| 日韩欧美久久久| 国产美女视频91| 国产精品久久久久9999吃药| 99久久精品久久久久久清纯| 国产精品青草综合久久久久99| 99精品视频中文字幕| 亚洲国产日韩一级| 日韩三级中文字幕| 国产精品一区专区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| av成人动漫在线观看| 亚洲二区视频在线| 欧美r级在线观看| 国产ts人妖一区二区| 亚洲一区二区三区激情| 欧美一区二区三区视频免费 | 国产91色综合久久免费分享| 国产精品美女久久久久aⅴ | 久久精品国产一区二区三区免费看| 91麻豆精品国产91久久久久久久久 | 日韩欧美电影一区| 国产精品 日产精品 欧美精品| 国产精品护士白丝一区av| 欧美午夜精品免费| 韩国成人福利片在线播放| 亚洲欧美激情小说另类| 欧美日本国产视频| 福利91精品一区二区三区| 一区二区三区四区不卡视频| 欧美成人三级在线| 成人av资源在线| 免费一级欧美片在线观看| 欧美韩日一区二区三区| 欧美日本不卡视频| 国产成人精品aa毛片| 午夜欧美2019年伦理| 国产精品素人视频| 日韩三级视频在线看| 日本精品免费观看高清观看| 激情综合一区二区三区| 夜夜亚洲天天久久| 久久香蕉国产线看观看99| 欧美三级韩国三级日本一级| 国产精品18久久久久久久久| 天天综合天天综合色| 国产精品三级av在线播放| 欧美一区二区在线免费播放| 99精品在线免费| 国产高清久久久久| 婷婷国产v国产偷v亚洲高清| 亚洲人123区| 日本一区二区三级电影在线观看 | 秋霞影院一区二区| 一区二区三区四区蜜桃| 欧美国产欧美亚州国产日韩mv天天看完整 |