Ignore:
Timestamp:
Jan 21, 2018, 12:10:09 AM (6 years ago)
Author:
coas-nagasima
Message:

prototoolに関連するプロジェクトをnewlibからmuslを使うよう変更・更新
ntshellをnewlibの下位の実装から、muslのsyscallの実装に変更・更新
以下のOSSをアップデート
・mruby-1.3.0
・musl-1.1.18
・onigmo-6.1.3
・tcc-0.9.27
以下のOSSを追加
・openssl-1.1.0e
・curl-7.57.0
・zlib-1.2.11
以下のmrbgemsを追加
・iij/mruby-digest
・iij/mruby-env
・iij/mruby-errno
・iij/mruby-iijson
・iij/mruby-ipaddr
・iij/mruby-mock
・iij/mruby-require
・iij/mruby-tls-openssl

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/ip_input.c

    r321 r331  
    22 *  TINET (TCP/IP Protocol Stack)
    33 *
    4  *  Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering
     4 *  Copyright (C) 2001-2017 by Dep. of Computer Science and Engineering
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
     
    7777#include <t_syslog.h>
    7878#include "kernel_cfg.h"
     79#include "tinet_cfg.h"
    7980
    8081#endif  /* of #ifdef TARGET_KERNEL_ASP */
     
    8586#include <t_services.h>
    8687#include "kernel_id.h"
     88#include "tinet_id.h"
    8789
    8890#endif  /* of #ifdef TARGET_KERNEL_JSP */
     
    9799#include <net/ppp_ipcp.h>
    98100#include <net/net.h>
     101#include <net/net_endian.h>
    99102#include <net/net_buf.h>
    100103#include <net/net_count.h>
     
    107110#include <netinet/ip_icmp.h>
    108111#include <netinet/tcp.h>
    109 #include <netinet/tcp_timer.h>
    110112#include <netinet/tcp_var.h>
    111113#include <netinet/udp.h>
    112114#include <netinet/udp_var.h>
     115#include <netinet/ip_igmp.h>
    113116
    114117#if defined(SUPPORT_IPSEC)
     
    122125
    123126#include <net/if_var.h>
     127
     128#if defined(_IP4_CFG)
    124129
    125130/*
     
    345350ip_remove_options (T_NET_BUF *nbuf)
    346351{
    347         T_IP_HDR        *iph;
    348 
    349         iph  = GET_IP_HDR(nbuf);
    350 
    351         if (GET_IP_HDR_SIZE(iph) > IP4_HDR_SIZE) {
    352                 memmove((char *)iph + IP4_HDR_SIZE, GET_IP_SDU(nbuf),
    353                         (size_t)(iph->len - GET_IP_HDR_SIZE(iph)));
     352        T_IP4_HDR       *iph;
     353        uint_t          hdr_size;
     354
     355        iph  = GET_IP4_HDR(nbuf);
     356        hdr_size = GET_IP4_HDR_SIZE(nbuf);
     357
     358        if (hdr_size > IP4_HDR_SIZE) {
     359                memmove((char *)iph + IP4_HDR_SIZE, GET_IP4_SDU(nbuf),
     360                        (size_t)(iph->len - hdr_size));
    354361                iph->vhl   = IP4_MAKE_VHL(IPV4_VERSION, IP4_HDR_SIZE >> 2);
    355                 iph->len  -= (uint16_t)(GET_IP_HDR_SIZE(iph) - IP4_HDR_SIZE);
    356                 nbuf->len -= (uint16_t)(GET_IP_HDR_SIZE(iph) - IP4_HDR_SIZE);
     362                iph->len  -= (uint16_t)(hdr_size - IP4_HDR_SIZE);
     363                nbuf->len -= (uint16_t)(hdr_size - IP4_HDR_SIZE);
    357364                }
    358365
     
    389396                }
    390397
    391         ip4h  = GET_IP4_HDR(input);
    392         hlen = GET_IP4_HDR_SIZE(ip4h);
     398        ip4h = GET_IP4_HDR(input);
     399        hlen = GET_IP4_HDR_SIZE(input);
    393400
    394401        /* バージョンをチェックする。*/
     
    429436        /* 送信元アドレスをチェックする。*/
    430437        src = ntohl(ip4h->src);
    431         bc  = (ifp->in_ifaddr.addr & ifp->in_ifaddr.mask) | ~ifp->in_ifaddr.mask;
     438        bc  = (ifp->in4_ifaddr.addr & ifp->in4_ifaddr.mask) | ~ifp->in4_ifaddr.mask;
    432439
    433440#ifdef SUPPORT_LOOP
     
    441448#else   /* of #ifdef SUPPORT_LOOP */
    442449
    443         if (src == ifp->in_ifaddr.addr || src == bc || src == IPV4_ADDR_BROADCAST || src == IPV4_ADDRANY) {
     450        if (src == ifp->in4_ifaddr.addr || src == bc || src == IPV4_ADDR_BROADCAST || src == IPV4_ADDRANY) {
    444451                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_ADDR], 1);
    445452                NET_COUNT_MIB(ip_stats.ipInAddrErrors, 1);
     
    459466         */
    460467
    461         if ((ifp->in_ifaddr.addr != IPV4_ADDRANY) &&
    462             (!(dst == ifp->in_ifaddr.addr || dst == bc ||
    463                dst == IPV4_ADDR_BROADCAST || dst == IPV4_ADDRANY))) {
     468#if defined(ETHER_CFG_MULTICAST)
     469        if ((ifp->in4_ifaddr.addr != IPV4_ADDRANY) &&
     470                (!(dst == ifp->in4_ifaddr.addr || dst == bc ||
     471                   dst == IPV4_ADDR_BROADCAST  || dst == IPV4_ADDRANY ||
     472                  IN4_IS_ADDR_MULTICAST(dst)))) {
    464473                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_ADDR], 1);
    465474                NET_COUNT_MIB(ip_stats.ipInAddrErrors, 1);
    466475                goto buf_rel;
    467476                }
     477#else
     478        if ((ifp->in4_ifaddr.addr != IPV4_ADDRANY) &&
     479            (!(dst == ifp->in4_ifaddr.addr || dst == bc ||
     480               dst == IPV4_ADDR_BROADCAST  || dst == IPV4_ADDRANY))) {
     481                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_ADDR], 1);
     482                NET_COUNT_MIB(ip_stats.ipInAddrErrors, 1);
     483                goto buf_rel;
     484                }
     485#endif
    468486
    469487#else   /* of #ifdef DHCP_CFG */
    470488
    471489#if defined(ETHER_CFG_MULTICAST)
    472         if (!(dst == ifp->in_ifaddr.addr || dst == bc ||
     490        if (!(dst == ifp->in4_ifaddr.addr || dst == bc ||
    473491                  dst == IPV4_ADDR_BROADCAST || dst == IPV4_ADDRANY ||
    474492                  IN4_IS_ADDR_MULTICAST(dst))) {
     
    478496                }
    479497#else
    480         if (!(dst == ifp->in_ifaddr.addr || dst == bc ||
    481               dst == IPV4_ADDR_BROADCAST || dst == IPV4_ADDRANY)) {
     498        if (!(dst == ifp->in4_ifaddr.addr || dst == bc ||
     499              dst == IPV4_ADDR_BROADCAST  || dst == IPV4_ADDRANY)) {
    482500                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_ADDR], 1);
    483501                NET_COUNT_MIB(ip_stats.ipInAddrErrors, 1);
     
    525543        switch (ip4h->proto) {
    526544
    527 #ifdef SUPPORT_UDP
    528         case IPPROTO_UDP:
    529                 NET_COUNT_MIB(ip_stats.ipInDelivers, 1);
    530                 udp_input(&input, &off, NULL);
    531                 return;
    532                 break;
    533 #endif  /* of #ifdef SUPPORT_UDP */
    534 
    535 #ifdef SUPPORT_TCP
     545#if defined(SUPPORT_TCP)
    536546        case IPPROTO_TCP:
    537547                NET_COUNT_MIB(ip_stats.ipInDelivers, 1);
     
    539549                return;
    540550                break;
    541 #endif  /* of #ifdef SUPPORT_UDP */
     551#endif  /* of #if defined(SUPPORT_TCP) */
     552
     553#if defined(SUPPORT_UDP) && ( (TNUM_UDP4_CEPID > 0) || \
     554                             ((TNUM_UDP6_CEPID > 0) && defined(API_CFG_IP4MAPPED_ADDR)))
     555        case IPPROTO_UDP:
     556                NET_COUNT_MIB(ip_stats.ipInDelivers, 1);
     557                udp4_input(&input, &off, NULL);
     558                return;
     559                break;
     560#endif  /* of #if defined(SUPPORT_UDP) && TNUM_UDP4_CEPID > 0 */
    542561
    543562        case IPPROTO_ICMP:
     
    546565                return;
    547566                break;
     567
     568#if defined(SUPPORT_IGMP)
     569        case IPPROTO_IGMP:
     570                NET_COUNT_MIB(ip_stats.ipInDelivers, 1);
     571                igmp_input(&input, &off, NULL);
     572                return;
     573                break;
     574#endif /* of #ifdef UDP_CFG_EXTENTIONS */
    548575
    549576#if defined(SUPPORT_IPSEC)
     
    560587
    561588                /* ローカル IP アドレスに届いたデータグラムのみ ICMP エラーを通知する。*/
    562                 if (dst == ifp->in_ifaddr.addr) {
     589                if (dst == ifp->in4_ifaddr.addr) {
    563590                        T_IN4_ADDR      src;
    564591
     
    578605        syscall(rel_net_buf(input));
    579606        }
     607
     608#endif  /* of #if defined(_IP4_CFG) */
Note: See TracChangeset for help on using the changeset viewer.