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

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

?? ip.c

?? ucos+lwip在44b0+8019開發板上跑得比較穩定的程序。是ADS的工程
?? C
?? 第 1 頁 / 共 2 頁
字號:

    DEBUGF(IP_DEBUG, ("ip_input: iphdr->dest 0x%lx netif->ip_addr 0x%lx (0x%lx, 0x%lx, 0x%lx)\n",
                      iphdr->dest.addr, netif->ip_addr.addr,
                      iphdr->dest.addr & netif->netmask.addr,
                      netif->ip_addr.addr & netif->netmask.addr,
                      iphdr->dest.addr & ~(netif->netmask.addr)));

    /* interface configured? */
    if(!ip_addr_isany(&(netif->ip_addr)))
    {
      /* unicast to this interface address? */
      if(ip_addr_cmp(&(iphdr->dest), &(netif->ip_addr)) ||
        /* or broadcast matching this interface network address? */
        (ip_addr_isbroadcast(&(iphdr->dest), &(netif->netmask)) &&
         ip_addr_maskcmp(&(iphdr->dest), &(netif->ip_addr), &(netif->netmask))) ||
         /* or restricted broadcast? */
         ip_addr_cmp(&(iphdr->dest), IP_ADDR_BROADCAST)) {
         DEBUGF(IP_DEBUG, ("ip_input: packet accepted on interface %c%c\n",
                       netif->name[0], netif->name[1]));
         /* break out of for loop */
         break;
      }
    }
  }
#if LWIP_DHCP
  /* Pass DHCP messages regardless of destination address. DHCP traffic is addressed
     using link layer addressing (such as Ethernet MAC) so we must not filter on IP.
     According to RFC 1542 section 3.1.1, referred by RFC 2131). */
  if(netif == NULL) {
    /* remote port is DHCP server? */
    if(IPH_PROTO(iphdr) == IP_PROTO_UDP) {
      DEBUGF(IP_DEBUG | DBG_TRACE | 1, ("ip_input: UDP packet to DHCP client port %u\n",
        ntohs(((struct udp_hdr *)((u8_t *)iphdr + iphdrlen))->dest)));
      if (ntohs(((struct udp_hdr *)((u8_t *)iphdr + iphdrlen))->dest) == DHCP_CLIENT_PORT) {
        DEBUGF(IP_DEBUG | DBG_TRACE | 1, ("ip_input: DHCP packet accepted.\n"));
        netif = inp;
      }
    }
  }
#endif /* LWIP_DHCP */
        /* packet not for us? */  
  if(netif == NULL) {
    /* packet not for us, route or discard */
    DEBUGF(IP_DEBUG | DBG_TRACE | 1, ("ip_input: packet not for us.\n"));
#if IP_FORWARD
    /* non-broadcast packet? */
    if(!ip_addr_isbroadcast(&(iphdr->dest), &(inp->netmask))) {
      /* try to forward IP packet on (other) interfaces */
      ip_forward(p, iphdr, inp);
    }
    else
#endif /* IP_FORWARD */
    {
      snmp_inc_ipindiscards();
    }
    pbuf_free(p);
    return ERR_OK;
  }

#if IP_REASSEMBLY
  if((IPH_OFFSET(iphdr) & htons(IP_OFFMASK | IP_MF)) != 0) {
    DEBUGF(IP_DEBUG, ("IP packet is a fragment (id=0x%04x tot_len=%u len=%u MF=%u offset=%u), calling ip_reass()\n", ntohs(IPH_ID(iphdr)), p->tot_len, ntohs(IPH_LEN(iphdr)), !!(IPH_OFFSET(iphdr) & htons(IP_MF)), (ntohs(IPH_OFFSET(iphdr)) & IP_OFFMASK)*8));
    p = ip_reass(p);
    if(p == NULL) {
      return ERR_OK;
    }
    iphdr = p->payload;
  }
