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/net/ethernet.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 *
     
    6363#include <net/if_arp.h>
    6464#include <net/net.h>
     65#include <net/net_endian.h>
    6566#include <net/net_var.h>
    6667#include <net/net_buf.h>
     
    7172#include <netinet/in_var.h>
    7273#include <netinet/if_ether.h>
     74
    7375#include <netinet6/if6_ether.h>
    7476#include <netinet6/nd6.h>
    7577
    7678#include <net/if_var.h>
    77 #include <net/if6_var.h>
    7879
    7980#ifdef SUPPORT_ETHER
     
    8384 */
    8485
    85 #if defined(SUPPORT_INET4)
     86#if defined(_IP4_CFG)
    8687
    8788const uint8_t ether_broad_cast_addr[ETHER_ADDR_LEN] = {
     
    9091        };
    9192
    92 #endif  /* of #if defined(SUPPORT_INET4) */
     93#endif  /* of #if defined(_IP4_CFG) */
    9394
    9495/*
     
    9899/* ネットワークインタフェース構造体 */
    99100
    100 #if defined(SUPPORT_INET4)
    101 
    102 static T_IFNET ether_ifnet = {
    103         NULL,                   /* ネットワークインタフェースのソフトウェア情報       */
    104         {
    105                 IPV4_ADDR_LOCAL,        /* IPv4 アドレス            */
    106                 IPV4_ADDR_LOCAL_MASK,   /* サブネットマスク             */
    107                 },
    108         };
    109 
    110 #endif  /* of #if defined(SUPPORT_INET4) */
    111 
    112 #if defined(SUPPORT_INET6)
    113 
    114 static T_IFNET ether_ifnet = {
    115         NULL,                   /* ネットワークインタフェースのソフトウェア情報       */
    116         {0},                    /* IPv6 アドレス情報                          */
    117         {0},                    /* マルチキャスト IPv6 アドレス                    */
    118         0,                              /* フラグ                                  */
    119         };
    120 
    121 #endif  /* of #if defined(SUPPORT_INET6) */
     101static T_IFNET ether_ifnet;
    122102
    123103#ifdef SUPPORT_MIB
    124104
    125 /*
    126  *  SNMP の 管理情報ベース (MIB)
    127  */
     105/*  SNMP の 管理情報ベース (MIB) */
    128106
    129107T_IF_STATS if_stats;
     
    158136
    159137/*
     138 *  ether_srand -- 乱数を初期値を返す。
     139 */
     140
     141uint32_t
     142ether_srand (void)
     143{
     144        T_IF_SOFTC      *ic;
     145        uint32_t        rval;
     146
     147        ic = IF_ETHER_NIC_GET_SOFTC();
     148        rval  = (ic->ifaddr.lladdr[2] << 24)
     149              + (ic->ifaddr.lladdr[3] << 16)
     150              + (ic->ifaddr.lladdr[4] <<  8)
     151              + (ic->ifaddr.lladdr[5]      );
     152
     153#ifdef ETHER_CFG_COLLECT_ADDR
     154
     155        rval += (ether_collect_addr.lladdr[2] << 24)
     156              + (ether_collect_addr.lladdr[3] << 16)
     157              + (ether_collect_addr.lladdr[4] <<  8)
     158              + (ether_collect_addr.lladdr[5]      );
     159
     160#endif  /* of #ifdef ETHER_CFG_COLLECT_ADDR */
     161
     162        return rval;
     163        }
     164
     165/*
    160166 *  ether_get_ifnet -- ネットワークインタフェース構造体を返す。
    161167 */
     
    167173        }
    168174
    169 #if defined(SUPPORT_INET6)
     175#if defined(_IP6_CFG)
    170176
    171177/*
     
    174180
    175181ER
    176 ether_in6_resolve_multicast (T_ETHER_ADDR *ifaddr, T_IN6_ADDR *maddr)
     182ether_in6_resolve_multicast (T_ETHER_ADDR *ifaddr, const T_IN6_ADDR *maddr)
    177183{
    178184        /* マルチキャストアドレスかチェックする。*/
     
    186192        }
    187193
    188 #endif  /* of #if defined(SUPPORT_INET6) */
     194#endif  /* of #if defined(_IP6_CFG) */
    189195
    190196/**
     
    203209      }
    204210#endif /* LWIP_ARP */
     211
     212#if LWIP_IGMP
     213      /* resend IGMP memberships */
     214      if (ether->_flags & IF_FLAG_IGMP) {
     215        igmp_report_groups(ether);
     216      }
     217#endif /* LWIP_IGMP */
    205218    }
    206219    if (ether->link_callback) {
     
    262275
    263276ER
    264 ether_output (T_NET_BUF *output, void *dst, T_IF_ADDR *gw, TMO tmout)
     277ether_output (T_NET_BUF *output, const void *dst, T_IF_ADDR *gw, TMO tmout)
    265278{
    266279        T_IF_SOFTC      *ic;
     
    275288        switch(ntohs(eth->type)) {
    276289
    277 #if defined(SUPPORT_INET4)
     290#if defined(_IP4_CFG)
    278291
    279292        case ETHER_TYPE_IP:             /* IPv4 */
     
    292305                break;
    293306
    294 #endif  /* of #if defined(SUPPORT_INET4) */
    295 
    296 #if defined(SUPPORT_INET6)
     307#endif  /* of #if defined(_IP4_CFG) */
     308
     309#if defined(_IP6_CFG)
    297310
    298311        case ETHER_TYPE_IPV6:           /* IPv6 */
    299                 error = nd6_storelladdr((T_ETHER_ADDR*)GET_ETHER_HDR(output)->dhost,
    300                                         (T_IN6_ADDR*)dst, gw);
     312                error = nd6_storelladdr((T_ETHER_ADDR*)eth->dhost,
     313                                        (const T_IN6_ADDR*)dst, gw);
    301314                if (error == E_OK)
    302315                        error = ether_raw_output(output, tmout);
     
    311324                break;
    312325
    313 #endif  /* of #if defined(SUPPORT_INET6) */
     326#endif  /* of #if defined(_IP6_CFG) */
    314327
    315328        default:
     
    398411        ID              tskid;
    399412        uint16_t        proto;
     413        uint8_t         rcount = 0;
    400414
    401415        /* ネットワークインタフェース管理を初期化する。*/
    402416        ifinit();
     417
     418        /* イーサネットネットワークインタフェース管理を初期化する。*/
     419
     420#if defined(_IP4_CFG)
     421
     422        ether_ifnet.in4_ifaddr.addr = IPV4_ADDR_LOCAL;          /* IPv4 アドレス            */
     423        ether_ifnet.in4_ifaddr.mask = IPV4_ADDR_LOCAL_MASK;     /* サブネットマスク             */
     424
     425#endif  /* of #if defined(_IP4_CFG) */
    403426
    404427        /* NIC を初期化する。*/
     
    418441                           tskid, mac2str(NULL, ic->ifaddr.lladdr));
    419442
    420 #if defined(SUPPORT_INET4)
     443#if defined(_IP4_CFG)
    421444
    422445        /* ARP を初期化する。*/
    423446        arp_init();
    424447
    425 #endif  /* of #if defined(SUPPORT_INET4) */
     448#endif  /* of #if defined(_IP4_CFG) */
    426449
    427450        ether_ifnet.ic = ic;
     451
     452        /* 乱数生成を初期化する。*/
     453        net_srand(0);
    428454
    429455        while (true) {
    430456                syscall(wai_sem(ic->semid_rxb_ready));
    431457                if ((input = IF_ETHER_NIC_READ(ic)) != NULL) {
    432                         NET_COUNT_ETHER(net_count_ether.in_octets, input->len);
     458                        NET_COUNT_ETHER(net_count_ether.in_octets,  input->len);
    433459                        NET_COUNT_MIB(if_stats.ifInOctets, input->len + 8);
    434460                        NET_COUNT_ETHER(net_count_ether.in_packets, 1);
     
    436462                        proto = ntohs(eth->type);
    437463
     464                        /* 乱数生成を初期化する。*/
     465                        if (rcount == 0) {
     466
     467#ifdef ETHER_CFG_COLLECT_ADDR
     468                                memcpy(ether_collect_addr.lladdr, eth->shost,
     469                                sizeof(ether_collect_addr.lladdr));
     470#endif  /* of #ifdef ETHER_CFG_COLLECT_ADDR */
     471
     472                                net_srand(0);
     473                                }
     474                        rcount ++;
     475
     476
    438477#ifdef SUPPORT_MIB
    439478                        if ((*eth->dhost & ETHER_MCAST_ADDR) == 0) {
     
    445484#endif  /* of #ifdef SUPPORT_MIB */
    446485
    447 #if defined(SUPPORT_INET4) && defined(ETHER_CFG_ACCEPT_ALL)
     486#if defined(_IP4_CFG) && defined(ETHER_CFG_ACCEPT_ALL)
    448487
    449488                        if ((*eth->dhost & ETHER_MCAST_ADDR) && *eth->dhost != 0xff) {
     
    464503                                }
    465504
    466 #endif  /* of #if defined(SUPPORT_INET4) && defined(ETHER_CFG_ACCEPT_ALL) */
     505#endif  /* of #if defined(_IP4_CFG) && defined(ETHER_CFG_ACCEPT_ALL) */
    467506
    468507                        switch(proto) {
    469508
    470 #if defined(SUPPORT_INET4)
     509#if defined(_IP4_CFG)
    471510
    472511                        case ETHER_TYPE_IP:             /* IP   */
     
    478517                                break;
    479518
    480 #endif  /* of #if defined(SUPPORT_INET4) */
    481 
    482 #if defined(SUPPORT_INET6)
     519#endif  /* of #if defined(_IP4_CFG) */
     520
     521#if defined(_IP6_CFG)
    483522
    484523                        case ETHER_TYPE_IPV6:           /* IPv6 */
     
    486525                                break;
    487526
    488 #endif  /* of #if defined(SUPPORT_INET6) */
     527#endif  /* of #if defined(_IP6_CFG) */
    489528
    490529                        default:
Note: See TracChangeset for help on using the changeset viewer.