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

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

?? inet.c

?? 一個輕量tcpip協議在移植在ucOS2系統上運行
?? C
字號:
/*
 * Copyright (c) 2001-2003 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>
 *
 */

/*-----------------------------------------------------------------------------------*/
/* inet.c
 *
 * Functions common to all TCP/IP modules, such as the Internet checksum and the
 * byte order functions.
 *
 */
/*-----------------------------------------------------------------------------------*/

#include "lwip/opt.h"

#include "lwip/arch.h"

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


/*-----------------------------------------------------------------------------------*/
static u16_t
lwip_chksum(void *dataptr, int len)
{
  u32_t acc;
    
  DEBUGF(INET_DEBUG, ("lwip_chksum(%p, %d)\n", dataptr, len));
  for(acc = 0; len > 1; len -= 2) {
      /*    acc = acc + *((u16_t *)dataptr)++;*/
    acc += *(u16_t *)dataptr;
    dataptr = (void *)((u16_t *)dataptr + 1);
  }

  /* add up any odd byte */
  if(len == 1) {
    acc += htons((u16_t)((*(u8_t *)dataptr) & 0xff) << 8);
    DEBUGF(INET_DEBUG, ("inet: chksum: odd byte %d\n", *(u8_t *)dataptr));
  } else {
    DEBUGF(INET_DEBUG, ("inet: chksum: no odd byte\n"));
  }
  acc = (acc >> 16) + (acc & 0xffffUL);

  if((acc & 0xffff0000) != 0) {
    acc = (acc >> 16) + (acc & 0xffffUL);
  }

  return (u16_t)acc;
}
/*-----------------------------------------------------------------------------------*/
/* inet_chksum_pseudo:
 *
 * Calculates the pseudo Internet checksum used by TCP and UDP for a pbuf chain.
 */
/*-----------------------------------------------------------------------------------*/
u16_t
inet_chksum_pseudo(struct pbuf *p,
		   struct ip_addr *src, struct ip_addr *dest,
		   u8_t proto, u16_t proto_len)
{
  u32_t acc;
  struct pbuf *q;
  u8_t swapped;

  acc = 0;
  swapped = 0;
  /* iterate through all pbuf in chain */
  for(q = p; q != NULL; q = q->next) {    
    DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): checksumming pbuf %p (has next %p) \n", (void *) q, (void *)q->next));
    acc += lwip_chksum(q->payload, q->len);
    /*DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): unwrapped lwip_chksum()=%lx \n", acc));*/
    while(acc >> 16) {
      acc = (acc & 0xffffUL) + (acc >> 16);
    }
    if(q->len % 2 != 0) {
      swapped = 1 - swapped;
      acc = ((acc & 0xff) << 8) | ((acc & 0xff00UL) >> 8);
    }
    /*DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%lx \n", acc));*/
  }

  if(swapped) {
    acc = ((acc & 0xff) << 8) | ((acc & 0xff00UL) >> 8);
  }
  acc += (src->addr & 0xffffUL);
  acc += ((src->addr >> 16) & 0xffffUL);
  acc += (dest->addr & 0xffffUL);
  acc += ((dest->addr >> 16) & 0xffffUL);
  acc += (u32_t)htons((u16_t)proto);
  acc += (u32_t)htons(proto_len);  
  
  while(acc >> 16) {
    acc = (acc & 0xffffUL) + (acc >> 16);
  }    
  DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): pbuf chain lwip_chksum()=%lx\n", acc));
  return ~(acc & 0xffffUL);
}
/*-----------------------------------------------------------------------------------*/
/* inet_chksum:
 *
 * Calculates the Internet checksum over a portion of memory. Used primarely for IP
 * and ICMP.
 */
