Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/icmp6.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    157145
    158146/*
    159  *  変数
     147 *  変数
    160148 */
    161149
     
    163151
    164152/*
    165  *  SNMP の 管理æƒ
    166 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     153 *  SNMP の 管理情報ベース (MIB)
    167154 */
    168155
     
    172159
    173160/*
    174  *  icmp6_output -- ICMP6 パケットを送信する。
     161 *  icmp6_output -- ICMP6 パケットを送信する。
    175162 */
    176163
     
    184171
    185172        /*
    186          *  宛å
    187 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    188 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    189          *  ネットワークインタフェースから探索して利用する。
     173         *  宛先アドレスにふさわしい送信元アドレスを、
     174         *  ネットワークインタフェースから探索して利用する。
    190175         */
    191176        ip6h = GET_IP6_HDR(output);
     
    199184        icmp6h = GET_ICMP6_HDR(output, off);
    200185
    201         /* チェックサムを計算する。*/
     186        /* チェックサムを計算する。*/
    202187        icmp6h->sum = 0;
    203188        icmp6h->sum = in6_cksum(output, IPPROTO_ICMPV6, (uint8_t*)icmp6h - output->buf,
    204189                                ntohs(ip6h->plen) - (off - IF_IP6_HDR_SIZE));
    205190
    206         /* 送信する。*/
     191        /* 送信する。*/
    207192        NET_COUNT_ICMP6(net_count_icmp6[NC_ICMP6_OUT_OCTETS],
    208193                       output->len - GET_IF_IP6_HDR_SIZE(output));
     
    213198
    214199/*
    215  *  icmp6_echo_request -- エコー要求を受信したときの処理
     200 *  icmp6_echo_request -- エコー要求を受信したときの処理
    216201 */
    217202
     
    231216
    232217        /*
    233          *  IPv6 ヘッダと ICMPv6 ヘッダ間の拡張ヘッダを除去する。
     218         *  IPv6 ヘッダと ICMPv6 ヘッダ間の拡張ヘッダを除去する。
    234219         */
    235220        diff = off - IF_IP6_HDR_SIZE;
    236221        if (diff > 0) {
    237                 /* ICMPv6 ヘッダを前に詰める。*/
     222                /* ICMPv6 ヘッダを前に詰める。*/
    238223                memmove(input->buf + IF_IP6_HDR_SIZE, input->buf + off, input->len - off);
    239224                off = IF_IP6_HDR_SIZE;
    240225
    241                 /* ペイロード長を調整する。*/
     226                /* ペイロード長を調整する。*/
    242227                ip6h->plen  = htons(ntohs(ip6h->plen) - diff);
    243228                input->len -= diff;
     
    252237
    253238        /*
    254          *  メッセージの型をエコー要求 (128) から
    255          *  エコー応答 (129) に変更して送り返す。
     239         *  メッセージの型をエコー要求 (128) から
     240         *  エコー応答 (129) に変更して送り返す。
    256241         */
    257242        icmp6h->type = ICMP6_ECHO_REPLY;
    258243
    259         /* IPv6 ヘッダの発信å
    260 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã¨å®›å
    261 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å
    262 ¥æ›¿ãˆã‚‹ã€‚*/
     244        /* IPv6 ヘッダの発信元アドレスと宛先アドレスを入替える。*/
    263245        memcpy(&dst, &ip6h->dst, sizeof(T_IN6_ADDR));
    264246        memcpy(&ip6h->dst, &ip6h->src, sizeof(T_IN6_ADDR));
     
    266248
    267249        /*
    268          *  å
    269 ƒã®å®›å
    270 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã®å ´åˆã¯ã€
    271          *  宛å
    272 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    273 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    274          *  ネットワークインタフェースから探索して利用する。
     250         *  元の宛先アドレスがマルチキャストの場合は、
     251         *  宛先アドレスにふさわしい送信元アドレスを、
     252         *  ネットワークインタフェースから探索して利用する。
    275253         */
    276254        if (IN6_IS_ADDR_MULTICAST(&dst)) {
     
    283261                }
    284262
    285         /* 次ヘッダとホップリミットを設定する。*/
     263        /* 次ヘッダとホップリミットを設定する。*/
    286264        ip6h->next = IPPROTO_ICMPV6;
    287265        ip6h->hlim = IP6_DEFTTL;
    288266
    289         /* チェックサムを計算する。*/
     267        /* チェックサムを計算する。*/
    290268        icmp6h->sum = 0;
    291269        icmp6h->sum = in6_cksum(input, IPPROTO_ICMPV6, (uint8_t*)icmp6h - input->buf,
    292270                                ntohs(ip6h->plen) - (off - IF_IP6_HDR_SIZE));
    293271
    294         /* 送信する。*/
     272        /* 送信する。*/
    295273        NET_COUNT_ICMP6(net_count_icmp6[NC_ICMP6_OUT_OCTETS],
    296274                       input->len - GET_IF_IP6_HDR_SIZE(input));
     
    302280
    303281/*
    304  *  icmp6_notify_error -- エラーを通知する。
     282 *  icmp6_notify_error -- エラーを通知する。
    305283 */
    306284
     
    314292        len  = input->len - poff;
    315293
    316         /* データグラム長が ICMP6 ヘッダ長 + IP6 ヘッダ長以下なら何もしない。*/
     294        /* データグラム長が ICMP6 ヘッダ長 + IP6 ヘッダ長以下なら何もしない。*/
    317295        if (len < ICMP6_HDR_SIZE + IP6_HDR_SIZE)
    318296                return;
     
    320298        icmp6h = GET_ICMP6_HDR(input, poff);
    321299
    322         /* 最終ヘッダを探索する。*/
     300        /* 最終ヘッダを探索する。*/
    323301        loff = ip6_lasthdr(input, poff + ICMP6_HDR_SIZE, IPPROTO_IPV6, &next);
    324302
    325         /* 最終ヘッダが TCP/UDP のみ対応する。*/
     303        /* 最終ヘッダが TCP/UDP のみ対応する。*/
    326304        if (loff >= 0 && (next == IPPROTO_TCP || next == IPPROTO_UDP)) {
    327305
     
    354332
    355333/*
    356  *  icmp6_mtudisc_update -- Path MTU を更新する。
     334 *  icmp6_mtudisc_update -- Path MTU を更新する。
    357335 */
    358336
     
    379357
    380358/*
    381  *  icmp6_redirect_input -- 向け直しメッセージの処理
     359 *  icmp6_redirect_input -- 向け直しメッセージの処理
    382360 */
    383361
     
    398376
    399377        /*
    400          *  IP ヘッダのチェック、以下の場合は破棄する。
    401          *    ・リンクローカル以外から送られてきたメッセージ
    402          *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
     378         *  IP ヘッダのチェック、以下の場合は破棄する。
     379         *    ・リンクローカル以外から送られてきたメッセージ
     380         *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
    403381         */
    404382        if (!IN6_IS_ADDR_LINKLOCAL(&ip6h->src) || ip6h->hlim != IPV6_MAXHLIM)
     
    407385        rdh  = (T_ND_REDIRECT_HDR *)(input->buf + off);
    408386
    409         /* 向け直しの終点アドレスがマルチキャストアドレスの場合は破棄する。*/
     387        /* 向け直しの終点アドレスがマルチキャストアドレスの場合は破棄する。*/
    410388        if (IN6_IS_ADDR_MULTICAST(&rdh->dst))
    411389                goto err_ret;
    412390
    413         /* ターゲットアドレスが経路表に登録されているかチェックする。*/
     391        /* ターゲットアドレスが経路表に登録されているかチェックする。*/
    414392        if ((gw = in6_rtalloc(ifp, &rdh->dst)) != NULL) {
    415                 /* GW アドレスと送信å
    416 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ãŒç•°ãªã£ã¦ã„れば破棄する。*/
     393                /* GW アドレスと送信元アドレスが異なっていれば破棄する。*/
    417394                if (!IN6_ARE_ADDR_EQUAL(gw, &ip6h->src))
    418395                        goto err_ret;
    419396                }
    420         else    /* 経路表になければ破棄する。*/
     397        else    /* 経路表になければ破棄する。*/
    421398                goto err_ret;
    422399
     
    424401
    425402        /*
    426          *  ターゲットアドレスがリンクローカルアドレスであれば、
    427          *  ターゲットはルータ
     403         *  ターゲットアドレスがリンクローカルアドレスであれば、
     404         *  ターゲットはルータ
    428405         */
    429406        if (IN6_IS_ADDR_LINKLOCAL(&rdh->target))
     
    431408
    432409        /*
    433          *  ターゲットアドレスと終点アドレスが同一であれば、オンリンク
     410         *  ターゲットアドレスと終点アドレスが同一であれば、オンリンク
    434411         */
    435412        if (IN6_ARE_ADDR_EQUAL(&rdh->target, &rdh->dst))
     
    437414               
    438415        /*
    439          *  ルータでも、オンリンクでもなければエラー
     416         *  ルータでも、オンリンクでもなければエラー
    440417         */
    441418        if (!router && !onlink)
    442419                goto err_ret;
    443420
    444         /* 近隣探索オプションのオフセットを記録する。*/
     421        /* 近隣探索オプションのオフセットを記録する。*/
    445422        if (nd6_options(nd_opt_off, input->buf +  off + ND_REDIRECT_HDR_SIZE,
    446423                                    input->len - (off + ND_REDIRECT_HDR_SIZE)) != E_OK)
    447424                goto err_ret;
    448425
    449         /* 近隣探索オプション (向け直しのルータのリンクアドレス) */
     426        /* 近隣探索オプション (向け直しのルータのリンクアドレス) */
    450427        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_TARGET_LINKADDR)]) {
    451428                opth = (T_ND_OPT_HDR *)((uint8_t *)(input->buf + off + ND_REDIRECT_HDR_SIZE) +
    452429                                        nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_TARGET_LINKADDR)] - 8);
    453                 /* 注意: オプションオフセットé
    454 åˆ—には、オフセット + 8 が設定されている。*/
     430                /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/
    455431                lladdr     = (uint8_t *)(opth + 1);
    456432                lladdr_len = (opth->len << 3);
     
    458434
    459435        /*
    460          *  ネットワークインタフェースのアドレス長が一致しなければエラー
     436         *  ネットワークインタフェースのアドレス長が一致しなければエラー
    461437         */
    462438        if (lladdr && lladdr_len != ((sizeof(T_IF_ADDR) + sizeof(T_ND_OPT_HDR) + 7) & ~7))
    463439                goto err_ret;
    464440
    465         /* 向け直しのルータのリンクアドレスを近隣キャッシュに登録する。*/
     441        /* 向け直しのルータのリンクアドレスを近隣キャッシュに登録する。*/
    466442        nd6_cache_lladdr(ifp, &rdh->target, (T_IF_ADDR *)lladdr, ND_REDIRECT,
    467443                         onlink ? ND_REDIRECT_ONLINK : ND_REDIRECT_ROUTER);
    468444
    469         /* ルーティング表に登録する。*/
     445        /* ルーティング表に登録する。*/
    470446        in6_rtredirect(&rdh->target, &rdh->dst, 128, IN_RTF_REDIRECT, TMO_IN_REDIRECT);
    471447
     
    482458
    483459/*
    484  *  icmp6_input -- ICMP6 のå
    485 ¥åŠ›é–¢æ•°
     460 *  icmp6_input -- ICMP6 の入力関数
    486461 */
    487462
     
    500475        NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInMsgs, 1);
    501476
    502         /* ICMP6 ヘッダの長さをチェックする。*/
     477        /* ICMP6 ヘッダの長さをチェックする。*/
    503478        len  = input->len - off;
    504479        if (len < ICMP6_HDR_SIZE) {
     
    511486        icmp6h = GET_ICMP6_HDR(input, off);
    512487
    513         /* チェックサムを計算する。*/
     488        /* チェックサムを計算する。*/
    514489        if ((in6_cksum(input, IPPROTO_ICMPV6, off, ntohs(ip6h->plen) - (off - IF_IP6_HDR_SIZE)) & 0xffff) != 0) {
    515490                NET_COUNT_ICMP6(net_count_icmp6[NC_ICMP6_IN_ERR_PACKETS], 1);
     
    520495        code = icmp6h->code;
    521496
    522         /* メッセージの型により分岐する。*/
     497        /* メッセージの型により分岐する。*/
    523498        switch (icmp6h->type) {
    524499
    525         case ICMP6_DST_UNREACH:                 /* 宛å
    526 ˆåˆ°é”不可能                */
     500        case ICMP6_DST_UNREACH:                 /* 宛先到達不可能              */
    527501                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInDestUnreachs, 1);
    528502                icmp6_notify_error(input, off);
    529503                break;
    530504
    531         case ICMP6_ECHO_REQUEST:                /* エコー要求                      */
     505        case ICMP6_ECHO_REQUEST:                /* エコー要求                        */
    532506                icmp6_echo_request(input, off);
    533507                return IPPROTO_DONE;
    534508                break;
    535509
    536         case ICMP6_ECHO_REPLY:                  /* エコー応答                      */
     510        case ICMP6_ECHO_REPLY:                  /* エコー応答                        */
    537511
    538512#ifdef ICMP_CFG_CALLBACK_ECHO_REPLY
     
    544518                break;
    545519
    546         case ND_ROUTER_ADVERT:                  /* ルータ通知                      */
     520        case ND_ROUTER_ADVERT:                  /* ルータ通知                        */
    547521                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInRouterAdvertisements, 1);
    548522                if (code != 0 || len < ROUTER_ADVERT_HDR_SIZE)
     
    552526                break;
    553527
    554         case ND_NEIGHBOR_SOLICIT:               /* 近隣要請                 */
     528        case ND_NEIGHBOR_SOLICIT:               /* 近隣要請                 */
    555529                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInNeighborSolicits, 1);
    556530                if (code != 0 || len < NEIGHBOR_SOLICIT_HDR_SIZE)
     
    560534                break;
    561535
    562         case ND_NEIGHBOR_ADVERT:                /* 近隣通知                 */
     536        case ND_NEIGHBOR_ADVERT:                /* 近隣通知                 */
    563537                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInNeighborAdvertisements, 1);
    564538                if (code != 0 || len < NEIGHBOR_ADVERT_HDR_SIZE)
     
    568542                break;
    569543
    570         case ND_REDIRECT:                       /* 向け直し                 */
     544        case ND_REDIRECT:                       /* 向け直し                 */
    571545                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInRedirects, 1);
    572546
     
    592566                break;
    593567
    594         case ICMP6_PACKET_TOO_BIG:              /* パケットが大きすぎる。    */
     568        case ICMP6_PACKET_TOO_BIG:              /* パケットが大きすぎる。  */
    595569
    596570#if NUM_IN6_HOSTCACHE_ENTRY > 0
     
    603577                break;
    604578
    605         case ICMP6_TIME_EXCEEDED:               /* TTL をè¶
    606 éŽã—た。            */
     579        case ICMP6_TIME_EXCEEDED:               /* TTL を超過した。           */
    607580                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInTimeExcds, 1);
    608581                break;
    609582
    610         case ICMP6_PARAM_PROB:                  /* IPv6 ヘッダが不正。           */
     583        case ICMP6_PARAM_PROB:                  /* IPv6 ヘッダが不正。         */
    611584                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInParmProblems, 1);
    612585                break;
    613586
    614         case MLD_LISTENER_QUERY:                /* マルチキャスト受信è€
    615 ç
    616 §ä¼š    */
    617         case MLD_LISTENER_REPORT:               /* マルチキャスト受信è€
    618 å ±å‘Š  */
    619         case MLD_LISTENER_DONE:                 /* マルチキャスト受信è€
    620 çµ‚了  */
    621         case ND_ROUTER_SOLICIT:                 /* ルータ要請                      */
    622         case ICMP6_ROUTER_RENUMBERING:          /* ルータ番号再設定             */
    623         case ICMP6_FQDN_QUERY:                  /* FQDN ç
    624 §ä¼š                    */
    625         case ICMP6_FQDN_REPLY:                  /* FQDN 応答                  */
     587        case MLD_LISTENER_QUERY:                /* マルチキャスト受信者照会 */
     588        case MLD_LISTENER_REPORT:               /* マルチキャスト受信者報告 */
     589        case MLD_LISTENER_DONE:                 /* マルチキャスト受信者終了 */
     590        case ND_ROUTER_SOLICIT:                 /* ルータ要請                        */
     591        case ICMP6_ROUTER_RENUMBERING:          /* ルータ番号再設定             */
     592        case ICMP6_FQDN_QUERY:                  /* FQDN 照会                      */
     593        case ICMP6_FQDN_REPLY:                  /* FQDN 応答                      */
    626594                syslog(LOG_INFO, "[ICMP6] unsupported type: %d.", icmp6h->type);
    627595                break;
     
    640608
    641609/*
    642  *  icmp6_error -- ICMP6 エラー送信関数
     610 *  icmp6_error -- ICMP6 エラー送信関数
    643611 */
    644612
     
    655623
    656624        /*
    657          *  宛å
    658 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã®å ´åˆã¯ã€
    659          *  以下の条件以外のときは処理を行わない。
     625         *  宛先アドレスが、マルチキャストの場合は、
     626         *  以下の条件以外のときは処理を行わない。
    660627         *
    661          *    ・データグラムが大きすぎる。
    662          *    ・IPv6 ヘッダの不正で、オプションが認識できない。
     628         *    ・データグラムが大きすぎる。
     629         *    ・IPv6 ヘッダの不正で、オプションが認識できない。
    663630         */
    664631        if (IN6_IS_ADDR_MULTICAST(&ip6h->dst) &&
     
    668635
    669636        /*
    670          *  始点アドレスが、以下の場合は処理を行わない。
     637         *  始点アドレスが、以下の場合は処理を行わない。
    671638         *
    672          *    ・無指定
    673          *    ・マルチキャスト
     639         *    ・無指定
     640         *    ・マルチキャスト
    674641         */
    675642        if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src) ||
     
    677644                goto buf_rel;
    678645
    679         /* 最後のヘッダを探索する。*/
     646        /* 最後のヘッダを探索する。*/
    680647        off = ip6_lasthdr(input, 0, IPPROTO_IPV6, &next);
    681648
    682649        /*
    683          *  タイプが、エラーか向け直しの ICMP6 パケットのエラーには返答しない。
     650         *  タイプが、エラーか向け直しの ICMP6 パケットのエラーには返答しない。
    684651         */
    685652        if (off >= 0 && next == IPPROTO_ICMPV6) {
     
    695662                }
    696663
    697         /* DoS 攻撃に対する防御は未実è£
    698  */
    699 
    700         /*
    701          *  送り返すメッセージ長を、ICMPv6 の最大ペイロード長に調整する。
     664        /* DoS 攻撃に対する防御は未実装 */
     665
     666        /*
     667         *  送り返すメッセージ長を、ICMPv6 の最大ペイロード長に調整する。
    702668         *  IPV6_MMTU - (IP6_HDR_SIZE + ICMP6_HDR_SIZE)
    703669         */
     
    707673                len = input->len - IF_HDR_SIZE;
    708674
    709         /* 送信用のネットワークバッファを獲得する。*/
     675        /* 送信用のネットワークバッファを獲得する。*/
    710676        if (in6_get_datagram(&output, len + ICMP6_HDR_SIZE, 0,
    711677                             &ip6h->src, &in6_addr_unspecified,
     
    714680                goto buf_rel;
    715681
    716         /* ICMP6 ヘッダを設定する。*/
     682        /* ICMP6 ヘッダを設定する。*/
    717683        icmp6h = GET_ICMP6_HDR(output, IF_IP6_ICMP6_HDR_OFFSET);
    718684        icmp6h->type       = type;
     
    720686        icmp6h->icmp6_pptr = htonl(param);
    721687 
    722         /* エラーデータを設定する。*/
     688        /* エラーデータを設定する。*/
    723689        memcpy(GET_ICMP6_SDU(output, IF_IP6_ICMP6_HDR_OFFSET), (uint8_t *)ip6h, len);
    724690
     
    741707#endif  /* of #ifdef SUPPORT_MIB */
    742708
    743         /* 送信する。*/
     709        /* 送信する。*/
    744710        icmp6_output(output, IF_IP6_HDR_SIZE);
    745711
Note: See TracChangeset for help on using the changeset viewer.