#else /* IP_REASSEMBLY */
  if((IPH_OFFSET(iphdr) & htons(IP_OFFMASK | IP_MF)) != 0) {
    pbuf_free(p);
    DEBUGF(IP_DEBUG | 2, ("IP packet dropped since it was fragmented (0x%x) (while IP_REASSEMBLY == 0).\n",
                  ntohs(IPH_OFFSET(iphdr))));
#ifdef IP_STATS
    ++lwip_stats.ip.opterr;
    ++lwip_stats.ip.drop;
#endif /* IP_STATS */
    snmp_inc_ipunknownprotos();
    return ERR_OK;
  }
#endif /* IP_REASSEMBLY */
  
#if IP_OPTIONS == 0
  if (iphdrlen > IP_HLEN) {
    DEBUGF(IP_DEBUG | 2, ("IP packet dropped since there were IP options (while IP_OPTIONS == 0).\n"));
    pbuf_free(p);    
#ifdef IP_STATS
    ++lwip_stats.ip.opterr;
    ++lwip_stats.ip.drop;
#endif /* IP_STATS */
    snmp_inc_ipunknownprotos();
    return ERR_OK;
  }  
#endif /* IP_OPTIONS == 0 */






  /* send to upper layers */
#if IP_DEBUG
  DEBUGF(IP_DEBUG, ("ip_input: \n"));
  ip_debug_print(p);
  DEBUGF(IP_DEBUG, ("ip_input: p->len %d p->tot_len %d\n", p->len, p->tot_len));
#endif /* IP_DEBUG */   

  switch(IPH_PROTO(iphdr)) {
#if LWIP_UDP > 0    
  case IP_PROTO_UDP:

    snmp_inc_ipindelivers();
    udp_input(p, inp);

    break;

#endif /* LWIP_UDP */
#if LWIP_TCP > 0    
  case IP_PROTO_TCP:
    snmp_inc_ipindelivers();
    tcp_input(p, inp);
    break;
#endif /* LWIP_TCP */
  case IP_PROTO_ICMP:

 
    snmp_inc_ipindelivers();
    icmp_input(p, inp);

    break;
  default:
    /* send ICMP destination protocol unreachable unless is was a broadcast */
    if(!ip_addr_isbroadcast(&(iphdr->dest), &(inp->netmask)) &&
       !ip_addr_ismulticast(&(iphdr->dest))) {
      p->payload = (void *)iphdr;


      icmp_dest_unreach(p, ICMP_DUR_PROTO);


    }
    pbuf_free(p);

    DEBUGF(IP_DEBUG | 2, ("Unsupported transport protocol %d\n", IPH_PROTO(iphdr)));

#ifdef IP_STATS
    ++lwip_stats.ip.proterr;
    ++lwip_stats.ip.drop;
#endif /* IP_STATS */
    snmp_inc_ipunknownprotos();

  }
  return ERR_OK;
}

/*-----------------------------------------------------------------------------------*/
/* ip_output_if:
 *
 * Sends an IP packet on a network interface. This function constructs
 * the IP header and calculates the IP header checksum. If the source
 * IP address is NULL, the IP address of the outgoing network
 * interface is filled in as source address.
 */