/*-----------------------------------------------------------------------------------*/
u16_t
inet_chksum(void *dataptr, u16_t len)
{
  u32_t acc;

  acc = lwip_chksum(dataptr, len);
  while(acc >> 16) {
    acc = (acc & 0xffff) + (acc >> 16);
  }    
  return ~(acc & 0xffff);
}
/*-----------------------------------------------------------------------------------*/
u16_t
inet_chksum_pbuf(struct pbuf *p)
{
  u32_t acc;
  struct pbuf *q;
  u8_t swapped;
  
  acc = 0;
  swapped = 0;
  for(q = p; q != NULL; q = q->next) {
    acc += lwip_chksum(q->payload, q->len);
    while(acc >> 16) {
      acc = (acc & 0xffffUL) + (acc >> 16);
    }    
    if(q->len % 2 != 0) {
      swapped = 1 - swapped;
      acc = (acc & 0x00ffUL << 8) | (acc & 0xff00UL >> 8);
    }
  }
 
  if(swapped) {
    acc = ((acc & 0x00ffUL) << 8) | ((acc & 0xff00UL) >> 8);
  }
  return ~(acc & 0xffffUL);
}

#ifndef BYTE_ORDER
#error BYTE_ORDER is not defined
#endif
#if BYTE_ORDER == LITTLE_ENDIAN
/*-----------------------------------------------------------------------------------*/
u16_t
htons(u16_t n)
{
  return ((n & 0xff) << 8) | ((n & 0xff00) >> 8);
}
/*-----------------------------------------------------------------------------------*/
u16_t
ntohs(u16_t n)
{
  return htons(n);
}
/*-----------------------------------------------------------------------------------*/
u32_t
htonl(u32_t n)
{
  return ((n & 0xff) << 24) |
    ((n & 0xff00) << 8) |
    ((n & 0xff0000) >> 8) |
    ((n & 0xff000000) >> 24);
}
/*-----------------------------------------------------------------------------------*/
u32_t
ntohl(u32_t n)
{
  return htonl(n);
}
/*-----------------------------------------------------------------------------------*/
#endif /* BYTE_ORDER == LITTLE_ENDIAN */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合久久久| 国内不卡的二区三区中文字幕| 欧美精品在线观看播放| 在线视频一区二区免费| 欧美色图免费看| 欧美亚洲图片小说| 欧美丰满美乳xxx高潮www| 欧美日韩综合色| 欧美乱熟臀69xxxxxx| 欧美成人性福生活免费看| 精品日韩在线一区| 国产精品视频免费看| 亚洲另类一区二区| 日本欧美在线看| 国产精品性做久久久久久| 成人黄色软件下载| 欧美日韩亚洲综合在线| 欧美一级高清片在线观看| 国产色一区二区| 一区在线中文字幕| 亚洲福利一二三区| 国产伦精品一区二区三区在线观看 | 亚洲同性同志一二三专区| 国产精品久99| 日韩高清不卡在线| 成人国产精品免费网站| 日本乱人伦aⅴ精品| 日韩美女视频一区| 亚洲bdsm女犯bdsm网站| 久久99精品国产91久久来源| 99久久精品情趣| 日韩午夜小视频| 亚洲女同一区二区| 国产美女主播视频一区| 欧美日韩一区久久| wwww国产精品欧美| 日韩精彩视频在线观看| 成人在线综合网站| 欧美成人精品高清在线播放| 亚洲欧美日韩一区| 国产一区二区三区视频在线播放| 欧美羞羞免费网站| 国产欧美精品一区二区色综合 | 国产精品美女久久久久久久| 午夜精品久久久久久| 成人国产精品免费观看视频| 日韩午夜av一区| 亚洲一区在线观看网站| 成人中文字幕合集| 久久综合久久综合亚洲| 视频在线观看国产精品| 一本大道久久a久久综合婷婷| 欧美mv和日韩mv的网站| 亚洲国产成人av| 99精品1区2区| 中文字幕一区二区三区乱码在线| 麻豆一区二区三区| 91麻豆精品国产综合久久久久久| 亚洲精品中文字幕乱码三区| 国产精品99久久久久久似苏梦涵| 日韩午夜av一区| 免费高清在线一区| 91精品国产综合久久福利软件| 亚洲综合图片区| 日本高清不卡在线观看| 亚洲视频一区二区免费在线观看| 国产成人综合在线播放| 久久亚洲二区三区| 国产在线麻豆精品观看| 精品国一区二区三区| 麻豆91在线观看| 精品动漫一区二区三区在线观看| 免费看欧美美女黄的网站| 日韩午夜在线观看视频| 久久国产精品99精品国产| 欧美一区三区四区| 美女高潮久久久| 久久亚洲影视婷婷| 成人免费精品视频| 亚洲精品乱码久久久久久久久| 日本韩国一区二区三区视频| 一区二区三区四区不卡视频| 在线观看av不卡| 亚洲第一久久影院| 日韩精品一区二区三区中文精品| 久久99精品久久久| 久久综合视频网| 国产精品123区| 中文字幕二三区不卡| 91啪亚洲精品| 丝袜美腿亚洲一区| 国产拍欧美日韩视频二区| 91亚洲精品久久久蜜桃网站 | 久久91精品国产91久久小草| 久久综合视频网| 成人一区二区三区| 亚洲福利视频一区| 久久综合久久99| 91视频xxxx| 美女高潮久久久| 中文字幕一区二区三区视频| 欧美精品成人一区二区三区四区| 国产精选一区二区三区| 亚洲精品一二三四区| 欧美v日韩v国产v| 97精品久久久午夜一区二区三区| 亚洲成人www| 国产日韩欧美a| 欧美福利视频导航| 大尺度一区二区| 视频一区二区欧美| 国产精品美女久久久久高潮| 91精品国产高清一区二区三区蜜臀| 国产一区二区三区日韩| 亚洲成人精品影院| 国产精品视频一二| 精品88久久久久88久久久| 91久久线看在观草草青青| 黄页视频在线91| 日日夜夜一区二区| 一区在线中文字幕| 久久香蕉国产线看观看99| 欧美日韩视频在线第一区| 成人亚洲精品久久久久软件| 理论片日本一区| 亚洲国产精品久久人人爱蜜臀| 国产亚洲人成网站| 日韩欧美区一区二| 91麻豆精品国产无毒不卡在线观看| 不卡一区在线观看| 国产成人av一区二区| 国产一区二区电影| 免费成人在线观看| 天堂资源在线中文精品| 一区二区三区在线视频播放| 国产精品美女一区二区| 久久精品男人天堂av| 精品免费国产一区二区三区四区| 欧美精品三级日韩久久| 91久久免费观看| 欧洲视频一区二区| 色欲综合视频天天天| 97精品视频在线观看自产线路二| 国产成人精品亚洲777人妖| 久久99精品国产.久久久久久| 日韩av一区二区在线影视| 五月婷婷激情综合网| 亚洲一区二区三区中文字幕| 一区二区三区高清在线| 亚洲激情六月丁香| 亚洲丶国产丶欧美一区二区三区| 亚洲宅男天堂在线观看无病毒| 亚洲精品视频在线看| 亚洲天堂网中文字| 一区二区三区在线观看视频| 一区二区不卡在线播放 | 国产欧美日韩在线观看| 久久女同精品一区二区| 欧美极品xxx| 综合色中文字幕| 一区二区三区视频在线看| 亚洲va国产va欧美va观看| 亚洲.国产.中文慕字在线| 日本va欧美va欧美va精品| 久久精品国产99国产| 丰满少妇在线播放bd日韩电影| 成人高清在线视频| 一本大道久久精品懂色aⅴ| 精品精品国产高清a毛片牛牛| 国产女人18毛片水真多成人如厕| 国产精品网站导航| 亚洲一区二区三区四区的 | 国产成人在线视频网址| zzijzzij亚洲日本少妇熟睡| 色狠狠一区二区三区香蕉| 欧美理论电影在线| 久久亚洲免费视频| 一区二区三区在线观看欧美| 青青青爽久久午夜综合久久午夜| 国产精品白丝jk白祙喷水网站| 色成人在线视频| 精品少妇一区二区三区在线播放 | 91尤物视频在线观看| 欧美一区日韩一区| 国产精品久久久久久久久久久免费看 | 国产精品天干天干在线综合| 亚洲综合图片区| 国产在线看一区| 91福利在线免费观看| 久久久久久久久久久黄色| 亚洲最色的网站| 国产一二三精品| 欧美日本国产一区| 国产精品久久久久永久免费观看| 午夜电影一区二区| 99国产精品一区| 久久青草国产手机看片福利盒子 | 欧美日韩精品福利| 中文字幕制服丝袜成人av | 免费在线视频一区|