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

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

?? icmp.c

?? 包含lwip這個精簡IP協議棧的ucos源代碼.
?? C
字號:
/* * 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 <string.h>#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"voidicmp_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);}voidicmp_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_FORWARDvoidicmp_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 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美国欧美日韩国产在线播放| 一区二区三区中文免费| 欧美日韩一区小说| 91女神在线视频| 国产成人av一区二区三区在线 | 国产精品99久久久久久似苏梦涵 | 国产亚洲欧洲997久久综合| 日韩一级二级三级| 精品国产乱码久久久久久闺蜜| 91麻豆精品国产91久久久使用方法 | 国产精品久久国产精麻豆99网站 | av中文字幕不卡| 99精品欧美一区| 在线亚洲免费视频| 欧美一区二区三区在线观看| 在线视频欧美精品| 欧美精品丝袜久久久中文字幕| 91精品国产综合久久香蕉的特点| 777奇米成人网| 国产午夜精品久久久久久久| 国产午夜精品久久久久久久| 国产精品护士白丝一区av| 亚洲自拍另类综合| 麻豆91精品91久久久的内涵| 国产不卡高清在线观看视频| 94-欧美-setu| 在线观看91av| 国产精品伦一区二区三级视频| 亚洲免费观看在线视频| 日本女人一区二区三区| 国产一区二区三区免费播放| 91香蕉视频mp4| 欧美mv日韩mv国产网站app| 中文字幕精品三区| 日韩国产欧美三级| 成人小视频免费在线观看| 欧美日韩一区二区三区四区 | 91啪在线观看| 精品三级在线看| 亚洲免费三区一区二区| 精品一区二区三区的国产在线播放| 国产成人亚洲综合a∨婷婷图片| 欧美在线观看18| 久久久久久久久岛国免费| 伊人婷婷欧美激情| 国产aⅴ综合色| 精品日韩一区二区| 一区二区三区 在线观看视频| 国产一区二区毛片| 91精品欧美久久久久久动漫 | 国产在线观看一区二区| 91久久久免费一区二区| 国产午夜亚洲精品午夜鲁丝片| 婷婷激情综合网| 在线免费观看日韩欧美| 亚洲国产高清在线| 韩国视频一区二区| 91精品国产一区二区| 亚洲精品免费看| 成人午夜激情影院| 国产欧美视频在线观看| 久久国产夜色精品鲁鲁99| 欧美人牲a欧美精品| 亚洲免费观看高清完整版在线观看| 国产麻豆91精品| 欧美r级在线观看| 欧美aⅴ一区二区三区视频| 欧美色网站导航| 一区二区三区在线观看网站| 9色porny自拍视频一区二区| 2020国产精品| 韩国精品主播一区二区在线观看| 91精品福利在线一区二区三区| 亚洲综合激情另类小说区| 一本一道久久a久久精品| 亚洲人精品午夜| 91蝌蚪porny| 亚洲精品乱码久久久久久 | 日韩经典中文字幕一区| 欧美午夜精品理论片a级按摩| 亚洲欧美一区二区三区极速播放| av高清不卡在线| 亚洲欧洲综合另类| 欧美日韩成人激情| 久久99精品久久久久久动态图| 日韩欧美国产精品一区| 久久97超碰国产精品超碰| 亚洲精品一区在线观看| 国产一区二区三区四| 国产精品久久久久毛片软件| 波多野洁衣一区| 一区二区久久久| 91精品国产色综合久久久蜜香臀| 秋霞国产午夜精品免费视频| 久久中文娱乐网| 91丨国产丨九色丨pron| 亚洲一区二区三区三| 91麻豆精品国产自产在线| 狠狠色综合色综合网络| 亚洲欧洲美洲综合色网| 欧美三级韩国三级日本一级| 日本美女一区二区三区视频| 久久在线免费观看| 91热门视频在线观看| 日韩国产一二三区| 国产欧美日韩亚州综合| 欧美日韩中文一区| 国产精品一区二区在线观看不卡 | 日韩精品免费视频人成| 精品国产网站在线观看| 91在线视频18| 看电影不卡的网站| 亚洲人成影院在线观看| 精品对白一区国产伦| 色综合久久综合| 国产成人在线网站| 爽好多水快深点欧美视频| 日本一区二区三区国色天香 | 激情综合色播激情啊| 亚洲视频小说图片| 精品欧美一区二区三区精品久久 | 久久男人中文字幕资源站| 91视频一区二区| 激情五月婷婷综合| 亚洲成a人v欧美综合天堂| 9i看片成人免费高清| 另类小说一区二区三区| 一区二区在线免费观看| 国产欧美日本一区视频| 精品国免费一区二区三区| 欧美日韩免费一区二区三区视频| 国产激情偷乱视频一区二区三区| 亚洲第一精品在线| 亚洲综合激情另类小说区| 国产精品久久久久久久久久久免费看 | 666欧美在线视频| 91一区二区在线| 成人精品电影在线观看| 国精产品一区一区三区mba视频 | 综合久久综合久久| 国产偷v国产偷v亚洲高清| 欧美大尺度电影在线| 欧美日本一道本| 欧美人牲a欧美精品| 在线观看视频欧美| 色欧美乱欧美15图片| 99久久久精品| 成人av电影在线观看| 懂色av中文字幕一区二区三区| 美女mm1313爽爽久久久蜜臀| 日韩av一级片| 久久国产精品99久久久久久老狼| 婷婷丁香久久五月婷婷| 石原莉奈一区二区三区在线观看| 中文字幕一区免费在线观看 | 欧美疯狂性受xxxxx喷水图片| 在线免费观看一区| 欧美日韩视频在线第一区| 色老头久久综合| 欧美日韩在线不卡| 欧美日韩1区2区| 欧美mv和日韩mv国产网站| www国产精品av| 欧美国产视频在线| 亚洲免费av高清| 日日摸夜夜添夜夜添精品视频| 午夜精品成人在线| 激情图片小说一区| 成人av在线资源网| 色网站国产精品| 91精品国产色综合久久不卡电影 | 国产精品电影一区二区三区| 国产精品久久久久久亚洲毛片| 亚洲免费观看在线视频| 亚洲一区在线观看免费 | 色激情天天射综合网| 欧美性极品少妇| 精品国产精品一区二区夜夜嗨| 国产视频一区在线观看| 亚洲女人小视频在线观看| 日本三级韩国三级欧美三级| 国产一区二三区好的| 91丨porny丨中文| 日韩欧美一级二级三级| 中文字幕第一区二区| 丝袜美腿亚洲综合| 粉嫩av亚洲一区二区图片| 欧美亚洲一区二区在线观看| 精品捆绑美女sm三区| 亚洲欧美日韩成人高清在线一区| 日韩精品1区2区3区| 不卡的av中国片| 日韩午夜在线播放| 一区二区三区在线观看视频| 另类成人小视频在线| 成人性生交大片免费看中文| 欧美电影一区二区| 亚洲男人天堂av网| 丁香网亚洲国际| 欧美一级二级三级乱码|