/*-----------------------------------------------------------------------------------*/
err_t
ip_output_if(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest,
             u8_t ttl,
             u8_t proto, struct netif *netif)
{
  static struct ip_hdr *iphdr;
  static u16_t ip_id = 0;

  snmp_inc_ipoutrequests();
  
  if(dest != IP_HDRINCL) {
    if(pbuf_header(p, IP_HLEN)) {
      DEBUGF(IP_DEBUG | 2, ("ip_output: not enough room for IP header in pbuf\n"));
      
#ifdef IP_STATS
      ++lwip_stats.ip.err;
#endif /* IP_STATS */
      snmp_inc_ipoutdiscards();
      return ERR_BUF;
    }
    
    iphdr = p->payload;
    
    IPH_TTL_SET(iphdr, ttl);
    IPH_PROTO_SET(iphdr, proto);
    
    ip_addr_set(&(iphdr->dest), dest);

    IPH_VHLTOS_SET(iphdr, 4, IP_HLEN / 4, 0);
    IPH_LEN_SET(iphdr, htons(p->tot_len));
    IPH_OFFSET_SET(iphdr, htons(IP_DF));
    IPH_ID_SET(iphdr, htons(ip_id));
    ++ip_id;

    if(ip_addr_isany(src)) {
      ip_addr_set(&(iphdr->src), &(netif->ip_addr));
    } else {
      ip_addr_set(&(iphdr->src), src);
    }

    IPH_CHKSUM_SET(iphdr, 0);
    IPH_CHKSUM_SET(iphdr, inet_chksum((void*)iphdr, IP_HLEN));
  } else {
    iphdr = p->payload;
    dest = &(iphdr->dest);
  }

#if IP_FRAG     
  /* don't fragment if interface has mtu set to 0 [loopif] */
  if (netif->mtu && (p->tot_len > netif->mtu))
    return ip_frag(p,netif,dest);
#endif
  
#ifdef IP_STATS
  lwip_stats.ip.xmit++;
#endif /* IP_STATS */
  DEBUGF(IP_DEBUG, ("ip_output_if: %c%c%u\n", netif->name[0], netif->name[1], netif->num));
#if IP_DEBUG
  ip_debug_print(p);
#endif /* IP_DEBUG */

  DEBUGF(IP_DEBUG, ("netif->output()"));

  return netif->output(netif, p, dest);  
}
/*-----------------------------------------------------------------------------------*/
/* ip_output:
 *
 * Simple interface to ip_output_if. It finds the outgoing network
 * interface and calls upon ip_output_if to do the actual work.
 */
