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

Location:
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6
Files:
2 added
29 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ah.h

    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 *
     
    6767#define _AH_H_
    6868
    69 #ifdef SUPPORT_INET6
    70 
    7169/*
    7270 *  RFC2402 認証ヘッダ
     
    8078        uint32_t        spi;    /* Security Parameter Index (SPI)       */
    8179        uint32_t        seq;    /* シーケンス番号                      */
    82         } __attribute__((packed, aligned(2)))T_IP6_AH_HDR;
    83 
    84 #endif  /* of #ifdef SUPPORT_INET6 */
     80        } __attribute__((packed, aligned(2))) T_IP6_AH_HDR;
    8581
    8682#endif  /* of #ifndef _AH_H_ */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ah6.h

    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 *
     
    6767#define _AH6_H_
    6868
    69 #ifdef SUPPORT_INET6
    70 
    7169/*
    7270 *  関数
     
    7573extern uint_t ah6_input (T_NET_BUF **inputp, uint_t *offp, uint_t *nextp);
    7674
    77 #endif  /* of #ifdef SUPPORT_INET6 */
    78 
    7975#endif  /* of #ifndef _AH6_H_ */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ah_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 *
     
    8282
    8383#include <net/net.h>
     84#include <net/net_endian.h>
    8485#include <net/if.h>
    8586#include <net/if_loop.h>
     
    9293
    9394#include <netinet/in.h>
    94 #include <netinet6/in6.h>
    95 #include <netinet6/in6_var.h>
     95#include <netinet/in_var.h>
     96#include <netinet/ip.h>
     97#include <netinet/ip_var.h>
     98#include <netinet/ip_icmp.h>
    9699#include <netinet6/nd6.h>
    97 #include <netinet/ip6.h>
    98 #include <netinet6/ip6_var.h>
    99 #include <netinet/icmp6.h>
    100100#include <netinet6/ah.h>
    101101#include <netinet6/ah6.h>
    102102
    103 #ifdef SUPPORT_INET6
     103#ifdef _IP6_CFG
    104104
    105105/*
     
    116116        }
    117117
    118 #endif /* of #ifdef SUPPORT_INET6 */
     118#endif /* of #ifdef _IP6_CFG */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/dest6.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 *
     
    8888#include <net/ppp_ipcp.h>
    8989#include <net/net.h>
     90#include <net/net_endian.h>
    9091#include <net/net_buf.h>
    9192#include <net/net_count.h>
    9293
    9394#include <netinet/in.h>
    94 #include <netinet6/in6.h>
    95 #include <netinet6/in6_var.h>
     95#include <netinet/in_var.h>
     96#include <netinet/ip.h>
     97#include <netinet/ip_var.h>
     98#include <netinet/ip_icmp.h>
    9699#include <netinet6/nd6.h>
    97 #include <netinet/ip6.h>
    98 #include <netinet6/ip6_var.h>
    99 #include <netinet/icmp6.h>
    100100
    101 #ifdef SUPPORT_INET6
     101#ifdef _IP6_CFG
    102102
    103103/*
     
    163163        }
    164164
    165 #endif /* of #ifdef SUPPORT_INET6 */
     165#endif /* of #ifdef _IP6_CFG */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/esp.h

    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 *  Copyright (C) 2008-2009 by Hokkaido Industrial Research Institute, JAPAN
     
    6868#define _ESP_H_
    6969
    70 #if defined(SUPPORT_INET6) || defined(SUPPORT_IPSEC)
    71 
    7270/*
    7371 *  RFC2406 暗号化ヘッダ
     
    129127#endif  /* of #ifdef T_IPSEC_REQUEST_DEFINED */
    130128
    131 #endif /* defined(SUPPORT_INET6) || defined(SUPPORT_IPSEC) */
    132 
    133129#endif  /* of #ifndef _ESP_H_ */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/esp6.h

    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 *
     
    6767#define _ESP6_H_
    6868
    69 #ifdef SUPPORT_INET6
    70 
    7169/*
    7270 *  関数
     
    7573extern uint_t esp6_input (T_NET_BUF **inputp, uint_t *offp, uint_t *nextp);
    7674
    77 #endif  /* of #ifdef SUPPORT_INET6 */
    78 
    7975#endif  /* of #ifndef _ESP6_H_ */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/esp_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 *
     
    8888#include <net/ppp_ipcp.h>
    8989#include <net/net.h>
     90#include <net/net_endian.h>
    9091#include <net/net_buf.h>
    9192#include <net/net_count.h>
    9293
    9394#include <netinet/in.h>
    94 #include <netinet6/in6.h>
    95 #include <netinet6/in6_var.h>
     95#include <netinet/in_var.h>
     96#include <netinet/ip.h>
     97#include <netinet/ip_var.h>
     98#include <netinet/ip_icmp.h>
    9699#include <netinet6/nd6.h>
    97 #include <netinet/ip6.h>
    98 #include <netinet6/ip6_var.h>
    99 #include <netinet/icmp6.h>
    100100#include <netinet6/ah.h>
    101101#include <netinet6/ah6.h>
     
    103103#include <netinet6/esp6.h>
    104104
    105 #ifdef SUPPORT_INET6
     105#ifdef _IP6_CFG
    106106
    107107/*
     
    122122        }
    123123
    124 #endif /* of #ifdef SUPPORT_INET6 */
     124#endif /* of #ifdef _IP6_CFG */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/frag6.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 *
     
    9292#include <net/ppp_ipcp.h>
    9393#include <net/net.h>
     94#include <net/net_endian.h>
    9495#include <net/net_buf.h>
    9596#include <net/net_var.h>
     
    9798
    9899#include <netinet/in.h>
    99 #include <netinet6/in6.h>
    100 #include <netinet6/in6_var.h>
     100#include <netinet/in_var.h>
     101#include <netinet/ip.h>
     102#include <netinet/ip_var.h>
     103#include <netinet/ip_icmp.h>
    101104#include <netinet6/nd6.h>
    102 #include <netinet/ip6.h>
    103 #include <netinet6/ip6_var.h>
    104 #include <netinet/icmp6.h>
    105 
    106 #ifdef SUPPORT_INET6
     105
     106#ifdef _IP6_CFG
    107107
    108108#ifdef IP6_CFG_FRAGMENT
     
    606606                        /* 送信先アドレスを元に戻す。*/
    607607                        ip6h = GET_IP6_HDR(input);
    608                         ip6h->dst = ip6_frag_dest[ip6fq - ip6_frag_queue];
     608                        memcpy(&ip6h->dst, &ip6_frag_dest[ip6fq - ip6_frag_queue], sizeof(T_IN6_ADDR));
    609609
    610610                        /* offp を、再構成した断片の先頭に設定する。*/
     
    669669        }
    670670
    671 #endif /* of #ifdef SUPPORT_INET6 */
     671#endif /* of #ifdef _IP6_CFG */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/icmp6.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 *
     
    106106#include <sil.h>
    107107#include <t_syslog.h>
     108#include "tinet_cfg.h"
    108109
    109110#endif  /* of #ifdef TARGET_KERNEL_ASP */
     
    113114#include <s_services.h>
    114115#include <t_services.h>
     116#include "tinet_id.h"
    115117
    116118#endif  /* of #ifdef TARGET_KERNEL_JSP */
     
    124126#include <net/ethernet.h>
    125127#include <net/net.h>
     128#include <net/net_endian.h>
    126129#include <net/net_buf.h>
    127130#include <net/net_timer.h>
     
    130133#include <netinet/in.h>
    131134#include <netinet/in_var.h>
    132 #include <netinet6/in6.h>
    133 #include <netinet6/in6_var.h>
    134 #include <netinet/ip6.h>
    135 #include <netinet6/ip6_var.h>
    136 #include <netinet/icmp6.h>
     135#include <netinet/ip.h>
     136#include <netinet/ip_var.h>
     137#include <netinet/ip_icmp.h>
     138#include <netinet/tcp.h>
     139#include <netinet/tcp_var.h>
     140#include <netinet/udp_var.h>
     141
    137142#include <netinet6/nd6.h>
    138 #include <netinet/tcp.h>
    139 #include <netinet/tcp_timer.h>
    140 #include <netinet/tcp_var.h>
    141 
    142 #ifdef SUPPORT_INET6
     143
     144#ifdef _IP6_CFG
    143145
    144146/*
     
    178180                return;
    179181                }
    180         ip6h->src = ia->addr;
     182        memcpy(&ip6h->src, &ia->addr, sizeof(T_IN6_ADDR));
    181183
    182184        icmp6h = GET_ICMP6_HDR(output, off);
     
    241243
    242244        /* IPv6 ヘッダの発信元アドレスと宛先アドレスを入替える。*/
    243         dst       = ip6h->dst;
    244         ip6h->dst = ip6h->src;
    245         ip6h->src = dst;
     245        memcpy(&dst, &ip6h->dst, sizeof(T_IN6_ADDR));
     246        memcpy(&ip6h->dst, &ip6h->src, sizeof(T_IN6_ADDR));
     247        memcpy(&ip6h->src, &dst, sizeof(T_IN6_ADDR));
    246248
    247249        /*
     
    256258                        }
    257259                else
    258                         ip6h->src = ia->addr;
     260                        memcpy(&ip6h->src, &ia->addr, sizeof(T_IN6_ADDR));
    259261                }
    260262
    261263        /* 次ヘッダとホップリミットを設定する。*/
    262264        ip6h->next = IPPROTO_ICMPV6;
    263         ip6h->hlim = IP_DEFTTL;
     265        ip6h->hlim = IP6_DEFTTL;
    264266
    265267        /* チェックサムを計算する。*/
     
    299301        loff = ip6_lasthdr(input, poff + ICMP6_HDR_SIZE, IPPROTO_IPV6, &next);
    300302
    301         /* 最終ヘッダが TCP のみ対応する。*/
    302         if (loff >= 0 && next == IPPROTO_TCP) {
    303 
    304 #ifdef SUPPORT_TCP
     303        /* 最終ヘッダが TCP/UDP のみ対応する。*/
     304        if (loff >= 0 && (next == IPPROTO_TCP || next == IPPROTO_UDP)) {
    305305
    306306                memcpy(GET_IP6_HDR(input), input->buf + (loff + ICMP6_HDR_SIZE),
    307307                                           input->len - (loff + ICMP6_HDR_SIZE));
    308308                input->len -= loff + ICMP6_HDR_SIZE;
    309                 tcp_notify(input, icmp6h->code == ICMP6_DST_UNREACH_NOPORT ? EV_CNNRF : EV_HURCH);
    310 
    311 #endif  /* of #ifdef SUPPORT_TCP */
     309
     310#if defined(SUPPORT_TCP)
     311
     312                if (next == IPPROTO_TCP)
     313
     314                        tcp_notify(input, icmp6h->code == ICMP6_DST_UNREACH_NOPORT ? EV_CNNRF : EV_HURCH);
     315
     316#endif  /* of #if defined(SUPPORT_TCP) */
     317
     318#if defined(SUPPORT_UDP) && TNUM_UDP6_CEPID > 0
     319
     320                if (next == IPPROTO_UDP)
     321
     322                        udp6_notify(input, icmp6h->code == ICMP6_DST_UNREACH_NOPORT ? EV_CNNRF : EV_HURCH);
     323
     324#endif  /* of #if defined(SUPPORT_UDP) && TNUM_UDP6_CEPID > 0 */
    312325
    313326                }
     
    340353#endif  /* of #if NUM_IN6_HOSTCACHE_ENTRY > 0 */
    341354
    342 #if NUM_REDIRECT_ROUTE_ENTRY > 0
     355#if defined(NUM_IN6_REDIRECT_ROUTE_ENTRY)
     356#if NUM_IN6_REDIRECT_ROUTE_ENTRY > 0
    343357
    344358/*
     
    350364{
    351365        T_IP6_HDR               *ip6h;
    352         T_IN6_ADDR              *gw;
     366        const T_IN6_ADDR        *gw;
    353367        T_ND_REDIRECT_HDR       *rdh;
    354368        T_ND_OPT_HDR            *opth;
     
    440454        }
    441455
    442 #endif  /* of #if NUM_REDIRECT_ROUTE_ENTRY > 0 */
     456#endif  /* of #if NUM_IN6_REDIRECT_ROUTE_ENTRY > 0 */
     457#endif  /* of #if defined(NUM_IN6_REDIRECT_ROUTE_ENTRY) */
    443458
    444459/*
     
    472487
    473488        /* チェックサムを計算する。*/
    474         if ((in6_cksum(input, IPPROTO_ICMPV6, off, ntohs(ip6h->plen) - (off - IF_IP_HDR_SIZE)) & 0xffff) != 0) {
     489        if ((in6_cksum(input, IPPROTO_ICMPV6, off, ntohs(ip6h->plen) - (off - IF_IP6_HDR_SIZE)) & 0xffff) != 0) {
    475490                NET_COUNT_ICMP6(net_count_icmp6[NC_ICMP6_IN_ERR_PACKETS], 1);
    476491                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInErrors, 1);
     
    530545                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInRedirects, 1);
    531546
    532 #if NUM_REDIRECT_ROUTE_ENTRY > 0
     547#if defined(NUM_IN6_REDIRECT_ROUTE_ENTRY)
     548#if NUM_IN6_REDIRECT_ROUTE_ENTRY > 0
    533549
    534550                if (code != 0 || len < ND_REDIRECT_HDR_SIZE)
     
    537553                return IPPROTO_DONE;
    538554
    539 #else   /* of #if NUM_REDIRECT_ROUTE_ENTRY > 0 */
     555#else   /* of #if NUM_IN6_REDIRECT_ROUTE_ENTRY > 0 */
    540556
    541557                syslog(LOG_WARNING, "[ICMP6] redirect ignored.");
    542558
    543 #endif  /* of #if NUM_REDIRECT_ROUTE_ENTRY > 0 */
     559#endif  /* of #if NUM_IN6_REDIRECT_ROUTE_ENTRY > 0 */
     560#else   /* of #if defined(NUM_IN6_REDIRECT_ROUTE_ENTRY) */
     561
     562                syslog(LOG_WARNING, "[ICMP6] redirect ignored.");
     563
     564#endif  /* of #if defined(NUM_IN6_REDIRECT_ROUTE_ENTRY) */
    544565
    545566                break;
     
    571592        case ICMP6_FQDN_QUERY:                  /* FQDN 照会                      */
    572593        case ICMP6_FQDN_REPLY:                  /* FQDN 応答                      */
    573                 syslog(LOG_WARNING, "[ICMP6] unsupported type: %d.", icmp6h->type);
     594                syslog(LOG_INFO, "[ICMP6] unsupported type: %d.", icmp6h->type);
    574595                break;
    575596
     
    693714        }
    694715
    695 #endif /* of #ifdef SUPPORT_INET6 */
     716#endif /* of #ifdef _IP6_CFG */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/if6_ether.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 *
     
    8787#include <net/if_arp.h>
    8888#include <net/net.h>
     89#include <net/net_endian.h>
    8990#include <net/net_timer.h>
    9091#include <net/net_buf.h>
     
    9293
    9394#include <netinet/in.h>
     95#include <netinet/in_var.h>
    9496#include <netinet/ip.h>
    9597#include <netinet/if_ether.h>
     
    98100#include <netinet6/in6_var.h>
    99101
    100 #include <net/if6_var.h>
     102#include <net/if_var.h>
    101103
    102 #if defined(SUPPORT_INET6) && defined(SUPPORT_ETHER)
     104#if defined(_IP6_CFG) && defined(SUPPORT_ETHER)
    103105
    104106/*
     
    107109
    108110void
    109 ether_map_ipv6_multicast (T_ETHER_ADDR *eaddr, T_IN6_ADDR *maddr)
     111ether_map_ipv6_multicast (T_ETHER_ADDR *eaddr, const T_IN6_ADDR *maddr)
    110112{
    111113        eaddr->lladdr[0] = UINT_C(0x33);
     
    117119        }
    118120
    119 #endif /* of #if defined(SUPPORT_INET6) && defined(SUPPORT_ETHER) */
     121#endif /* of #if defined(_IP6_CFG) && defined(SUPPORT_ETHER) */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/if6_ether.h

    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 *
     
    6868#define _IF6_ETHER_H_
    6969
    70 #ifdef SUPPORT_INET6
    71 
    7270/*
    7371 *  関数
    7472 */
    7573
    76 extern void ether_map_ipv6_multicast (T_ETHER_ADDR *eaddr, T_IN6_ADDR *maddr);
    77 
    78 #endif  /* of #ifdef SUPPORT_INET6 */
     74extern void ether_map_ipv6_multicast (T_ETHER_ADDR *eaddr, const T_IN6_ADDR *maddr);
    7975
    8076#endif  /* of #ifndef _IF6_ETHER_H_ */
  • 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 */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6.h

    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 *
     
    103103
    104104/*
     105 *  IPv6 アドレス構造
     106 *
     107 *    RFC4291(RFC1884、RFC2373、RFC3513 のアップデート)
     108 */
     109
     110/*
    105111 *  IPv6 アドレス
    106112 */
     
    150156
    151157/*
    152  *  アドレスの定義
    153  */
    154 
    155 #ifdef _NET_CFG_BYTE_ORDER
    156 
    157 #if _NET_CFG_BYTE_ORDER == _NET_CFG_BIG_ENDIAN
    158 
    159 #define IPV6_ADDR_INT32_ONE             ULONG_C(0x00000001)
    160 #define IPV6_ADDR_INT32_TWO             ULONG_C(0x00000002)
    161 #define IPV6_ADDR_INT32_0000FFFF        ULONG_C(0x0000ffff)
    162 #define IPV6_ADDR_INT32_MNL             ULONG_C(0xff010000)
    163 #define IPV6_ADDR_INT32_MLL             ULONG_C(0xff020000)
    164 #define IPV6_ADDR_INT32_ULL             ULONG_C(0xfe800000)
    165 #define IPV6_ADDR_INT16_ULL             UINT_C(0xfe80)
    166 #define IPV6_ADDR_INT16_USL             UINT_C(0xfec0)
    167 #define IPV6_ADDR_INT16_MLL             UINT_C(0xff02)
    168 
    169 #elif _NET_CFG_BYTE_ORDER == _NET_CFG_LITTLE_ENDIAN
    170 
    171 #define IPV6_ADDR_INT32_ONE             ULONG_C(0x01000000)
    172 #define IPV6_ADDR_INT32_TWO             ULONG_C(0x02000000)
    173 #define IPV6_ADDR_INT32_0000FFFF        ULONG_C(0xffff0000)
    174 #define IPV6_ADDR_INT32_MNL             ULONG_C(0x000001ff)
    175 #define IPV6_ADDR_INT32_MLL             ULONG_C(0x000002ff)
    176 #define IPV6_ADDR_INT32_ULL             ULONG_C(0x000080fe)
    177 #define IPV6_ADDR_INT16_ULL             UINT_C(0x80fe)
    178 #define IPV6_ADDR_INT16_USL             UINT_C(0xc0fe)
    179 #define IPV6_ADDR_INT16_MLL             UINT_C(0x02ff)
    180 
    181 #endif  /* #if _NET_CFG_BYTE_ORDER == _NET_CFG_BIG_ENDIAN */
    182 
    183 #endif  /* of #ifdef _NET_CFG_BYTE_ORDER */
    184 
    185 /*
    186158 *  特別なアドレスのチェック
    187159 */
     
    197169        (memcmp((void *)(a), (void *)&in6_addr_unspecified, sizeof(T_IN6_ADDR) - 1) == 0 && \
    198170         (a)->s6_addr8[15] == 0x01)
    199 
    200 /* IPv4 互換 */
    201 
    202 #define IN6_IS_ADDR_V4COMPAT(a)         \
    203         (memcmp((void *)(a), (void *)&in6_addr_unspecified, sizeof(T_IN6_ADDR) - 4) == 0 && \
    204          (a)->s6_addr32[3] > IPV6_ADDR_INT32_ONE)
    205 
    206 /* IPv4 マップ */
    207 
    208 #define IN6_IS_ADDR_V4MAPPED(a)         \
    209         (((a)->s6_addr32[0] == ULONG_C(0x00000000)) && \
    210          ((a)->s6_addr32[1] == ULONG_C(0x00000000)) && \
    211          ((a)->s6_addr32[2] == IPV6_ADDR_INT32_0000FFFF))
    212171
    213172/*
     
    248207#define IN6_IS_ADDR_MULTICAST(a)        ((a)->s6_addr8[0] == UINT_C(0xff))
    249208
    250 /* 要請マルチキャスト */
    251 
    252 #define IN6_IS_ADDR_NS_MULTICAST(a)     \
    253         (((a)->s6_addr32[0] == IPV6_ADDR_INT32_MLL) && \
    254          ((a)->s6_addr32[1] == ULONG_C(0x00000000)) && \
    255          ((a)->s6_addr32[2] == IPV6_ADDR_INT32_ONE) && \
    256          ((a)->s6_addr8[12] == UINT_C(0xff)))
    257 
    258209/*
    259210 *  同一のチェック
     
    272223 */
    273224
    274 #define IPV6_DEFAULT_MULTICAST_HOPS     1       /* マルチキャスト時のホップリミットの規定値 */
     225#define IPV6_DEFAULT_MULTICAST_HOPS     1       /* マルチキャスト時のホップリミットの規定値 */
     226#define ND6_INFINITE_LIFETIME           0xffffffff      /* アドレスの無制限有効時間         */
    275227
    276228/*
     
    282234        uint16_t        portno;         /* ポート番号        */
    283235        } T_IPV6EP;
     236
     237#define T_IPV6EP_DEFINED
    284238
    285239/*
     
    299253        /* 実装依存 */
    300254        } T_TCP6_CREP;
    301 
    302 #if defined(SUPPORT_INET6)
    303 #define T_TCP_CREP      T_TCP6_CREP
    304 #endif
    305255
    306256/*
     
    316266        } T_UDP6_CCEP;
    317267
    318 #if defined(SUPPORT_INET6)
    319 #define T_UDP_CCEP      T_UDP6_CCEP
    320 #endif
    321 
    322 /*
    323  *  IPv4 と IPv6 をコンパイル時に選択するためのマクロ
    324  */
    325 
    326 #if defined(SUPPORT_INET6)
    327 
    328 #define T_IN_ADDR                       T_IN6_ADDR
    329 #define T_IPEP                          T_IPV6EP
    330 #define IP_ADDRANY                      IPV6_ADDRANY
    331 
    332 #define IN_ARE_ADDR_EQUAL(n,h)          IN6_ARE_ADDR_EQUAL(n,h)
    333 #define IN_ARE_NET_ADDR_EQUAL(n,h)      IN6_ARE_ADDR_EQUAL(n,h)
    334 #define IN_COPY_TO_NET(d,s)             memcpy(d,s,sizeof(T_IN6_ADDR))
    335 #define IN_COPY_TO_HOST(d,s)            memcpy(d,s,sizeof(T_IN6_ADDR))
    336 #define IN_IS_ADDR_MULTICAST(a)         IN6_IS_ADDR_MULTICAST(a)
    337 #define IN_IS_NET_ADDR_MULTICAST(a)     IN6_IS_ADDR_MULTICAST(a)
    338 #define IN_IS_ADDR_ANY(a)               IN6_IS_ADDR_UNSPECIFIED(a)
    339 
    340 #endif  /* of #if defined(SUPPORT_INET6) */
    341 
    342268/*
    343269 *  前方参照
     
    356282 */
    357283
    358 extern T_IN6_ADDR in6_addr_unspecified;
    359 extern T_IN6_ADDR in6_addr_linklocal_allnodes;
    360 extern T_IN6_ADDR in6_addr_linklocal_allrouters;
     284extern const T_IN6_ADDR in6_addr_unspecified;
     285extern const T_IN6_ADDR in6_addr_linklocal_allnodes;
     286extern const T_IN6_ADDR in6_addr_linklocal_allrouters;
    361287
    362288#define ipv6_addrany    in6_addr_unspecified
     
    366292 */
    367293
    368 extern char *ipv62str (char *buf, const T_IN6_ADDR *p_ip6addr);
    369 extern ER_UINT in6_get_maxnum_ifaddr (void);
     294extern char *ipv62str (char *buf, const T_IN6_ADDR *p_addr);
     295extern uint_t in6_get_maxnum_ifaddr (void);
    370296extern const T_IN6_ADDR *in6_get_ifaddr (int_t index);
     297extern ER in6_upd_ifaddr (T_IN6_ADDR *addr, uint_t prefixlen,
     298                          uint32_t vltime, uint32_t pltime);
     299extern ER in6_del_ifaddr (T_IN6_ADDR *addr);
     300extern T_IN6_ADDR *in6_make_ipv4mapped (T_IN6_ADDR *dst, T_IN4_ADDR src);
     301extern bool_t in6_is_addr_ipv4mapped (const T_IN6_ADDR *addr);
    371302
    372303#endif  /* of #ifndef _IN6_H_ */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6_ifattach.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 *
     
    8787#include <net/if_arp.h>
    8888#include <net/net.h>
     89#include <net/net_endian.h>
     90
     91#include <netinet/in.h>
     92#include <netinet/in_var.h>
    8993
    9094#include <netinet6/in6.h>
     
    9397#include <netinet6/in6_ifattach.h>
    9498
    95 #include <net/if6_var.h>
    96 
    97 #ifdef SUPPORT_INET6
     99#include <net/if_var.h>
     100
     101#ifdef _IP6_CFG
    98102
    99103/*
     
    126130#endif  /* of #ifdef SUPPORT_ETHER */
    127131
     132#ifdef SUPPORT_PPP
     133
     134/*
     135 * get_rand_ifid -- 乱数により、インタフェース識別子を設定する。
     136 */
     137
     138static ER
     139get_rand_ifid (T_IFNET *ifp, T_IN6_ADDR *ifra_addr)
     140{
     141        return E_OK;
     142        }
     143
     144#endif  /* of #ifdef SUPPORT_PPP */
     145
    128146#ifdef IP6_CFG_AUTO_LINKLOCAL
    129147
     
    149167
    150168        /* インタフェースのアドレス情報を更新する。*/
    151         if ((error = in6_update_ifa(ifp, &ifp->in_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL],
     169        if ((error = in6_update_ifa(ifp, &ifp->in6_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL],
    152170                                    &addr, 64, ND6_INFINITE_LIFETIME,
    153171                                               ND6_INFINITE_LIFETIME,
     
    171189#ifdef IP6_CFG_AUTO_LINKLOCAL
    172190
    173         if ((ifp->in_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL].flags & IN6_IFF_DEFINED) == 0)
     191        if ((ifp->in6_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL].flags & IN6_IFF_DEFINED) == 0)
    174192                if ((error = in6_ifattach_linklocal(ifp)) != E_OK)
    175193                        return error;
     
    180198        }
    181199
    182 #endif /* of #ifdef SUPPORT_INET6 */
     200#endif /* of #ifdef _IP6_CFG */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6_ifattach.h

    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 *
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6_rename.h

    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 *
     
    4141/* netinet6/in6.c */
    4242
     43#define in6_are_prefix_equal    _tinet_in6_are_prefix_equal
     44#define in6ifa_ifpwithrtrix     _tinet_in6ifa_ifpwithrtrix
     45#define in6_if_up               _tinet_in6_if_up
     46#define in6_if2idlen            _tinet_in6_if2idlen
     47#define in6_ifaddr_timer        _tinet_in6_ifaddr_timer
     48#define in6ifa_ifpwithix        _tinet_in6ifa_ifpwithix
     49#define in6_addr2maix           _tinet_in6_addr2maix
     50#define in6_ifawithifp          _tinet_in6_ifawithifp
     51#define in6_addr2ifaix          _tinet_in6_addr2ifaix
     52#define in6_update_ifa          _tinet_in6_update_ifa
     53#define in6_ifainit             _tinet_in6_ifainit
     54#define in6_addrwithifp         _tinet_in6_addrwithifp
    4355#define in6_addr_loopback       _tinet_in6_addr_loopback
    44 #define in6_ifainit             _tinet_in6_ifainit
    45 #define in6_addr2ifaix          _tinet_in6_addr2ifaix
    46 #define in6_addr2maix           _tinet_in6_addr2maix
    47 #define in6_update_ifa          _tinet_in6_update_ifa
    48 #define in6ifa_ifpwithix        _tinet_in6ifa_ifpwithix
    49 #define in6ifa_ifpwithrtrix     _tinet_in6ifa_ifpwithrtrix
    50 #define in6_ifawithifp          _tinet_in6_ifawithifp
    51 #define in6_if_up               _tinet_in6_if_up
    52 #define in6_rtalloc             _tinet_in6_rtalloc
    53 #define in6_are_prefix_equal    _tinet_in6_are_prefix_equal
    54 #define in6_addr_linklocal_allrouters   \
    55                                 _tinet_in6_addr_linklocal_allrouters
    56 #define in6_addr_linklocal_allnodes     \
    57                                 _tinet_in6_addr_linklocal_allnodes
    58 #define in6_ifaddr_timer        _tinet_in6_ifaddr_timer
    5956
    6057/* netinet6/in6_ifattach.c */
     
    6461/* netinet6/in6_subr.c */
    6562
     63#define inn6_is_dstaddr_accept  _tinet_inn6_is_dstaddr_accept
     64#define in6_lookup_ifaddr       _tinet_in6_lookup_ifaddr
     65#define in6_rtalloc             _tinet_in6_rtalloc
     66#define in6_get_ifaddr          _tinet_in6_get_ifaddr
     67#define in6_cksum               _tinet_in6_cksum
     68#define in6_gateway_lookup      _tinet_in6_gateway_lookup
     69#define in6_is_dstaddr_accept   _tinet_in6_is_dstaddr_accept
     70#define in6_hostcache_getmtu    _tinet_in6_hostcache_getmtu
     71#define in6_set_header          _tinet_in6_set_header
     72#define in6_get_datagram        _tinet_in6_get_datagram
     73#define in6_rtredirect          _tinet_in6_rtredirect
     74#define get_ip6_hdr_size        _tinet_get_ip6_hdr_size
     75#define in6_plen2pmask          _tinet_in6_plen2pmask
     76#define in6_rtnewentry          _tinet_in6_rtnewentry
     77#define in6_rtinit              _tinet_in6_rtinit
     78#define in6_rttimer             _tinet_in6_rttimer
    6679#define in6_lookup_multi        _tinet_in6_lookup_multi
    67 #define get_ip6_hdr_size        _tinet_get_ip6_hdr_size
    68 #define in6_lookup_ifaddr       _tinet_in6_lookup_ifaddr
    69 #define in6_get_datagram        _tinet_in6_get_datagram
    70 #define in6_cksum               _tinet_in6_cksum
    71 #define in6_is_dstaddr_accept   _tinet_in6_is_dstaddr_accept
    72 #define in6_plen2pmask          _tinet_in6_plen2pmask
     80#define in6_hostcache_update    _tinet_in6_hostcache_update
    7381#define in6_init                _tinet_in6_init
    74 #define in6_rtredirect          _tinet_in6_rtredirect
    75 #define in6_gateway_lookup      _tinet_in6_gateway_lookup
    76 #define in6_set_header          _tinet_in6_set_header
    77 #define in6_hostcache_getmtu    _tinet_in6_hostcache_getmtu
    78 #define in6_hostcache_update    _tinet_in6_hostcache_update
    7982
    8083/* netinet6/if6_ether.c */
     
    151154/* netinet6/nd6_rtr.c */
    152155
     156#define nd6_get_prl             _tinet_nd6_get_prl
    153157#define nd6_router_lookup       _tinet_nd6_router_lookup
     158#define nd6_onlink_prefix_lookup        \
     159                                _tinet_nd6_onlink_prefix_lookup
     160#define nd6_defrtrlist_del      _tinet_nd6_defrtrlist_del
     161#define nd6_prefix_onlink       _tinet_nd6_prefix_onlink
     162#define nd6_get_drl             _tinet_nd6_get_drl
     163#define nd6_rtrsol_ctl          _tinet_nd6_rtrsol_ctl
    154164#define nd6_defrtrlist_timer    _tinet_nd6_defrtrlist_timer
     165#define nd6_ra_input            _tinet_nd6_ra_input
    155166#define nd6_prelist_timer       _tinet_nd6_prelist_timer
    156 #define nd6_ra_input            _tinet_nd6_ra_input
    157 #define nd6_rtrsol_ctl          _tinet_nd6_rtrsol_ctl
     167#define nd6_prefix_offlink      _tinet_nd6_prefix_offlink
     168#define nd6_defrtrlist_lookup   _tinet_nd6_defrtrlist_lookup
    158169#define ip6_defhlim             _tinet_ip6_defhlim
    159170#define nd6_reachable_time      _tinet_nd6_reachable_time
     
    162173                                _tinet_nd6_recalc_reachtm_interval
    163174#define nd6_retrans_time        _tinet_nd6_retrans_time
    164 #define nd6_defrtrlist_lookup   _tinet_nd6_defrtrlist_lookup
    165 #define nd6_prefix_onlink       _tinet_nd6_prefix_onlink
    166 #define nd6_prefix_offlink      _tinet_nd6_prefix_offlink
    167 #define nd6_get_prl             _tinet_nd6_get_prl
    168 #define nd6_get_drl             _tinet_nd6_get_drl
    169 #define nd6_defrtrlist_del      _tinet_nd6_defrtrlist_del
    170175
    171176/* netinet6/scope6.c */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6_subr.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 *
     
    122122#include <net/if_arp.h>
    123123#include <net/net.h>
     124#include <net/net_endian.h>
    124125#include <net/net_var.h>
    125126#include <net/net_buf.h>
     
    128129#include <netinet/in.h>
    129130#include <netinet/in_var.h>
    130 
    131 #include <netinet6/in6.h>
    132 #include <netinet6/in6_var.h>
    133 #include <netinet/ip6.h>
    134 #include <netinet6/ip6_var.h>
     131#include <netinet/ip.h>
     132#include <netinet/ip_var.h>
     133
     134#include <netinet6/nd6.h>
    135135#include <netinet6/ah.h>
    136 #include <netinet6/nd6.h>
    137 
    138 #include <net/if6_var.h>
    139 
    140 #ifdef SUPPORT_INET6
     136
     137#include <net/if_var.h>
     138
     139/*
     140 *  in6_make_ipv4mapped -- IPv4 射影アドレスを生成する。
     141 *
     142 *  注意:
     143 *    src はホストバイトオーダー
     144 *
     145 */
     146
     147T_IN6_ADDR *
     148in6_make_ipv4mapped (T_IN6_ADDR *dst, T_IN4_ADDR src)
     149{
     150        dst->s6_addr32[0] = ULONG_C(0x00000000);
     151        dst->s6_addr32[1] = ULONG_C(0x00000000);
     152        dst->s6_addr32[2] = IPV6_ADDR_INT32_0000FFFF;
     153        dst->s6_addr32[3] = htonl(src);
     154
     155        return dst;
     156        }
     157
     158#ifdef _IP6_CFG
     159
     160#if NUM_IN6_REDIRECT_ROUTE_ENTRY > 0
     161
     162/*
     163 *  in6_rtinit -- ルーティング表を初期化する。
     164 */
     165
     166void
     167in6_rtinit (void)
     168{
     169        int_t ix;
     170
     171        for (ix = 0; ix < NUM_IN6_STATIC_ROUTE_ENTRY; ix ++)
     172                routing6_tbl[ix].flags = IN_RTF_DEFINED;
     173
     174        for ( ; ix < NUM_IN6_ROUTE_ENTRY; ix ++)
     175                routing6_tbl[ix].flags = 0;
     176        }
     177
     178/*
     179 *  in6_rtnewentry -- 新しいエントリを獲得する。
     180 */
     181
     182T_IN6_RTENTRY *
     183in6_rtnewentry (uint8_t flags, uint32_t tmo)
     184{
     185        SYSTIM          now;
     186        T_IN6_RTENTRY   *rt, *frt = NULL;
     187        int_t           ix;
     188
     189        /* 空きエントリを探す。*/
     190        for (ix = NUM_IN6_STATIC_ROUTE_ENTRY; ix < NUM_IN6_ROUTE_ENTRY; ix ++) {
     191                rt = &routing6_tbl[ix];
     192                if ((routing6_tbl[ix].flags & IN_RTF_DEFINED) == 0) {
     193                        frt = rt;
     194                        break;
     195                        }
     196                }
     197
     198        /* expire の単位は [s]。*/
     199        syscall(get_tim(&now));
     200        now /= SYSTIM_HZ;
     201
     202        if (frt == NULL) {
     203                /* 空きがなければ、有効時間がもっとも短いエントリを空きにする。*/
     204                T_IN6_RTENTRY   *srt = NULL;
     205                int_t           diff, sdiff = INT_MAX;
     206
     207                syscall(wai_sem(SEM_IN6_ROUTING_TBL));
     208                for (ix = NUM_IN6_STATIC_ROUTE_ENTRY; ix < NUM_IN6_ROUTE_ENTRY; ix ++) {
     209                        rt = &routing6_tbl[ix];
     210                        diff = (int_t)(rt->expire - now);
     211                        if (diff <= 0) {        /* rt->expire <= now */
     212                                /* 既に、有効時間が過ぎている。*/
     213                                frt = rt;
     214                                break;
     215                                }
     216                        else if (diff < sdiff) {
     217                                srt = rt;
     218                                sdiff = diff;
     219                                }
     220                        }
     221                if (frt == NULL)
     222                        frt = srt;
     223                frt->flags = 0;
     224                syscall(sig_sem(SEM_IN6_ROUTING_TBL));
     225                }
     226
     227        frt->flags  = (uint8_t)(flags | IN_RTF_DEFINED);
     228        frt->expire = now + tmo / SYSTIM_HZ;
     229        return frt;
     230        }
     231
     232/*
     233 *  in6_rttimer -- ルーティング表の管理タイマー
     234 */
     235
     236void
     237in6_rttimer (void)
     238{
     239        SYSTIM  now;
     240        int_t   ix;
     241
     242        /* expire の単位は [s]。*/
     243        syscall(get_tim(&now));
     244        now /= SYSTIM_HZ;
     245
     246        syscall(wai_sem(SEM_IN6_ROUTING_TBL));
     247        for (ix = NUM_IN6_STATIC_ROUTE_ENTRY; ix < NUM_IN6_ROUTE_ENTRY; ix ++)
     248                if ((routing6_tbl[ix].flags & IN_RTF_DEFINED) &&
     249                    (int_t)(routing6_tbl[ix].expire - now) <= 0)
     250                        routing6_tbl[ix].flags = 0;
     251        syscall(sig_sem(SEM_IN6_ROUTING_TBL));
     252        }
     253
     254#endif  /* of #if NUM_IN6_REDIRECT_ROUTE_ENTRY > 0 */
    141255
    142256#if NUM_IN6_HOSTCACHE_ENTRY > 0
     
    155269
    156270T_IN6_IFADDR *
    157 in6_lookup_ifaddr (T_IFNET *ifp, T_IN6_ADDR *addr)
     271in6_lookup_ifaddr (T_IFNET *ifp, const T_IN6_ADDR *addr)
    158272{
    159273        int_t ix;
    160274
    161275        for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
    162                 if ((ifp->in_ifaddrs[ix].flags & IN6_IFF_DEFINED) &&
    163                     IN6_ARE_ADDR_EQUAL(addr, &ifp->in_ifaddrs[ix].addr))
    164                         return &ifp->in_ifaddrs[ix];
     276                if ((ifp->in6_ifaddrs[ix].flags & IN6_IFF_DEFINED) &&
     277                    IN6_ARE_ADDR_EQUAL(addr, &ifp->in6_ifaddrs[ix].addr))
     278                        return &ifp->in6_ifaddrs[ix];
    165279                }
    166280        return NULL;
     
    172286
    173287bool_t
    174 in6_lookup_multi (T_IFNET *ifp, T_IN6_ADDR *maddr)
     288in6_lookup_multi (T_IFNET *ifp, const T_IN6_ADDR *maddr)
    175289{
    176290        int_t ix;
    177291
    178292        for (ix = MAX_IN6_MADDR_CNT; ix -- > 0; )
    179                 if (IN6_ARE_ADDR_EQUAL(maddr, &ifp->in_maddrs[ix]))
     293                if (IN6_ARE_ADDR_EQUAL(maddr, &ifp->in6_maddrs[ix]))
    180294                        return true;
    181295        return false;
     
    188302ER
    189303in6_set_header (T_NET_BUF *nbuf, uint_t len,
    190                 T_IN6_ADDR *dstaddr, T_IN6_ADDR *srcaddr,
     304                const T_IN6_ADDR *dstaddr, const T_IN6_ADDR *srcaddr,
    191305                uint8_t next, uint8_t hlim)
    192306{
     
    216330                memset(&ip6h->dst, 0, sizeof(T_IN6_ADDR));
    217331        else
    218                 ip6h->dst = *dstaddr;
     332                memcpy(&ip6h->dst, dstaddr, sizeof(T_IN6_ADDR));
    219333
    220334        if (srcaddr == NULL)
    221335                memset(&ip6h->src, 0, sizeof(T_IN6_ADDR));
    222336        else
    223                 ip6h->src = *srcaddr;
     337                memcpy(&ip6h->src, srcaddr, sizeof(T_IN6_ADDR));
    224338
    225339        return E_OK;
     
    232346ER
    233347in6_get_datagram (T_NET_BUF **nbuf, uint_t len, uint_t maxlen,
    234                   T_IN6_ADDR *dstaddr, T_IN6_ADDR *srcaddr,
     348                  const T_IN6_ADDR *dstaddr, const T_IN6_ADDR *srcaddr,
    235349                  uint8_t next, uint8_t hlim, ATR nbatr, TMO tmout)
    236350{
     
    269383 */
    270384
    271 ER_UINT
     385uint_t
    272386in6_get_maxnum_ifaddr (void)
    273387{
     
    285399
    286400        if (index < NUM_IN6_IFADDR_ENTRY &&
    287             (ifp->in_ifaddrs[index].flags & IN6_IFF_DEFINED))
    288                 return &ifp->in_ifaddrs[index].addr;
     401            (ifp->in6_ifaddrs[index].flags & IN6_IFF_DEFINED))
     402                return &ifp->in6_ifaddrs[index].addr;
    289403        else
    290404                return NULL;
     
    296410
    297411char *
    298 ipv62str (char *buf, const T_IN6_ADDR *p_ip6addr)
    299 {
    300         static char     addr_sbuf[NUM_IPV6ADDR_STR_BUFF][sizeof("0123:4567:89ab:cdef:0123:4567:89ab:cdef")];
     412ipv62str (char *buf, const T_IN6_ADDR *p_addr)
     413{
     414        static char     addr_sbuf[NUM_IPV6ADDR_STR_BUFF][sizeof("0123:4567:89ab:cdef:0123:4567:255.255.255.255")];
    301415        static int_t    bix = NUM_IPV6ADDR_STR_BUFF;
    302416
    303417        bool_t  omit = false, zero = false;
    304418        char    *start;
    305         int_t   ix;
     419        int_t   ix, len6;
    306420
    307421        if (buf == NULL) {
     
    314428
    315429        start = buf;
    316         if (p_ip6addr == NULL) {
     430        if (p_addr == NULL || IN6_IS_ADDR_UNSPECIFIED(p_addr)) {
     431                *buf ++ = '0';
    317432                *buf ++ = ':';
    318433                *buf ++ = ':';
     434                *buf ++ = '0';
    319435                }
    320436        else {
    321                 for (ix = 0; ix < sizeof(T_IN6_ADDR) / 2; ix ++) {
     437                if (IN6_IS_ADDR_V4MAPPED(p_addr))
     438                        len6 = sizeof(T_IN6_ADDR) / 2 - 2;
     439                else
     440                        len6 = sizeof(T_IN6_ADDR) / 2;
     441                for (ix = 0; ix < len6; ix ++) {
    322442                        if (omit) {
    323                                 buf += convert_hexdigit(buf, ntohs(p_ip6addr->s6_addr16[ix]), 16, 0, ' ');
     443                                buf += convert_hexdigit(buf, ntohs(p_addr->s6_addr16[ix]), 16, 0, ' ');
    324444                                if (ix < 7)
    325445                                        *buf ++ = ':';
    326446                                }
    327                         else if (ix > 0 && ix < 7 && p_ip6addr->s6_addr16[ix] == 0)
     447                        else if (ix > 0 && ix < 7 && p_addr->s6_addr16[ix] == 0)
    328448                                zero = true;
    329449                        else {
     
    332452                                        *buf ++ = ':';
    333453                                        }
    334                                 buf += convert_hexdigit(buf, ntohs(p_ip6addr->s6_addr16[ix]), 16, 0, ' ');
     454                                buf += convert_hexdigit(buf, ntohs(p_addr->s6_addr16[ix]), 16, 0, ' ');
    335455                                if (ix < 7)
    336456                                        *buf ++ = ':';
    337457                                }
    338458                        }
     459
     460                if (len6 == sizeof(T_IN6_ADDR) / 2 - 2) {
     461                        T_IN4_ADDR ipv4addr;
     462
     463                        ipv4addr = ntohl(p_addr->s6_addr32[3]);
     464                        buf += convert_hexdigit(buf, (uint_t)((ipv4addr >> 24) & 0xff), 10, 0, ' ');
     465                        *(buf ++) = '.';
     466                        buf += convert_hexdigit(buf, (uint_t)((ipv4addr >> 16) & 0xff), 10, 0, ' ');
     467                        *(buf ++) = '.';
     468                        buf += convert_hexdigit(buf, (uint_t)((ipv4addr >>  8) & 0xff), 10, 0, ' ');
     469                        *(buf ++) = '.';
     470                        buf += convert_hexdigit(buf, (uint_t)((ipv4addr      ) & 0xff), 10, 0, ' ');
     471                        }
    339472                }
    340473        *buf = '\0';
     
    370503
    371504/*
    372  *  in6_is_dstaddr_accept -- 宛先アドレスとして正しいかチェックする。
    373  */
    374 
    375 bool_t
    376 in6_is_dstaddr_accept (T_IN6_ADDR *myaddr, T_IN6_ADDR *dstaddr)
    377 {
    378         if (IN6_IS_ADDR_UNSPECIFIED(myaddr))
    379                 return in6_lookup_ifaddr(IF_GET_IFNET(), dstaddr) != NULL;
    380         else
    381                 return IN6_ARE_ADDR_EQUAL(dstaddr, myaddr);
    382         }
    383 
    384 /*
    385505 *  get_ip6_hdr_size -- 拡張ヘッダも含めた IPv6 ヘッダ長を返す。
    386506 */
    387507
    388508uint_t
    389 get_ip6_hdr_size (T_IP6_HDR *iph)
    390 {
    391         uint_t  size = IP6_HDR_SIZE, hsize;
    392         uint8_t curr = iph->next, next;
    393         uint8_t *hdr = ((uint8_t *)iph) + IP6_HDR_SIZE;
     509get_ip6_hdr_size (T_NET_BUF *nbuf)
     510{
     511        T_IP6_HDR       *iph = GET_IP6_HDR(nbuf);
     512        uint_t          size = IP6_HDR_SIZE, hsize;
     513        uint8_t         curr = iph->next, next;
     514        uint8_t         *hdr = ((uint8_t *)iph) + IP6_HDR_SIZE;
    394515
    395516        while (1) {
     
    436557 */
    437558
    438 T_IN6_ADDR *
    439 in6_rtalloc (T_IFNET *ifp, T_IN6_ADDR *dst)
     559const T_IN6_ADDR *
     560in6_rtalloc (T_IFNET *ifp, const T_IN6_ADDR *dst)
    440561{
    441562        if (IN6_IS_ADDR_LINKLOCAL(dst) || IN6_IS_ADDR_MULTICAST(dst))
     
    456577                /* 推奨有効時間内のアドレスを探索する。*/
    457578                for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
    458                         ia = &ifp->in_ifaddrs[ix];
     579                        ia = &ifp->in6_ifaddrs[ix];
    459580                        if (IFA6_IS_READY(ia) &&
    460581                            in6_are_prefix_equal(dst, &ia->addr, ia->prefix_len) &&
     
    467588                /* 有効時間内のアドレスを探索する。*/
    468589                for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
    469                         ia = &ifp->in_ifaddrs[ix];
     590                        ia = &ifp->in6_ifaddrs[ix];
    470591                        if (IFA6_IS_READY(ia) &&
    471592                            in6_are_prefix_equal(dst, &ia->addr, ia->prefix_len) &&
     
    485606                 */
    486607
    487 #if NUM_ROUTE_ENTRY > 0
    488 
    489                 syscall(wai_sem(SEM_IN_ROUTING_TBL));
    490                 for (ix = NUM_ROUTE_ENTRY; ix --; ) {
    491                         if ((routing_tbl[ix].flags & IN_RTF_DEFINED) &&
    492                             in6_are_prefix_equal(dst, &routing_tbl[ix].target,
    493                                                        routing_tbl[ix].prefix_len)) {
     608#if NUM_IN6_ROUTE_ENTRY > 0
     609
     610                syscall(wai_sem(SEM_IN6_ROUTING_TBL));
     611                for (ix = NUM_IN6_ROUTE_ENTRY; ix --; ) {
     612                        if ((routing6_tbl[ix].flags & IN_RTF_DEFINED) &&
     613                            in6_are_prefix_equal(dst, &routing6_tbl[ix].target,
     614                                                       routing6_tbl[ix].prefix_len)) {
    494615
    495616                                /*
     
    498619                                 *  TMO_IN_REDIRECT の単位は [ms]。
    499620                                 */
    500                                 if (ix > NUM_STATIC_ROUTE_ENTRY) {
     621                                if (ix > NUM_IN6_STATIC_ROUTE_ENTRY) {
    501622                                        SYSTIM  now;
    502623
    503624                                        syscall(get_tim(&now));
    504                                         routing_tbl[ix].expire = now / SYSTIM_HZ + TMO_IN_REDIRECT / 1000;
     625                                        routing6_tbl[ix].expire = now / SYSTIM_HZ + TMO_IN_REDIRECT / 1000;
    505626                                        }
    506627
    507                                 syscall(sig_sem(SEM_IN_ROUTING_TBL));
    508                                 return &routing_tbl[ix].gateway;
     628                                syscall(sig_sem(SEM_IN6_ROUTING_TBL));
     629                                return &routing6_tbl[ix].gateway;
    509630                                }
    510631                        }
    511                 syscall(sig_sem(SEM_IN_ROUTING_TBL));
    512 
    513 #endif  /* of #if NUM_ROUTE_ENTRY > 0 */
     632                syscall(sig_sem(SEM_IN6_ROUTING_TBL));
     633
     634#endif  /* of #if NUM_IN6_ROUTE_ENTRY > 0 */
    514635
    515636                /*
     
    520641        }
    521642
    522 #if NUM_REDIRECT_ROUTE_ENTRY > 0
     643#if NUM_IN6_REDIRECT_ROUTE_ENTRY > 0
    523644
    524645/*
     
    526647 */
    527648
    528 T_IN_RTENTRY *
    529 in6_gateway_lookup (T_IN6_ADDR *gw)
     649T_IN6_RTENTRY *
     650in6_gateway_lookup (const T_IN6_ADDR *gw)
    530651{
    531652        int_t   ix;
    532653
    533         for (ix = NUM_ROUTE_ENTRY; ix --; )
    534                 if ((routing_tbl[ix].flags & IN_RTF_DEFINED) &&
    535                     IN6_ARE_ADDR_EQUAL(&routing_tbl[ix].gateway, gw))
    536                         return &routing_tbl[ix];
     654        for (ix = NUM_IN6_ROUTE_ENTRY; ix --; )
     655                if ((routing6_tbl[ix].flags & IN_RTF_DEFINED) &&
     656                    IN6_ARE_ADDR_EQUAL(&routing6_tbl[ix].gateway, gw))
     657                        return &routing6_tbl[ix];
    537658        return NULL;
    538659        }
     
    545666
    546667void
    547 in6_rtredirect (T_IN6_ADDR *gateway, T_IN6_ADDR *target, uint_t prefix_len, uint8_t flags, uint32_t tmo)
    548 {
    549         T_IN_RTENTRY    *frt;
    550 
    551         frt = in_rtnewentry(flags, tmo);
    552         frt->gateway    = *gateway;
    553         frt->target     = *target;
     668in6_rtredirect (const T_IN6_ADDR *gateway, const T_IN6_ADDR *target, uint_t prefix_len, uint8_t flags, uint32_t tmo)
     669{
     670        T_IN6_RTENTRY   *frt;
     671
     672        frt = in6_rtnewentry(flags, tmo);
     673        memcpy(&frt->gateway, gateway, sizeof(T_IN6_ADDR));
     674        memcpy(&frt->target, target, sizeof(T_IN6_ADDR));
    554675        frt->prefix_len = prefix_len;
    555676        }
    556677
    557 #endif  /* of #if NUM_REDIRECT_ROUTE_ENTRY > 0 */
     678#endif  /* of #if NUM_IN6_REDIRECT_ROUTE_ENTRY > 0 */
    558679
    559680#if NUM_IN6_HOSTCACHE_ENTRY > 0
     
    564685
    565686static T_IN6_HOSTCACHE_ENTRY*
    566 in6_hostcache_lookup (T_IN6_ADDR *dst)
     687in6_hostcache_lookup (const T_IN6_ADDR *dst)
    567688{
    568689        int_t ix;
     
    625746                return;
    626747                }
    627         hc->dst    = *dst;
     748        memcpy(&hc->dst, dst, sizeof(T_IN6_ADDR));
    628749        hc->expire = now + IN6_HOSTCACHE_EXPIRE;
    629750        hc->mtu    = mtu;
     
    637758
    638759uint32_t
    639 in6_hostcache_getmtu (T_IN6_ADDR *dst)
     760in6_hostcache_getmtu (const T_IN6_ADDR *dst)
    640761{
    641762        T_IN6_HOSTCACHE_ENTRY   *hc;
     
    679800in6_timer (void)
    680801{
    681 #if NUM_REDIRECT_ROUTE_ENTRY > 0
    682 
    683         in_rttimer();
    684 
    685 #endif  /* of #if NUM_REDIRECT_ROUTE_ENTRY > 0 */
     802#if NUM_IN6_REDIRECT_ROUTE_ENTRY > 0
     803
     804        in6_rttimer();
     805
     806#endif  /* of #if NUM_IN6_REDIRECT_ROUTE_ENTRY > 0 */
    686807
    687808#ifdef IP6_CFG_FRAGMENT
     
    707828in6_init (void)
    708829{
    709 #if NUM_REDIRECT_ROUTE_ENTRY > 0
    710 
    711         in_rtinit();
    712 
    713 #endif  /* of #if NUM_REDIRECT_ROUTE_ENTRY > 0 */
     830#if NUM_IN6_REDIRECT_ROUTE_ENTRY > 0
     831
     832        in6_rtinit();
     833
     834#endif  /* of #if NUM_IN6_REDIRECT_ROUTE_ENTRY > 0 */
    714835
    715836        timeout((callout_func)nd6_timer, NULL, ND6_TIMER_TMO);
     
    717838        }
    718839
    719 #endif /* of #ifdef SUPPORT_INET6 */
     840/*
     841 *  in6_is_dstaddr_accept -- 宛先アドレスとして正しいかチェックする。
     842 */
     843
     844bool_t
     845in6_is_dstaddr_accept (const T_IN6_ADDR *myaddr, const T_IN6_ADDR *dstaddr)
     846{
     847        if (IN6_IS_ADDR_UNSPECIFIED(myaddr))
     848                return in6_lookup_ifaddr(IF_GET_IFNET(), dstaddr) != NULL;
     849        else
     850                return IN6_ARE_ADDR_EQUAL(dstaddr, myaddr);
     851        }
     852
     853#if defined(DHCP6_CLI_CFG)
     854
     855/*
     856 *  in6_add_ifaddr -- インタフェースに IPv6 アドレスを設定する。
     857 *
     858 *    vltime と pltime の単位は[s]
     859 */
     860
     861static ER
     862in6_add_ifaddr (T_IN6_ADDR *addr, uint_t prefix_len,
     863                uint32_t vltime, uint32_t pltime)
     864{
     865        T_IFNET         *ifp = IF_GET_IFNET();
     866        T_IN6_IFADDR    *ia = NULL;
     867        int_t           ix;
     868
     869        /* 空きのエントリーを探す。*/
     870        ix = 0;
     871        while (true) {
     872                ia = in6ifa_ifpwithix(ifp, ix ++);
     873
     874                /* 空きが無ければエラー */
     875                if (ia == NULL)
     876                        return E_OBJ;
     877
     878                if ((ia->flags & IN6_IFF_DEFINED) == 0)
     879                        break;
     880                }
     881
     882        /* 登録する。*/
     883        return in6_update_ifa(ifp, ia, addr, prefix_len, vltime, pltime,
     884                              IN6_RTR_IX_UNREACH, ND6_PREFIX_IX_INVALID, 0);
     885        }
     886
     887/*
     888 *  in6_upd_ifaddr -- インタフェースに設定されている IPv6 アドレスを更新する。
     889 *
     890 *    登録されていなければ、追加する。
     891 *    vltime と pltime の単位は[s]
     892 */
     893
     894ER
     895in6_upd_ifaddr (T_IN6_ADDR *addr, uint_t prefix_len,
     896                uint32_t vltime, uint32_t pltime)
     897{
     898        T_IFNET         *ifp = IF_GET_IFNET();
     899        T_IN6_IFADDR    *ia;
     900        int_t           ix;
     901
     902        /*
     903         *  アドレスが一致するエントリーを探す。
     904         *  無ければ登録する。
     905         */
     906        if ((ix = in6_addr2ifaix(addr)) == IPV6_IFADDR_IX_INVALID)
     907                return in6_add_ifaddr(addr, prefix_len, vltime, pltime);
     908
     909        /*
     910         *  インデックス番号から、エントリーに変換する。
     911         *  エラーにならないはずであるが、確認する。
     912         */
     913        if ((ia = in6ifa_ifpwithix (ifp, ix)) == NULL)
     914                return E_OBJ;
     915
     916        /* 更新する。*/
     917        return in6_update_ifa(ifp, ia, addr, prefix_len, vltime, pltime,
     918                              IN6_RTR_IX_UNREACH, ND6_PREFIX_IX_INVALID, 0);
     919        }
     920
     921/*
     922 *  in6_del_ifaddr -- インタフェースに設定されている IPv6 アドレスを削除する。
     923 */
     924
     925ER
     926in6_del_ifaddr (T_IN6_ADDR *addr)
     927{
     928        T_IFNET         *ifp = IF_GET_IFNET();
     929        int_t           ix;
     930
     931        /* アドレスが一致するエントリーを探す。*/
     932        if ((ix = in6_addr2ifaix(addr)) != IPV6_IFADDR_IX_INVALID) {
     933
     934                /* エントリーを無効にする。*/
     935                ifp->in6_ifaddrs[ix].flags &= ~IN6_IFF_DEFINED;
     936                return E_OK;
     937                }
     938        return E_PAR;
     939        }
     940
     941#endif  /* of #if defined(DHCP6_CLI_CFG) */
     942
     943#endif /* of #ifdef _IP6_CFG */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6_var.h

    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 *
     
    102102#define _IN6_VAR_H_
    103103
    104 #ifdef SUPPORT_INET6
     104/*
     105 *  アドレスの定義
     106 */
     107
     108#ifdef _NET_CFG_BYTE_ORDER
     109
     110#if _NET_CFG_BYTE_ORDER == _NET_CFG_BIG_ENDIAN
     111
     112#define IPV6_ADDR_INT32_ONE             ULONG_C(0x00000001)
     113#define IPV6_ADDR_INT32_TWO             ULONG_C(0x00000002)
     114#define IPV6_ADDR_INT32_0000FFFF        ULONG_C(0x0000ffff)
     115#define IPV6_ADDR_INT32_MNL             ULONG_C(0xff010000)
     116#define IPV6_ADDR_INT32_MLL             ULONG_C(0xff020000)
     117#define IPV6_ADDR_INT32_ULL             ULONG_C(0xfe800000)
     118#define IPV6_ADDR_INT16_ULL             UINT_C(0xfe80)
     119#define IPV6_ADDR_INT16_USL             UINT_C(0xfec0)
     120#define IPV6_ADDR_INT16_MLL             UINT_C(0xff02)
     121
     122#elif _NET_CFG_BYTE_ORDER == _NET_CFG_LITTLE_ENDIAN
     123
     124#define IPV6_ADDR_INT32_ONE             ULONG_C(0x01000000)
     125#define IPV6_ADDR_INT32_TWO             ULONG_C(0x02000000)
     126#define IPV6_ADDR_INT32_0000FFFF        ULONG_C(0xffff0000)
     127#define IPV6_ADDR_INT32_MNL             ULONG_C(0x000001ff)
     128#define IPV6_ADDR_INT32_MLL             ULONG_C(0x000002ff)
     129#define IPV6_ADDR_INT32_ULL             ULONG_C(0x000080fe)
     130#define IPV6_ADDR_INT16_ULL             UINT_C(0x80fe)
     131#define IPV6_ADDR_INT16_USL             UINT_C(0xc0fe)
     132#define IPV6_ADDR_INT16_MLL             UINT_C(0x02ff)
     133
     134#endif  /* #if _NET_CFG_BYTE_ORDER == _NET_CFG_BIG_ENDIAN */
     135
     136#endif  /* of #ifdef _NET_CFG_BYTE_ORDER */
     137
     138/*
     139 *  特別なアドレスのチェック
     140 */
     141
     142/* IPv4 互換 */
     143
     144#ifdef _NET_CFG_BYTE_ORDER
     145#define IN6_IS_ADDR_V4COMPAT(a)         \
     146        (memcmp((void *)(a), (void *)&in6_addr_unspecified, sizeof(T_IN6_ADDR) - 4) == 0 && \
     147         (a)->s6_addr32[3] > IPV6_ADDR_INT32_ONE)
     148#endif
     149
     150/* IPv4 射影 */
     151
     152#ifdef _NET_CFG_BYTE_ORDER
     153#define IN6_IS_ADDR_V4MAPPED(a)         \
     154        (((a)->s6_addr32[0] == ULONG_C(0x00000000)) && \
     155         ((a)->s6_addr32[1] == ULONG_C(0x00000000)) && \
     156         ((a)->s6_addr32[2] == IPV6_ADDR_INT32_0000FFFF))
     157#endif
     158
     159/* 要請マルチキャスト */
     160
     161#ifdef _NET_CFG_BYTE_ORDER
     162#define IN6_IS_ADDR_NS_MULTICAST(a)     \
     163        (((a)->s6_addr32[0] == IPV6_ADDR_INT32_MLL) && \
     164         ((a)->s6_addr32[1] == ULONG_C(0x00000000)) && \
     165         ((a)->s6_addr32[2] == IPV6_ADDR_INT32_ONE) && \
     166         ((a)->s6_addr8[12] == UINT_C(0xff)))
     167#endif
     168
     169#ifndef _MACRO_ONLY
    105170
    106171/*
     
    197262                                                /* IPv6 マルチキャストアドレス配列の最大サイズ     */
    198263
    199 /*
    200  *  ルーティングの制御
    201  */
    202 
    203264/* ルーティング表エントリ構造体 */
    204265
     
    231292
    232293/*
    233  *  IPv4 と IPv6 をコンパイル時に選択するためのマクロ
    234  */
    235 
    236 #define IN_SET_HEADER(nbuf,len,dst,src,next,hlim)       \
    237                                         in6_set_header(nbuf,len,dst,src,next,hlim)
    238 #define IN_GET_DATAGRAM(nbuf,len,maxlen,dst,src,next,hlim,nbatr,tmout)  \
    239                                         in6_get_datagram(nbuf,len,maxlen,dst,src,next,hlim,nbatr,tmout)
    240 #define IN_CKSUM(nbuf,proto,off,len)    in6_cksum(nbuf,proto,off,len)
    241 #define IN_IS_DSTADDR_ACCEPT(myaddr,dstaddr)                    \
    242                                         in6_is_dstaddr_accept(myaddr,dstaddr)
    243 #define IN_IFAWITHIFP(ifp,dst)          in6_ifawithifp(ifp,dst)
    244 #define T_IN_IFADDR                     T_IN6_IFADDR
    245 #define T_IN_RTENTRY                    T_IN6_RTENTRY
     294 *  ルーティング表
     295 */
     296
     297extern T_IN6_RTENTRY routing6_tbl[];
    246298
    247299/*
     
    264316
    265317/*
     318 *  関数シミュレーションマクロ
     319 */
     320
     321#define IN6_COPY_TO_HOST(dst,nbuf)      memcpy(dst,&GET_IP6_HDR(nbuf)->src,sizeof(T_IN6_ADDR))
     322#define INN6_IS_DSTADDR_ACCEPT(addr,nbuf)       \
     323                                        in6_is_dstaddr_accept(addr,&GET_IP6_HDR(nbuf)->dst)
     324
     325/*
    266326 *  関数
    267327 */
    268328
    269329extern void in6_ifainit (void);
    270 extern int_t in6_addr2maix (T_IN6_ADDR *addr);
    271 extern ER in6_update_ifa (T_IFNET *ifp, T_IN6_IFADDR *ia, T_IN6_ADDR *addr,
     330extern int_t in6_addr2maix (const T_IN6_ADDR *addr);
     331extern ER in6_update_ifa (T_IFNET *ifp, T_IN6_IFADDR *ia, const T_IN6_ADDR *addr,
    272332                          uint_t prefix_len, uint32_t vltime, uint32_t pltime,
    273333                          int_t router_index, int_t prefix_index, uint_t flags);
    274334extern ER in6_set_header (T_NET_BUF *nbuf, uint_t len,
    275                           T_IN6_ADDR *dstaddr, T_IN6_ADDR *srcaddr,
     335                          const T_IN6_ADDR *dstaddr, const T_IN6_ADDR *srcaddr,
    276336                          uint8_t next, uint8_t hlim);
    277337extern ER in6_get_datagram (T_NET_BUF **nbuf, uint_t len, uint_t maxlen,
    278                             T_IN6_ADDR *dstaddr, T_IN6_ADDR *srcaddr,
     338                            const T_IN6_ADDR *dstaddr, const T_IN6_ADDR *srcaddr,
    279339                            uint8_t next, uint8_t hlim, ATR nbatr, TMO tmout);
    280340extern uint16_t in6_cksum (T_NET_BUF *nbuf, uint8_t proto, uint_t off, uint_t len);
    281341extern T_IN6_IFADDR *in6ifa_ifpwithix (T_IFNET *ifp, int_t ix);
    282342extern T_IN6_IFADDR *in6ifa_ifpwithrtrix (T_IFNET *ifp, int_t rtr_ix);
    283 extern T_IN6_IFADDR *in6_ifawithifp (T_IFNET *ifp, T_IN6_ADDR *dst);
     343extern T_IN6_IFADDR *in6_ifawithifp (T_IFNET *ifp, const T_IN6_ADDR *dst);
     344extern const T_IN6_ADDR *in6_addrwithifp (T_IFNET *ifp, T_IN6_ADDR *src, const T_IN6_ADDR *dst);
    284345extern void ip6_input (T_NET_BUF *input);
    285 extern T_IN6_IFADDR *in6_lookup_ifaddr (T_IFNET *ifp, T_IN6_ADDR *addr);
    286 extern bool_t in6_lookup_multi (T_IFNET *ifp, T_IN6_ADDR *maddr);
    287 extern bool_t in6_is_dstaddr_accept (T_IN6_ADDR *myaddr, T_IN6_ADDR *dstaddr);
    288 extern T_IN6_ADDR *in6_rtalloc (T_IFNET *ifp, T_IN6_ADDR *dst);
     346extern T_IN6_IFADDR *in6_lookup_ifaddr (T_IFNET *ifp, const T_IN6_ADDR *addr);
     347extern bool_t in6_lookup_multi (T_IFNET *ifp, const T_IN6_ADDR *maddr);
     348extern bool_t in6_is_dstaddr_accept (const T_IN6_ADDR *myaddr, const T_IN6_ADDR *dstaddr);
     349extern bool_t inn6_is_dstaddr_accept (const T_IN6_ADDR *myaddr, T_NET_BUF *input);
     350extern const T_IN6_ADDR *in6_rtalloc (T_IFNET *ifp, const T_IN6_ADDR *dst);
    289351extern int_t in6_if2idlen (T_IFNET *ifp);
    290 extern int_t in6_addr2ifaix (T_IN6_ADDR *addr);
     352extern int_t in6_addr2ifaix (const T_IN6_ADDR *addr);
    291353extern void in6_plen2pmask (T_IN6_ADDR *mask, uint_t prefix_len);
    292 extern bool_t in6_are_prefix_equal (T_IN6_ADDR *addr, T_IN6_ADDR *prefix,
     354extern bool_t in6_are_prefix_equal (const T_IN6_ADDR *addr, const T_IN6_ADDR *prefix,
    293355                                  uint_t prefix_len);
    294356extern void in6_ifaddr_timer (T_IFNET *ifp);
    295 extern T_IN6_RTENTRY *in6_gateway_lookup (T_IN6_ADDR *src);
    296 extern void in6_rtredirect (T_IN6_ADDR *gateway, T_IN6_ADDR *target,
     357extern T_IN6_RTENTRY *in6_gateway_lookup (const T_IN6_ADDR *src);
     358extern void in6_rtredirect (const T_IN6_ADDR *gateway, const T_IN6_ADDR *target,
    297359                            uint_t prefix_len, uint8_t flags, uint32_t tmo);
    298360extern void in6_init (void);
    299361extern void in6_if_up (T_IFNET *ifp);
    300362extern void in6_hostcache_update (T_IN6_ADDR *dst, uint32_t mtu);
    301 extern uint32_t in6_hostcache_getmtu (T_IN6_ADDR *dst);
    302 extern uint_t in6_addrscope (T_IN6_ADDR *addr);
     363extern uint32_t in6_hostcache_getmtu (const T_IN6_ADDR *dst);
     364extern uint_t in6_addrscope (const T_IN6_ADDR *addr);
    303365extern const T_NET_BUF**ip6_get_frag_queue (void);
    304366
    305 #endif  /* of #ifdef SUPPORT_INET6 */
     367#endif  /* of #ifndef _MACRO_ONLY */
    306368
    307369#endif  /* of #ifndef _IN6_VAR_H_ */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ip6.cfg

    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 *
     
    3636 */
    3737
    38 #ifdef SUPPORT_INET6
     38#ifdef _IP6_CFG
    3939
    4040/* 近隣キャッシュ */
     
    5858#endif  /* of #ifdef IP6_CFG_FRAGMENT */
    5959
    60 #if NUM_REDIRECT_ROUTE_ENTRY > 0
     60#if NUM_IN6_ROUTE_ENTRY > 0
    6161
    62 /* ルーティング表(向け直し)*/
     62/* ルーティング表 */
    6363
    64 CRE_SEM(SEM_IN_ROUTING_TBL, { TA_TPRI, 1, 1 });
     64CRE_SEM(SEM_IN6_ROUTING_TBL, { TA_TPRI, 1, 1 });
    6565
    66 #endif  /* of #if NUM_REDIRECT_ROUTE_ENTRY > 0 */
     66#endif  /* of #if NUM_IN6_ROUTE_ENTRY > 0 */
    6767
    68 #endif  /* of #ifdef SUPPORT_INET6 */
     68#endif  /* of #ifdef _IP6_CFG */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ip6_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 *
     
    105105#include <kernel.h>
    106106#include <sil.h>
     107#include <t_syslog.h>
     108#include "tinet_cfg.h"
    107109
    108110#endif  /* of #ifdef TARGET_KERNEL_ASP */
     
    112114#include <s_services.h>
    113115#include <t_services.h>
     116#include "tinet_id.h"
    114117
    115118#endif  /* of #ifdef TARGET_KERNEL_JSP */
     
    124127#include <net/ppp_ipcp.h>
    125128#include <net/net.h>
     129#include <net/net_endian.h>
    126130#include <net/net_buf.h>
    127131#include <net/net_count.h>
    128132
    129133#include <netinet/in.h>
    130 #include <netinet6/in6.h>
    131 #include <netinet6/in6_var.h>
     134#include <netinet/in_var.h>
     135#include <netinet/ip.h>
     136#include <netinet/ip_var.h>
     137#include <netinet/ip_icmp.h>
     138#include <netinet/tcp.h>
     139#include <netinet/tcp_var.h>
     140#include <netinet/udp_var.h>
     141
    132142#include <netinet6/nd6.h>
    133 #include <netinet/ip6.h>
    134 #include <netinet6/ip6_var.h>
    135 #include <netinet/icmp6.h>
    136143#include <netinet6/ah6.h>
    137144#include <netinet6/esp6.h>
    138 #include <netinet/tcp.h>
    139 #include <netinet/tcp_timer.h>
    140 #include <netinet/tcp_var.h>
    141 #include <netinet/udp_var.h>
    142 
    143 #include <net/if6_var.h>
    144 
    145 #ifdef SUPPORT_INET6
     145
     146#include <net/if_var.h>
     147
     148#ifdef _IP6_CFG
    146149
    147150/*
     
    170173        { icmp6_input,  IPPROTO_ICMPV6          },
    171174
    172 #ifdef SUPPORT_UDP
    173 
    174         { udp_input,    IPPROTO_UDP             },
    175 
    176 #endif  /* of #ifdef SUPPORT_UDP */
    177 
    178 #ifdef SUPPORT_TCP
     175#if defined(SUPPORT_TCP)
    179176
    180177        { tcp_input,    IPPROTO_TCP             },
    181178
    182 #endif  /* of #ifdef SUPPORT_TCP */
     179#endif  /* of #if defined(SUPPORT_TCP) */
     180
     181#if defined(SUPPORT_UDP) && TNUM_UDP6_CEPID > 0
     182
     183        { udp6_input,   IPPROTO_UDP             },
     184
     185#endif  /* of #if defined(SUPPORT_UDP) && TNUM_UDP6_CEPID > 0 */
    183186
    184187        };
     
    640643
    641644        /* 開始オフセットを IP ヘッダに設定する。*/
    642         off = ((uint8_t *)GET_IP_HDR(nbuf)) - nbuf->buf;
     645        off = ((uint8_t *)GET_IP6_HDR(nbuf)) - nbuf->buf;
    643646
    644647        /* 最終ヘッダを探索する。*/
     
    650653                uint_t sdu;
    651654
    652                 sdu = GET_IP_SDU(nbuf) - nbuf->buf;
     655                sdu = GET_IP6_SDU(nbuf) - nbuf->buf;
    653656                if (off > sdu) {
    654657                        memmove(nbuf->buf + sdu, nbuf->buf + off, off - sdu);
    655                         GET_IP_HDR(nbuf)->plen -= off - sdu;
     658                        GET_IP6_HDR(nbuf)->plen -= off - sdu;
    656659                        nbuf->len              -= off - sdu;
    657660                        }
     
    660663        }
    661664
    662 #endif /* of #ifdef SUPPORT_INET6 */
     665#endif /* of #ifdef _IP6_CFG */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ip6_output.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 *
     
    125125#include <net/ppp_ipcp.h>
    126126#include <net/net.h>
     127#include <net/net_endian.h>
    127128#include <net/net_buf.h>
    128129#include <net/net_count.h>
    129130
    130131#include <netinet/in.h>
    131 #include <netinet6/in6.h>
    132 #include <netinet6/in6_var.h>
     132#include <netinet/in_var.h>
     133#include <netinet/ip.h>
     134#include <netinet/ip_var.h>
     135#include <netinet/ip_icmp.h>
     136
    133137#include <netinet6/nd6.h>
    134 #include <netinet/ip6.h>
    135 #include <netinet6/ip6_var.h>
    136 #include <netinet/icmp6.h>
    137 
    138 #include <net/if6_var.h>
    139 
    140 #ifdef SUPPORT_INET6
     138
     139#include <net/if_var.h>
     140
     141#ifdef _IP6_CFG
    141142
    142143/*
     
    165166ip6_output (T_NET_BUF *output, uint16_t flags, TMO tmout)
    166167{
    167         T_IP6_HDR       *ip6h;
    168         T_IN6_ADDR      *gw;
    169         T_IFNET         *ifp = IF_GET_IFNET();
    170         ER              error = E_OK;
     168        T_IP6_HDR               *ip6h;
     169        const T_IN6_ADDR        *gw;
     170        T_IFNET                 *ifp = IF_GET_IFNET();
     171        ER                      error = E_OK;
    171172
    172173#ifdef IP6_CFG_FRAGMENT
     
    185186
    186187        NET_COUNT_IP6(net_count_ip6[NC_IP6_OUT_OCTETS],
    187                       GET_IP_HDR_SIZE(ip6h) + GET_IP_SDU_SIZE(ip6h));
     188                      GET_IP6_HDR_SIZE(output) + GET_IP6_SDU_SIZE(output));
    188189        NET_COUNT_IP6(net_count_ip6[NC_IP6_OUT_PACKETS], 1);
    189190        NET_COUNT_MIB(in6_ifstat.ipv6IfStatsOutRequests, 1);
     
    371372        }
    372373
    373 #endif /* of #ifdef SUPPORT_INET6 */
     374#endif /* of #ifdef _IP6_CFG */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ip6_var.h

    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 *
     
    102102#define _IP6_VAR_H_
    103103
    104 #ifdef SUPPORT_INET6
    105 
    106104/*
    107105 *  IPv6 ヘッダ・ペイロードアクセスマクロ
     
    114112#define GET_IP6_NEXT_HDR(nbuf)          ((uint8_t*)((nbuf)->buf) + IF_IP6_HDR_SIZE)
    115113
    116 #define GET_IP6_HDR_SIZE(iph)           (get_ip6_hdr_size(iph))
    117 #define GET_IP6_SDU_SIZE(iph)           (ntohs((iph)->plen))
    118 #define GET_IF_IP6_HDR_SIZE(nbuf)       (IF_HDR_SIZE + (GET_IP6_HDR_SIZE(GET_IP6_HDR(nbuf))))
    119 
    120 #define SET_IP6_SDU_SIZE(iph,slen)      ((iph)->plen=htons(slen))
     114#define GET_IP6_HDR_SIZE(nbuf)          (get_ip6_hdr_size(nbuf))
     115#define GET_IP6_SDU_SIZE(nbuf)          (ntohs(GET_IP6_HDR(nbuf)->plen))
     116#define GET_IF_IP6_HDR_SIZE(nbuf)       (IF_HDR_SIZE + (GET_IP6_HDR_SIZE(nbuf)))
     117
     118#define SET_IP6_CF(nbuf,cf)             (GET_IP6_HDR(nbuf)->vcf=htonl(IP6_MAKE_VCF(IP6_VCF_V(ntohl(GET_IP6_HDR(nbuf)->vcf)),cf)))
     119#define SET_IP6_SDU_SIZE(nbuf,slen)     (GET_IP6_HDR(nbuf)->plen=htons(slen))
    121120
    122121/* ip6_output のフラグ */
     
    144143
    145144/*
    146  *  IPv4 と IPv6 をコンパイル時に選択するためのマクロ
    147  */
    148 
    149 #define T_TCP_IP_Q_HDR                  T_TCP_IP6_Q_HDR
    150 
    151 #define IF_IP_HDR_SIZE                  IF_IP6_HDR_SIZE
    152 
    153 #define GET_IP_HDR(nbuf)                GET_IP6_HDR(nbuf)
    154 #define GET_IP_SDU(nbuf)                GET_IP6_SDU(nbuf)
    155 
    156 #define GET_IP_HDR_SIZE(iph)            GET_IP6_HDR_SIZE(iph)
    157 #define GET_IP_SDU_SIZE(iph)            GET_IP6_SDU_SIZE(iph)
    158 #define GET_IF_IP_HDR_SIZE(nbuf)        GET_IF_IP6_HDR_SIZE(nbuf)
    159 
    160 #define SET_IP_SDU_SIZE(iph,len)        SET_IP6_SDU_SIZE(iph,len)
    161 
    162 #define IP_OUTPUT(nbuf,tmout)           ip6_output(nbuf,0,tmout)
    163 #define IP_INIT()                       ip6_init()
    164 #define IP_REMOVE_OPTIONS(nbuf)         ip6_remove_exthdrs(nbuf)
    165 
    166 /*
    167145 *  IPv6 の MMTU サイズのネットワークバッファ
    168146 */
     147
     148#if defined(IF_HDR_SIZE)
    169149
    170150typedef struct t_net_buf_ipv6_mmtu {
     
    181161                                /* バッファ本体               */
    182162        } T_NET_BUF_IPV6_MMTU;
     163
     164#endif  /* of #if defined(IF_HDR_SIZE) */
    183165
    184166/*
     
    258240 */
    259241
    260 typedef struct t_tcp_ip6_q_hdr {
     242typedef struct t_ip6_tcp_q_hdr {
    261243        uint8_t vc;             /* Version:        4 bit                */
    262244        uint8_t cf;             /* Traffic Class:  8 bit                */
     
    268250        T_IN6_ADDR src; /* Source Address                       */
    269251        T_IN6_ADDR dst; /* Destination Address                  */
    270         } __attribute__((packed, aligned(2)))T_TCP_IP6_Q_HDR;
     252        } __attribute__((packed, aligned(2))) T_IP6_TCP_Q_HDR;
    271253
    272254#ifdef SUPPORT_MIB
     
    304286
    305287/*
     288 *  変数
     289 */
     290
     291extern uint8_t  ip6_defhlim;
     292
     293/*
    306294 *  関数
    307295 */
     
    310298extern void ip6_init (void);
    311299extern uint8_t *ip6_get_prev_hdr (T_NET_BUF *nbuf, uint_t off);
    312 extern uint_t get_ip6_hdr_size (T_IP6_HDR *iph);
     300extern uint_t get_ip6_hdr_size (T_NET_BUF *nbuf);
    313301extern ER_UINT ip6_nexthdr (T_NET_BUF *nbuf, uint_t off, uint_t proto, uint_t *nextp);
    314302extern ER_UINT ip6_lasthdr (T_NET_BUF *nbuf, uint_t off, uint_t proto, uint_t *nextp);
     
    320308extern ER ip6_remove_exthdrs (T_NET_BUF *nbuf);
    321309
    322 #endif  /* of #ifdef SUPPORT_INET6 */
    323 
    324310#endif  /* of #ifndef _IP6_VAR_H_ */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ipsec.cfg

    r321 r331  
    33 *  TINET (TCP/IP Protocol Stack)
    44 *
    5  *  Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering
     5 *  Copyright (C) 2001-2017 by Dep. of Computer Science and Engineering
    66 *                   Tomakomai National College of Technology, JAPAN
    77 *  Copyright (C) 2008-2009 by Hokkaido Industrial Research Institute, JAPAN
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/nd6.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 *
     
    9898#include <net/ethernet.h>
    9999#include <net/if_arp.h>
     100#include <net/ppp.h>
    100101#include <net/ppp_ipcp.h>
    101102#include <net/net.h>
     103#include <net/net_endian.h>
    102104#include <net/net_var.h>
    103105#include <net/net_buf.h>
     
    107109#include <netinet/in.h>
    108110#include <netinet/in_var.h>
    109 #include <netinet6/in6.h>
    110 #include <netinet6/in6_var.h>
     111#include <netinet/ip.h>
     112#include <netinet/ip_var.h>
     113#include <netinet/ip_icmp.h>
     114
    111115#include <netinet6/nd6.h>
    112116
    113 #include <netinet/ip6.h>
    114 #include <netinet/icmp6.h>
    115 #include <netinet6/ip6_var.h>
    116 
    117 #include <net/if6_var.h>
    118 
    119 #ifdef SUPPORT_INET6
     117#include <net/if_var.h>
     118
     119#ifdef _IP6_CFG
    120120
    121121/*
     
    328328
    329329T_LLINFO_ND6 *
    330 nd6_lookup (T_IN6_ADDR *addr, bool_t create)
     330nd6_lookup (const T_IN6_ADDR *addr, bool_t create)
    331331{
    332332        SYSTIM  min = 0xffffffff;
     
    370370
    371371T_LLINFO_ND6 *
    372 nd6_cache_lladdr (T_IFNET *ifp, T_IN6_ADDR *from,
     372nd6_cache_lladdr (T_IFNET *ifp, const T_IN6_ADDR *from,
    373373                  T_IF_ADDR *lladdr, uint8_t type, uint8_t code)
    374374{
     
    487487
    488488bool_t
    489 nd6_is_addr_neighbor (T_IFNET *ifp, T_IN6_ADDR *addr)
     489nd6_is_addr_neighbor (T_IFNET *ifp, const T_IN6_ADDR *addr)
    490490{
    491491        if (IN6_IS_ADDR_LINKLOCAL(addr))
     
    508508
    509509ER
    510 nd6_output (T_IFNET *ifp, T_NET_BUF *output, T_IN6_ADDR *dst, T_LLINFO_ND6 *ln, TMO tmout)
     510nd6_output (T_IFNET *ifp, T_NET_BUF *output, const T_IN6_ADDR *dst, T_LLINFO_ND6 *ln, TMO tmout)
    511511{
    512512        ER      error = E_OK;
     
    622622
    623623ER
    624 nd6_storelladdr (T_IF_ADDR *out, T_IN6_ADDR *dst, T_IF_ADDR *ifa)
     624nd6_storelladdr (T_IF_ADDR *out, const T_IN6_ADDR *dst, T_IF_ADDR *ifa)
    625625{
    626626        if (IN6_IS_ADDR_MULTICAST(dst)) {
     
    696696        }
    697697
    698 #endif /* of #ifdef SUPPORT_INET6 */
     698#endif /* of #ifdef _IP6_CFG */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/nd6.h

    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 *
     
    6767#define _ND6_H_
    6868
    69 #ifdef SUPPORT_INET6
    70 
    7169/*
    7270 *  ネットワークインタフェース構造体(T_IFNET)のフラグ
     
    118116#define ND6_MAX_UCAST_QUERY             3               /* ユニキャストアドレス要請の再送回数    */
    119117
    120 #define ND6_INFINITE_LIFETIME           0xffffffff
    121 
    122118#define ND6_GCOLLECTION_TIME            (60*60*24*SYSTIM_HZ)
    123119                                                        /* ゴミ拾い周期、1 日                   */
     
    234230extern SYSTIM   nd6_recalc_reachtm_interval;
    235231extern SYSTIM   nd6_retrans_time;
    236 extern uint8_t  ip6_defhlim;
    237232
    238233/*
     
    241236
    242237extern void nd6_ifattach (T_IFNET *ifp);
    243 extern void nd6_ns_output (T_IFNET *ifp, T_IN6_ADDR *daddr,
    244                            T_IN6_ADDR *taddr, T_LLINFO_ND6 *ln, bool_t dad);
    245 extern void nd6_na_output (T_IFNET *ifp, T_IN6_ADDR *daddr,
    246                            T_IN6_ADDR *taddr, uint32_t flags, bool_t tlladdr);
     238extern void nd6_ns_output (T_IFNET *ifp, const T_IN6_ADDR *daddr,
     239                           const T_IN6_ADDR *taddr, T_LLINFO_ND6 *ln, bool_t dad);
     240extern void nd6_na_output (T_IFNET *ifp, const T_IN6_ADDR *daddr,
     241                           const T_IN6_ADDR *taddr, uint32_t flags, bool_t tlladdr);
    247242extern void nd6_dad_start (T_IFNET *ifp, T_IN6_IFADDR *ia, int_t *tick);
    248243extern ER nd6_output (T_IFNET *ifp, T_NET_BUF *output,
    249                       T_IN6_ADDR *dst, T_LLINFO_ND6 *ln, TMO tmout);
     244                      const T_IN6_ADDR *dst, T_LLINFO_ND6 *ln, TMO tmout);
    250245extern void nd6_na_input (T_NET_BUF *input, uint_t off);
    251246extern void nd6_ns_input (T_NET_BUF *input, uint_t off);
    252247extern void nd6_ra_input (T_NET_BUF *input, uint_t off);
    253 extern ER nd6_storelladdr (T_IF_ADDR *out, T_IN6_ADDR *dst, T_IF_ADDR *ifa);
     248extern ER nd6_storelladdr (T_IF_ADDR *out, const T_IN6_ADDR *dst, T_IF_ADDR *ifa);
    254249extern ER nd6_options (uint8_t *opt, void *nh, uint_t len);
    255 extern T_LLINFO_ND6 *nd6_lookup (T_IN6_ADDR *addr, bool_t create);
     250extern T_LLINFO_ND6 *nd6_lookup (const T_IN6_ADDR *addr, bool_t create);
    256251extern ER nd6_output_hold (T_IFNET *ifp, T_LLINFO_ND6 *ln);
    257 extern T_LLINFO_ND6 *nd6_cache_lladdr (T_IFNET *ifp, T_IN6_ADDR *from,
     252extern T_LLINFO_ND6 *nd6_cache_lladdr (T_IFNET *ifp, const T_IN6_ADDR *from,
    258253                                       T_IF_ADDR *lladdr, uint8_t type, uint8_t code);
    259254extern void nd6_defrtrlist_timer (void);
    260255extern void nd6_prelist_timer (void);
    261256extern void nd6_rtrsol_ctl (void);
    262 extern T_IN6_ADDR *nd6_router_lookup (void);
    263 extern T_DEF_ROUTER *nd6_defrtrlist_lookup (T_IN6_ADDR *src);
     257extern const T_IN6_ADDR *nd6_router_lookup (void);
     258extern T_DEF_ROUTER *nd6_defrtrlist_lookup (const T_IN6_ADDR *src);
    264259extern void nd6_defrtrlist_del (T_DEF_ROUTER *dr);
    265260extern void nd6_timer (void);
     
    269264extern ER nd6_prefix_onlink (T_ND6_PREFIX *pr);
    270265extern ER nd6_prefix_offlink (T_ND6_PREFIX *pr);
    271 extern T_ND6_PREFIX *nd6_onlink_prefix_lookup (T_IN6_ADDR *dst);
    272 
    273 #endif  /* of #ifdef SUPPORT_INET6 */
     266extern T_ND6_PREFIX *nd6_onlink_prefix_lookup (const T_IN6_ADDR *dst);
    274267
    275268#endif  /* of #ifndef _ND6_H_ */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/nd6_nbr.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 *
     
    9393#include <net/ppp_ipcp.h>
    9494#include <net/net.h>
     95#include <net/net_endian.h>
    9596#include <net/net_var.h>
    9697#include <net/net_buf.h>
     
    100101#include <netinet/in.h>
    101102#include <netinet/in_var.h>
    102 
    103 #include <netinet6/in6.h>
    104 #include <netinet6/in6_var.h>
     103#include <netinet/ip.h>
     104#include <netinet/ip_var.h>
     105#include <netinet/ip_icmp.h>
     106
    105107#include <netinet6/nd6.h>
    106108
    107 #include <netinet/ip6.h>
    108 #include <netinet/icmp6.h>
    109 #include <netinet6/ip6_var.h>
    110 
    111109#include <net/if6_var.h>
    112110
    113 #ifdef SUPPORT_INET6
     111#ifdef _IP6_CFG
    114112
    115113/*
     
    363361
    364362void
    365 nd6_ns_output (T_IFNET *ifp, T_IN6_ADDR *daddr,
    366                T_IN6_ADDR *taddr, T_LLINFO_ND6 *ln, bool_t dad)
     363nd6_ns_output (T_IFNET *ifp, const T_IN6_ADDR *daddr,
     364               const T_IN6_ADDR *taddr, T_LLINFO_ND6 *ln, bool_t dad)
    367365{
    368366        T_NEIGHBOR_SOLICIT_HDR  *nsh;
     
    429427
    430428                if (saddr && in6_lookup_ifaddr(ifp, saddr))
    431                         ip6h->src = *saddr;
     429                        memcpy(&ip6h->src, saddr, sizeof(T_IN6_ADDR));
    432430                else {
    433431                        /*
     
    441439                                return;
    442440                                }
    443                         ip6h->src = ifa->addr;
     441                        memcpy(&ip6h->src, &ifa->addr, sizeof(T_IN6_ADDR));
    444442                        }
    445443                }
     
    455453        nsh->hdr.code        = 0;
    456454        nsh->hdr.data.data32 = 0;
    457         nsh->target          = *taddr;
     455        memcpy(&nsh->target, taddr, sizeof(T_IN6_ADDR));
    458456
    459457        if (!dad && (mac = IF_SOFTC_TO_IFADDR(ifp->ic)) != NULL) {
     
    699697
    700698void
    701 nd6_na_output (T_IFNET *ifp, T_IN6_ADDR *daddr,
    702                T_IN6_ADDR *taddr, uint32_t flags, bool_t tlladdr)
     699nd6_na_output (T_IFNET *ifp, const T_IN6_ADDR *daddr,
     700               const T_IN6_ADDR *taddr, uint32_t flags, bool_t tlladdr)
    703701{
    704702        T_NEIGHBOR_ADVERT_HDR   *nah;
     
    747745                }
    748746        else
    749                 ip6h->dst = *daddr;
     747                memcpy(&ip6h->dst, daddr, sizeof(T_IN6_ADDR));
    750748
    751749        /*
     
    757755                return;
    758756                }
    759         ip6h->src = ifa->addr;
    760 
    761         /* 近隣通知ヘッダを設定する。*/
    762         nah = GET_NEIGHBOR_ADVERT_HDR(output, IF_IP6_NEIGHBOR_ADVERT_HDR_OFFSET);
    763         nah->hdr.type        = ND_NEIGHBOR_ADVERT;
    764         nah->hdr.code        = 0;
    765         nah->target          = *taddr;
     757        memcpy(&ip6h->src, &ifa->addr, sizeof(T_IN6_ADDR));
     758
     759        /* 近隣通知ヘッダを設定する。*/
     760        nah = GET_NEIGHBOR_ADVERT_HDR(output, IF_IP6_NEIGHBOR_ADVERT_HDR_OFFSET);
     761        nah->hdr.type        = ND_NEIGHBOR_ADVERT;
     762        nah->hdr.code        = 0;
     763        memcpy(&nah->target, taddr, sizeof(T_IN6_ADDR));
    766764
    767765        /* tlladdr が真ならネットワークインタフェースのアドレスを追加する。*/
     
    851849        }
    852850
    853 #endif /* of #ifdef SUPPORT_INET6 */
     851#endif /* of #ifdef _IP6_CFG */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/nd6_rtr.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 *
     
    9393#include <net/ppp_ipcp.h>
    9494#include <net/net.h>
     95#include <net/net_endian.h>
    9596#include <net/net_var.h>
    9697#include <net/net_buf.h>
     
    100101#include <netinet/in.h>
    101102#include <netinet/in_var.h>
    102 #include <netinet6/in6.h>
    103 #include <netinet6/in6_var.h>
     103#include <netinet/ip.h>
     104#include <netinet/ip_var.h>
     105#include <netinet/ip_icmp.h>
     106
    104107#include <netinet6/nd6.h>
    105108#include <netinet6/in6_ifattach.h>
    106 #include <netinet/ip6.h>
    107 #include <netinet/icmp6.h>
    108 #include <netinet6/ip6_var.h>
    109 
    110 #include <net/if6_var.h>
     109
     110#include <net/if_var.h>
    111111
    112112/*
     
    116116extern const char *itron_strerror (ER ercd);
    117117
    118 #ifdef SUPPORT_INET6
     118#ifdef _IP6_CFG
    119119
    120120#if NUM_ND6_DEF_RTR_ENTRY > 0
     
    284284         */
    285285        for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
    286                 ia = &ifp->in_ifaddrs[ix];
     286                ia = &ifp->in6_ifaddrs[ix];
    287287                if ((ia->flags & (IN6_IFF_DEFINED | IN6_IFF_AUTOCONF)) != 0 &&
    288288                     ia->prefix_index != ND6_PREFIX_IX_INVALID) {
     
    299299                 */
    300300                for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
    301                         ia = &ifp->in_ifaddrs[ix];
     301                        ia = &ifp->in6_ifaddrs[ix];
    302302                        if ((ia->flags & (IN6_IFF_DEFINED | IN6_IFF_AUTOCONF)) != 0 &&
    303303                             ia->prefix_index != ND6_PREFIX_IX_INVALID) {
     
    316316                 */
    317317                for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
    318                         ia = &ifp->in_ifaddrs[ix];
     318                        ia = &ifp->in6_ifaddrs[ix];
    319319                        if ((ia->flags & (IN6_IFF_DEFINED | IN6_IFF_AUTOCONF)) != 0)
    320320                                ia->flags &= ~IN6_IFF_DETACHED;
     
    448448        /* 各メンバに値を設定する。*/
    449449        fdr->plistmap = 0;
    450         fdr->addr     = *src;
     450        memcpy(&fdr->addr, src, sizeof(T_IN6_ADDR));
    451451        fdr->lifetime = lifetime * SYSTIM_HZ;           /* lifetime の単位は秒 */
    452452        fdr->flags    = flags;
     
    478478        int_t           ix;
    479479
    480         lla = &ifp->in_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL];
     480        lla = &ifp->in6_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL];
    481481
    482482        /*
     
    585585
    586586        /* リンクローカルアドレスが未登録であれば何もしない。*/
    587         lla = &ifp->in_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL];
     587        lla = &ifp->in6_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL];
    588588        if ((lla->flags & IN6_IFF_DEFINED) == 0)
    589589                return E_OK;
     
    594594         */
    595595        for (ix = NUM_IN6_IFADDR_ENTRY; ix --; ) {
    596                 ia = &ifp->in_ifaddrs[ix];
     596                ia = &ifp->in6_ifaddrs[ix];
    597597                if (ia->prefix_index == (pr - nd6_prefix))
    598598                        break;
     
    634634         */
    635635        for (ix = NUM_IN6_IFADDR_ENTRY; ix --; ) {
    636                 ia = &ifp->in_ifaddrs[ix];
     636                ia = &ifp->in6_ifaddrs[ix];
    637637                if (ia->prefix_index == (pr - nd6_prefix))
    638638                        break;
     
    692692        T_ND6_PREFIX    *pr = NULL;
    693693        int_t           ix;
    694         ER              error;
    695694
    696695        /* プレフィックスリストから空きのプレフィックスエントリを探索する。*/
     
    723722
    724723        if ((pr->flags & ND6_PREFIX_FLAG_ONLINK) != 0) {
    725                 if ((error = nd6_prefix_onlink(pr)) != E_OK)
     724                if (nd6_prefix_onlink(pr) != E_OK)
    726725                        return NULL;
    727726                }
     
    812811                        }
    813812
     813#if 1           /* プレフィックスが未登録の場合だけ表示する。*/
     814                syslog(LOG_NOTICE, "[ND6 RTR] add prefix: flags[MOH]: %02x, addr: %s\n"
     815                                   "                                      from: %s.",
     816                                   nd6_def_router[router_index].flags,
     817                                   ipv62str(NULL, &pi->prefix),
     818                                   ipv62str(NULL, &nd6_def_router[router_index].addr));
     819#endif
    814820                if ((pr->flags & ND6_PREFIX_FLAG_ONLINK) == 0) {
    815821                        /*
     
    836842         */
    837843        for (ix = NUM_IN6_IFADDR_ENTRY; ix --; ) {
    838                 ia = &ifp->in_ifaddrs[ix];
     844                ia = &ifp->in6_ifaddrs[ix];
    839845                if ((ia->flags & IN6_IFF_DEFINED) != 0 &&
    840846                    ia->prefix_len == pr->prefix_len &&
     
    892898                                }
    893899
    894                         lla = &ifp->in_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL];
     900                        lla = &ifp->in6_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL];
    895901
    896902                        /* プレフィックスマスクを生成する。*/
     
    922928
    923929                        for (ix = NUM_IN6_IFADDR_ENTRY; ix --; ) {
    924                                 ia = &ifp->in_ifaddrs[ix];
     930                                ia = &ifp->in6_ifaddrs[ix];
    925931                                if ((ia->flags & IN6_IFF_DEFINED) == 0) {
    926932                                        in6_ifadd(pr, ia, router_index);
     
    971977        T_NET_BUF               *output;
    972978        T_IN6_IFADDR            *ifa;
    973         T_IN6_ADDR              *saddr;
     979        const T_IN6_ADDR        *saddr;
    974980        uint16_t                len;
    975981
     
    10171023
    10181024T_DEF_ROUTER *
    1019 nd6_defrtrlist_lookup (T_IN6_ADDR *src)
     1025nd6_defrtrlist_lookup (const T_IN6_ADDR *src)
    10201026{
    10211027        T_DEF_ROUTER    *dr = NULL;
     
    10361042 */
    10371043
    1038 T_IN6_ADDR *
     1044const T_IN6_ADDR *
    10391045nd6_router_lookup (void)
    10401046{
     
    12601266                                syslog(LOG_NOTICE, "[ND6 RTR] preferred(%d) > valid time(%d).", ntohl(pi->preferred), ntohl(pi->valid));
    12611267                        else {
    1262                                 syslog(LOG_NOTICE, "[ND6 RTR] update prefix: %s from %s.",
    1263                                                    ipv62str(NULL, &pi->prefix), ipv62str(NULL, &ip6h->src));
     1268#if 0   /* プレフィックスが未登録の場合だけ表示する。*/
     1269                                syslog(LOG_NOTICE, "[ND6 RTR] update prefix: flags[MOH]: %02x, addr: %s\n"
     1270                                                   "                                         from: %s.",
     1271                                                   rah->nd_ra_flags, ipv62str(NULL, &pi->prefix), ipv62str(NULL, &ip6h->src));
     1272#endif
    12641273                                if (rix >= 0) {
    12651274                                        /*
     
    13911400
    13921401T_ND6_PREFIX *
    1393 nd6_onlink_prefix_lookup (T_IN6_ADDR *dst)
     1402nd6_onlink_prefix_lookup (const T_IN6_ADDR *dst)
    13941403{
    13951404        SYSTIM          now;
     
    14271436        }
    14281437
    1429 #endif /* of #ifdef SUPPORT_INET6 */
     1438#endif /* of #ifdef _IP6_CFG */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/route6.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 *
     
    8282
    8383#include <net/net.h>
     84#include <net/net_endian.h>
    8485#include <net/if.h>
    8586#include <net/if_loop.h>
     
    9293
    9394#include <netinet/in.h>
    94 #include <netinet6/in6.h>
    95 #include <netinet6/in6_var.h>
     95#include <netinet/in_var.h>
     96#include <netinet/ip.h>
     97#include <netinet/ip_var.h>
     98#include <netinet/ip_icmp.h>
    9699#include <netinet6/nd6.h>
    97 #include <netinet/ip6.h>
    98 #include <netinet6/ip6_var.h>
    99 #include <netinet/icmp6.h>
    100 
    101 #ifdef SUPPORT_INET6
     100
     101#ifdef _IP6_CFG
    102102
    103103#if 0
    104         /*
    105         *  通信帯域を食いつぶす攻撃への対応のため、
    106         *  タイプ 0 経路制御ヘッダの処理を行わない。
    107         */
     104/*
     105 *  通信帯域を食いつぶす攻撃への対応のため、
     106 *  タイプ 0 経路制御ヘッダの処理を行わない。
     107 */
    108108
    109109/*
     
    229229        }
    230230
    231 #endif /* of #ifdef SUPPORT_INET6 */
     231#endif /* of #ifdef _IP6_CFG */
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/scope6.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 *
     
    123123#include <net/ethernet.h>
    124124#include <net/net.h>
     125#include <net/net_endian.h>
    125126#include <net/net_buf.h>
     127
     128#include <netinet/in.h>
     129#include <netinet/in_var.h>
    126130
    127131#include <netinet6/in6.h>
    128132#include <netinet6/in6_var.h>
    129133
    130 #ifdef SUPPORT_INET6
     134#ifdef _IP6_CFG
    131135
    132136/*
     
    135139
    136140uint_t
    137 in6_addrscope (T_IN6_ADDR *addr)
     141in6_addrscope (const T_IN6_ADDR *addr)
    138142{
    139143        uint_t scope;
     
    168172        }
    169173
    170 #endif /* of #ifdef SUPPORT_INET6 */
     174#endif /* of #ifdef _IP6_CFG */
Note: See TracChangeset for help on using the changeset viewer.