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/netinet6/in6.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 *
     
    126126#include <net/ppp_ipcp.h>
    127127#include <net/net.h>
     128#include <net/net_endian.h>
    128129#include <net/net_buf.h>
    129130#include <net/net_timer.h>
    130131#include <net/net_count.h>
     132
     133#include <netinet/in.h>
     134#include <netinet/in_var.h>
    131135
    132136#include <netinet6/in6.h>
     
    135139#include <netinet6/in6_ifattach.h>
    136140
    137 #include <net/if6_var.h>
    138 
    139 #ifdef SUPPORT_INET6
     141#include <net/if_var.h>
     142
     143#ifdef _IP6_CFG
    140144
    141145/*
     
    143147 */
    144148
    145 T_IN6_ADDR in6_addr_unspecified =
     149const T_IN6_ADDR in6_addr_unspecified =
    146150        IPV6_ADDR_UNSPECIFIED_INIT;
    147151
    148 T_IN6_ADDR in6_addr_linklocal_allnodes =
     152const T_IN6_ADDR in6_addr_linklocal_allnodes =
    149153        IPV6_ADDR_LINKLOCAL_ALLNODES_INIT;
    150154
    151 T_IN6_ADDR in6_addr_linklocal_allrouters =
     155const T_IN6_ADDR in6_addr_linklocal_allrouters =
    152156        IPV6_ADDR_LINKLOCAL_ALLROUTERS_INIT;
    153157
     
    172176
    173177static ER
    174 in6_ifinit (T_IFNET *ifp, T_IN6_IFADDR *ia, T_IN6_ADDR *addr, uint_t prefix_len)
     178in6_ifinit (T_IFNET *ifp, T_IN6_IFADDR *ia, const T_IN6_ADDR *addr, uint_t prefix_len)
    175179{
    176180        /* アドレスとプレフィックス長を設定する。*/
     
    200204
    201205        for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
    202                 ia = &ifp->in_ifaddrs[ix];
     206                ia = &ifp->in6_ifaddrs[ix];
    203207                memset(ia, sizeof(T_IN6_IFADDR), 0);
    204208                ia->router_index = IN6_RTR_IX_UNREACH;
     
    226230
    227231int_t
    228 in6_addr2ifaix (T_IN6_ADDR *addr)
     232in6_addr2ifaix (const T_IN6_ADDR *addr)
    229233{
    230234        T_IFNET         *ifp = IF_GET_IFNET();
     
    233237
    234238        for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
    235                 ia = &ifp->in_ifaddrs[ix];
     239                ia = &ifp->in6_ifaddrs[ix];
    236240                if ((ia->flags & IN6_IFF_DEFINED) != 0 &&
    237241                    in6_are_prefix_equal(addr, &ia->addr, ia->prefix_len))
     
    247251
    248252int_t
    249 in6_addr2maix (T_IN6_ADDR *addr)
     253in6_addr2maix (const T_IN6_ADDR *addr)
    250254{
    251255        if (addr->s6_addr8[0] == 0xff) {
     
    268272
    269273ER
    270 in6_update_ifa (T_IFNET *ifp, T_IN6_IFADDR *ia, T_IN6_ADDR *addr,
     274in6_update_ifa (T_IFNET *ifp, T_IN6_IFADDR *ia, const T_IN6_ADDR *addr,
    271275                uint_t prefix_len, uint32_t vltime, uint32_t pltime,
    272276                int_t router_index, int_t prefix_index, uint_t flags)
     
    365369in6ifa_ifpwithix (T_IFNET *ifp, int_t ix)
    366370{
    367         return ix < NUM_IN6_IFADDR_ENTRY? &ifp->in_ifaddrs[ix] : NULL;
     371        return ix < NUM_IN6_IFADDR_ENTRY? &ifp->in6_ifaddrs[ix] : NULL;
    368372        }
    369373
     
    379383
    380384        for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; )
    381                 if (ifp->in_ifaddrs[ix].router_index == router_index)
    382                         return &ifp->in_ifaddrs[ix];
     385                if (ifp->in6_ifaddrs[ix].router_index == router_index)
     386                        return &ifp->in6_ifaddrs[ix];
    383387        return NULL;
    384388        }
    385389
    386390/*
    387  * in6_ifawithifp -- 宛先アドレスにふさわしい送信元アドレスを、
     391 * in6_ifawithifp -- 宛先アドレスにふさわしい送信元アドレス情報を、
    388392 *                   ネットワークインタフェースから探索する。
    389393 */
    390394
    391395T_IN6_IFADDR *
    392 in6_ifawithifp (T_IFNET *ifp, T_IN6_ADDR *dst)
     396in6_ifawithifp (T_IFNET *ifp, const T_IN6_ADDR *dst)
    393397{
    394398        uint_t  scope;
     
    397401        /* 宛先アドレスと同じスコープのアドレスを返す。*/
    398402        if ((ix = in6_addr2ifaix(dst)) != IPV6_IFADDR_IX_INVALID)
    399                 return &ifp->in_ifaddrs[ix];
     403                return &ifp->in6_ifaddrs[ix];
    400404        else if ((ix = in6_addr2maix(dst)) == IPV6_MADDR_IX_SOL_NODE ||
    401405                  ix                       == IPV6_MADDR_IX_LL_ALL_NODE)
    402                 return &ifp->in_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL];
     406                return &ifp->in6_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL];
    403407        else {
    404408                scope = in6_addrscope(dst);
    405409                for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
    406                         if ((ifp->in_ifaddrs[ix].flags & IN6_IFF_DEFINED) &&
    407                             (ifp->in_ifaddrs[ix].flags & IN6_IFF_DETACHED) == 0 &&
    408                             in6_addrscope(&ifp->in_ifaddrs[ix].addr) == scope) {
    409                                 return &ifp->in_ifaddrs[ix];
     410                        if ((ifp->in6_ifaddrs[ix].flags & IN6_IFF_DEFINED) &&
     411                            (ifp->in6_ifaddrs[ix].flags & IN6_IFF_DETACHED) == 0 &&
     412                            in6_addrscope(&ifp->in6_ifaddrs[ix].addr) == scope) {
     413                                return &ifp->in6_ifaddrs[ix];
    410414                                }
    411415                        }
    412416                return NULL;
     417                }
     418        }
     419
     420/*
     421 * in6_addrwithifp -- 宛先アドレスにふさわしい送信元アドレスを、
     422 *                    ネットワークインタフェースから探索する。
     423 */
     424
     425const T_IN6_ADDR *
     426in6_addrwithifp (T_IFNET *ifp, T_IN6_ADDR *src, const T_IN6_ADDR *dst)
     427{
     428        T_IN6_IFADDR *ifaddr;
     429
     430        if ((ifaddr = in6_ifawithifp(ifp, dst)) == NULL)
     431                return NULL;
     432        else {
     433                *src = ifaddr->addr;
     434                return src;
    413435                }
    414436        }
     
    431453        dad_delay = 0;
    432454        for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; )
    433                 if ((ifp->in_ifaddrs[ix].flags & IN6_IFF_DEFINED) &&
    434                     (ifp->in_ifaddrs[ix].flags & IN6_IFF_TENTATIVE))
    435                         nd6_dad_start(ifp, &ifp->in_ifaddrs[ix], &dad_delay);
     455                if ((ifp->in6_ifaddrs[ix].flags & IN6_IFF_DEFINED) &&
     456                    (ifp->in6_ifaddrs[ix].flags & IN6_IFF_TENTATIVE))
     457                        nd6_dad_start(ifp, &ifp->in6_ifaddrs[ix], &dad_delay);
    436458#endif  /* of #if 0 */
    437459
     
    449471
    450472bool_t
    451 in6_are_prefix_equal (T_IN6_ADDR *addr, T_IN6_ADDR *prefix, uint_t prefix_len)
     473in6_are_prefix_equal (const T_IN6_ADDR *addr, const T_IN6_ADDR *prefix, uint_t prefix_len)
    452474{
    453475        uint_t bitlen, bytelen;
     
    478500        syscall(get_tim(&now));
    479501        for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
    480                 ia = &ifp->in_ifaddrs[ix];
     502                ia = &ifp->in6_ifaddrs[ix];
    481503
    482504                if ((ia->flags & IN6_IFF_DEFINED) == 0)
     
    500522        }
    501523
    502 #endif /* of #ifdef SUPPORT_INET6 */
     524#endif /* of #ifdef _IP6_CFG */
Note: See TracChangeset for help on using the changeset viewer.