/*-----------------------------------------------------------------------------------*/
err_t
ip_output(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest,
          u8_t ttl, u8_t proto)
{
  struct netif *netif;
  
  if((netif = ip_route(dest)) == NULL) {
    DEBUGF(IP_DEBUG | 2, ("ip_output: No route to 0x%lx\n", dest->addr));

#ifdef IP_STATS
    ++lwip_stats.ip.rterr;
#endif /* IP_STATS */
    snmp_inc_ipoutdiscards();
    return ERR_RTE;
  }

  return ip_output_if(p, src, dest, ttl, proto, netif);
}
/*-----------------------------------------------------------------------------------*/
#if IP_DEBUG
void
ip_debug_print(struct pbuf *p)
{
  struct ip_hdr *iphdr = p->payload;
  u8_t *payload;

  payload = (u8_t *)iphdr + IP_HLEN;
  
  DEBUGF(IP_DEBUG, ("IP header:\n"));
  DEBUGF(IP_DEBUG, ("+-------------------------------+\n"));
  DEBUGF(IP_DEBUG, ("|%2d |%2d |   %2u  |      %4u     | (v, hl, tos, len)\n",
                    IPH_V(iphdr),
                    IPH_HL(iphdr),
                    IPH_TOS(iphdr),
                    ntohs(IPH_LEN(iphdr))));
  DEBUGF(IP_DEBUG, ("+-------------------------------+\n"));
  DEBUGF(IP_DEBUG, ("|    %5u      |%u%u%u|    %4u   | (id, flags, offset)\n",
                    ntohs(IPH_ID(iphdr)),
                    ntohs(IPH_OFFSET(iphdr)) >> 15 & 1,
                    ntohs(IPH_OFFSET(iphdr)) >> 14 & 1,
                    ntohs(IPH_OFFSET(iphdr)) >> 13 & 1,
                    ntohs(IPH_OFFSET(iphdr)) & IP_OFFMASK));
  DEBUGF(IP_DEBUG, ("+-------------------------------+\n"));
  DEBUGF(IP_DEBUG, ("|   %2u  |   %2u  |    0x%04x     | (ttl, proto, chksum)\n",
                    IPH_TTL(iphdr),
                    IPH_PROTO(iphdr),
                    ntohs(IPH_CHKSUM(iphdr))));
  DEBUGF(IP_DEBUG, ("+-------------------------------+\n"));
  DEBUGF(IP_DEBUG, ("|  %3ld  |  %3ld  |  %3ld  |  %3ld  | (src)\n",
                    ntohl(iphdr->src.addr) >> 24 & 0xff,
                    ntohl(iphdr->src.addr) >> 16 & 0xff,
                    ntohl(iphdr->src.addr) >> 8 & 0xff,
                    ntohl(iphdr->src.addr) & 0xff));
  DEBUGF(IP_DEBUG, ("+-------------------------------+\n"));
  DEBUGF(IP_DEBUG, ("|  %3ld  |  %3ld  |  %3ld  |  %3ld  | (dest)\n",
                    ntohl(iphdr->dest.addr) >> 24 & 0xff,
                    ntohl(iphdr->dest.addr) >> 16 & 0xff,
                    ntohl(iphdr->dest.addr) >> 8 & 0xff,
                    ntohl(iphdr->dest.addr) & 0xff));
  DEBUGF(IP_DEBUG, ("+-------------------------------+\n"));
}
#endif /* IP_DEBUG */
/*-----------------------------------------------------------------------------------*/





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美网站大全在线观看| 成人app下载| 日韩黄色片在线观看| 亚洲你懂的在线视频| 亚洲免费伊人电影| 有坂深雪av一区二区精品| 亚洲最大成人网4388xx| 亚洲精品视频在线观看免费| 自拍视频在线观看一区二区| 18成人在线观看| 亚洲精品精品亚洲| 亚洲自拍偷拍综合| 午夜一区二区三区视频| 日韩电影免费一区| 国产一区二区主播在线| 高清国产一区二区三区| 91视频在线看| 欧美日韩国产成人在线免费| 日韩欧美国产一二三区| 久久人人97超碰com| 国产精品乱码一区二区三区软件| 亚洲人成人一区二区在线观看 | 精品久久人人做人人爰| 亚洲精品一区在线观看| 国产精品不卡在线| 亚洲成a人v欧美综合天堂 | 国产精品一线二线三线| eeuss鲁一区二区三区| 欧美性色黄大片手机版| 精品卡一卡二卡三卡四在线| 日本一区二区高清| 亚洲一二三区不卡| 国产高清精品在线| 欧美日韩激情在线| 国产精品毛片大码女人| 视频一区免费在线观看| 国产高清不卡一区二区| 欧美色图一区二区三区| 久久久午夜精品理论片中文字幕| 一区二区三区四区激情| 精品亚洲国内自在自线福利| 91伊人久久大香线蕉| 日韩欧美国产一区二区在线播放| 国产精品国产自产拍高清av| 视频一区视频二区中文字幕| 成人性生交大片| 日韩女同互慰一区二区| 亚洲黄色av一区| 国产成a人亚洲精| 日韩一区二区三区视频| 亚洲精品国产第一综合99久久| 久久国产精品无码网站| 欧美日韩在线不卡| 日韩毛片高清在线播放| 国产精品伊人色| 日韩欧美亚洲国产另类| 亚洲电影第三页| 91理论电影在线观看| 国产欧美一区二区三区鸳鸯浴| 日韩成人精品视频| 欧美在线啊v一区| 亚洲日本中文字幕区| 国产精品一区二区不卡| 精品免费国产二区三区| 婷婷久久综合九色综合绿巨人| 色综合久久综合网| 亚洲色欲色欲www在线观看| 国产一区二区美女| 精品国产一区二区三区久久久蜜月 | 日本二三区不卡| 亚洲色图一区二区三区| 福利一区二区在线| 久久精品欧美日韩精品| 国产一区福利在线| 欧美韩国日本不卡| 成人一道本在线| 亚洲视频香蕉人妖| 91激情五月电影| 亚洲一区精品在线| 3d成人h动漫网站入口| 午夜精品福利一区二区三区蜜桃| 欧洲激情一区二区| 午夜一区二区三区在线观看| 欧美色涩在线第一页| 亚洲444eee在线观看| 欧美精品乱码久久久久久按摩 | 久久丁香综合五月国产三级网站 | 国产午夜精品久久| 成人av影院在线| 一区二区欧美在线观看| 欧美日本在线一区| 老司机午夜精品| 欧美激情在线一区二区三区| 成人午夜伦理影院| 亚洲在线观看免费| 欧美精品一区二区三区一线天视频| 国内精品久久久久影院色| 久久久久久综合| 91色porny在线视频| 亚洲福利视频一区| 久久精品欧美一区二区三区麻豆| 成人av电影在线| 石原莉奈在线亚洲二区| 国产精品久久久久久久久图文区| www.欧美亚洲| 无码av中文一区二区三区桃花岛| 日韩精品一区二区三区视频播放 | 高清shemale亚洲人妖| 一区二区三区在线视频播放| 日韩一级片在线播放| 91影视在线播放| 天天综合网天天综合色| 欧美精品一区二区在线播放| 一本久道中文字幕精品亚洲嫩| 蜜臀精品一区二区三区在线观看 | 欧美一区二区久久| 成人av网站在线观看免费| 亚洲成av人**亚洲成av**| 久久综合狠狠综合久久综合88| 99久久精品免费精品国产| 日韩精品免费视频人成| 国产精品久久久久久亚洲毛片| 欧美日韩激情一区| 99热国产精品| 精品一区二区精品| 亚洲成人免费电影| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 天堂一区二区在线| 日韩理论片网站| 久久一区二区三区国产精品| 欧美日韩中字一区| 一本色道久久综合精品竹菊| 国产一区二区免费视频| 日韩不卡一区二区三区| 亚洲一区二区三区四区的| 欧美国产精品一区二区| 日韩欧美另类在线| 7777精品伊人久久久大香线蕉完整版 | 亚洲欧洲三级电影| 日本一区二区三区免费乱视频| 欧美一区日本一区韩国一区| 欧美性猛片aaaaaaa做受| 99国产精品久久久久久久久久| 极品少妇一区二区| 美女视频网站久久| 麻豆精品久久久| 久久国产视频网| 麻豆传媒一区二区三区| 日一区二区三区| 日韩在线一二三区| 午夜精品国产更新| 免费看黄色91| 久久精品国产免费| 韩国成人福利片在线播放| 美女一区二区视频| 国产麻豆精品一区二区| 国产精品一区二区免费不卡| 国产一区二区剧情av在线| 狠狠色狠狠色综合| 国产精品一二三四区| 成人av先锋影音| 日本电影亚洲天堂一区| 欧美日韩成人综合在线一区二区| 欧美日韩一区在线观看| 欧美精品久久一区| 亚洲精品一区二区在线观看| 久久久久久日产精品| 国产精品久久久久久久裸模 | 亚洲v精品v日韩v欧美v专区| 婷婷六月综合亚洲| 免费高清视频精品| 成人免费视频app| 日本久久电影网| 欧美一区二区国产| 国产日韩欧美激情| 亚洲欧美日韩国产综合在线| 亚洲高清视频的网址| 久久69国产一区二区蜜臀| 国产激情一区二区三区桃花岛亚洲| 粉嫩aⅴ一区二区三区四区| 91成人在线免费观看| 欧美一卡二卡在线| 国产精品色哟哟| 视频在线观看国产精品| 国产精品一区二区免费不卡| 在线精品视频一区二区| 日韩午夜精品电影| 中文字幕在线视频一区| 午夜久久电影网| 成人性生交大片免费看在线播放| 欧美日免费三级在线| 国产视频911| 日韩av中文在线观看| 波多野结衣中文一区| 欧美一级一区二区| 亚洲四区在线观看| 国产成人午夜精品5599| 91精品国产免费| 一区二区三区在线免费播放| 国产精品一区三区|