Ignore:
Timestamp:
Aug 23, 2017, 9:27:43 AM (7 years ago)
Author:
coas-nagasima
Message:

文字コードを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/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
    r270 r321  
    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$
     
    155143
    156144/*
    157  *  変数
     145 *  変数
    158146 */
    159147
     
    161149
    162150/*
    163  *  SNMP の 管理æƒ
    164 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     151 *  SNMP の 管理情報ベース (MIB)
    165152 */
    166153
     
    170157
    171158/*
    172  *  icmp6_output -- ICMP6 パケットを送信する。
     159 *  icmp6_output -- ICMP6 パケットを送信する。
    173160 */
    174161
     
    182169
    183170        /*
    184          *  宛å
    185 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    186 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    187          *  ネットワークインタフェースから探索して利用する。
     171         *  宛先アドレスにふさわしい送信元アドレスを、
     172         *  ネットワークインタフェースから探索して利用する。
    188173         */
    189174        ip6h = GET_IP6_HDR(output);
     
    197182        icmp6h = GET_ICMP6_HDR(output, off);
    198183
    199         /* チェックサムを計算する。*/
     184        /* チェックサムを計算する。*/
    200185        icmp6h->sum = 0;
    201186        icmp6h->sum = in6_cksum(output, IPPROTO_ICMPV6, (uint8_t*)icmp6h - output->buf,
    202187                                ntohs(ip6h->plen) - (off - IF_IP6_HDR_SIZE));
    203188
    204         /* 送信する。*/
     189        /* 送信する。*/
    205190        NET_COUNT_ICMP6(net_count_icmp6[NC_ICMP6_OUT_OCTETS],
    206191                       output->len - GET_IF_IP6_HDR_SIZE(output));
     
    211196
    212197/*
    213  *  icmp6_echo_request -- エコー要求を受信したときの処理
     198 *  icmp6_echo_request -- エコー要求を受信したときの処理
    214199 */
    215200
     
    229214
    230215        /*
    231          *  IPv6 ヘッダと ICMPv6 ヘッダ間の拡張ヘッダを除去する。
     216         *  IPv6 ヘッダと ICMPv6 ヘッダ間の拡張ヘッダを除去する。
    232217         */
    233218        diff = off - IF_IP6_HDR_SIZE;
    234219        if (diff > 0) {
    235                 /* ICMPv6 ヘッダを前に詰める。*/
     220                /* ICMPv6 ヘッダを前に詰める。*/
    236221                memmove(input->buf + IF_IP6_HDR_SIZE, input->buf + off, input->len - off);
    237222                off = IF_IP6_HDR_SIZE;
    238223
    239                 /* ペイロード長を調整する。*/
     224                /* ペイロード長を調整する。*/
    240225                ip6h->plen  = htons(ntohs(ip6h->plen) - diff);
    241226                input->len -= diff;
     
    250235
    251236        /*
    252          *  メッセージの型をエコー要求 (128) から
    253          *  エコー応答 (129) に変更して送り返す。
     237         *  メッセージの型をエコー要求 (128) から
     238         *  エコー応答 (129) に変更して送り返す。
    254239         */
    255240        icmp6h->type = ICMP6_ECHO_REPLY;
    256241
    257         /* IPv6 ヘッダの発信å
    258 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã¨å®›å
    259 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å
    260 ¥æ›¿ãˆã‚‹ã€‚*/
     242        /* IPv6 ヘッダの発信元アドレスと宛先アドレスを入替える。*/
    261243        dst       = ip6h->dst;
    262244        ip6h->dst = ip6h->src;
     
    264246
    265247        /*
    266          *  å
    267 ƒã®å®›å
    268 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã®å ´åˆã¯ã€
    269          *  宛å
    270 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    271 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    272          *  ネットワークインタフェースから探索して利用する。
     248         *  元の宛先アドレスがマルチキャストの場合は、
     249         *  宛先アドレスにふさわしい送信元アドレスを、
     250         *  ネットワークインタフェースから探索して利用する。
    273251         */
    274252        if (IN6_IS_ADDR_MULTICAST(&dst)) {
     
    281259                }
    282260
    283         /* 次ヘッダとホップリミットを設定する。*/
     261        /* 次ヘッダとホップリミットを設定する。*/
    284262        ip6h->next = IPPROTO_ICMPV6;
    285263        ip6h->hlim = IP_DEFTTL;
    286264
    287         /* チェックサムを計算する。*/
     265        /* チェックサムを計算する。*/
    288266        icmp6h->sum = 0;
    289267        icmp6h->sum = in6_cksum(input, IPPROTO_ICMPV6, (uint8_t*)icmp6h - input->buf,
    290268                                ntohs(ip6h->plen) - (off - IF_IP6_HDR_SIZE));
    291269
    292         /* 送信する。*/
     270        /* 送信する。*/
    293271        NET_COUNT_ICMP6(net_count_icmp6[NC_ICMP6_OUT_OCTETS],
    294272                       input->len - GET_IF_IP6_HDR_SIZE(input));
     
    300278
    301279/*
    302  *  icmp6_notify_error -- エラーを通知する。
     280 *  icmp6_notify_error -- エラーを通知する。
    303281 */
    304282
     
    312290        len  = input->len - poff;
    313291
    314         /* データグラム長が ICMP6 ヘッダ長 + IP6 ヘッダ長以下なら何もしない。*/
     292        /* データグラム長が ICMP6 ヘッダ長 + IP6 ヘッダ長以下なら何もしない。*/
    315293        if (len < ICMP6_HDR_SIZE + IP6_HDR_SIZE)
    316294                return;
     
    318296        icmp6h = GET_ICMP6_HDR(input, poff);
    319297
    320         /* 最終ヘッダを探索する。*/
     298        /* 最終ヘッダを探索する。*/
    321299        loff = ip6_lasthdr(input, poff + ICMP6_HDR_SIZE, IPPROTO_IPV6, &next);
    322300
    323         /* 最終ヘッダが TCP のみ対応する。*/
     301        /* 最終ヘッダが TCP のみ対応する。*/
    324302        if (loff >= 0 && next == IPPROTO_TCP) {
    325303
     
    341319
    342320/*
    343  *  icmp6_mtudisc_update -- Path MTU を更新する。
     321 *  icmp6_mtudisc_update -- Path MTU を更新する。
    344322 */
    345323
     
    365343
    366344/*
    367  *  icmp6_redirect_input -- 向け直しメッセージの処理
     345 *  icmp6_redirect_input -- 向け直しメッセージの処理
    368346 */
    369347
     
    384362
    385363        /*
    386          *  IP ヘッダのチェック、以下の場合は破棄する。
    387          *    ・リンクローカル以外から送られてきたメッセージ
    388          *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
     364         *  IP ヘッダのチェック、以下の場合は破棄する。
     365         *    ・リンクローカル以外から送られてきたメッセージ
     366         *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
    389367         */
    390368        if (!IN6_IS_ADDR_LINKLOCAL(&ip6h->src) || ip6h->hlim != IPV6_MAXHLIM)
     
    393371        rdh  = (T_ND_REDIRECT_HDR *)(input->buf + off);
    394372
    395         /* 向け直しの終点アドレスがマルチキャストアドレスの場合は破棄する。*/
     373        /* 向け直しの終点アドレスがマルチキャストアドレスの場合は破棄する。*/
    396374        if (IN6_IS_ADDR_MULTICAST(&rdh->dst))
    397375                goto err_ret;
    398376
    399         /* ターゲットアドレスが経路表に登録されているかチェックする。*/
     377        /* ターゲットアドレスが経路表に登録されているかチェックする。*/
    400378        if ((gw = in6_rtalloc(ifp, &rdh->dst)) != NULL) {
    401                 /* GW アドレスと送信å
    402 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ãŒç•°ãªã£ã¦ã„れば破棄する。*/
     379                /* GW アドレスと送信元アドレスが異なっていれば破棄する。*/
    403380                if (!IN6_ARE_ADDR_EQUAL(gw, &ip6h->src))
    404381                        goto err_ret;
    405382                }
    406         else    /* 経路表になければ破棄する。*/
     383        else    /* 経路表になければ破棄する。*/
    407384                goto err_ret;
    408385
     
    410387
    411388        /*
    412          *  ターゲットアドレスがリンクローカルアドレスであれば、
    413          *  ターゲットはルータ
     389         *  ターゲットアドレスがリンクローカルアドレスであれば、
     390         *  ターゲットはルータ
    414391         */
    415392        if (IN6_IS_ADDR_LINKLOCAL(&rdh->target))
     
    417394
    418395        /*
    419          *  ターゲットアドレスと終点アドレスが同一であれば、オンリンク
     396         *  ターゲットアドレスと終点アドレスが同一であれば、オンリンク
    420397         */
    421398        if (IN6_ARE_ADDR_EQUAL(&rdh->target, &rdh->dst))
     
    423400               
    424401        /*
    425          *  ルータでも、オンリンクでもなければエラー
     402         *  ルータでも、オンリンクでもなければエラー
    426403         */
    427404        if (!router && !onlink)
    428405                goto err_ret;
    429406
    430         /* 近隣探索オプションのオフセットを記録する。*/
     407        /* 近隣探索オプションのオフセットを記録する。*/
    431408        if (nd6_options(nd_opt_off, input->buf +  off + ND_REDIRECT_HDR_SIZE,
    432409                                    input->len - (off + ND_REDIRECT_HDR_SIZE)) != E_OK)
    433410                goto err_ret;
    434411
    435         /* 近隣探索オプション (向け直しのルータのリンクアドレス) */
     412        /* 近隣探索オプション (向け直しのルータのリンクアドレス) */
    436413        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_TARGET_LINKADDR)]) {
    437414                opth = (T_ND_OPT_HDR *)((uint8_t *)(input->buf + off + ND_REDIRECT_HDR_SIZE) +
    438415                                        nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_TARGET_LINKADDR)] - 8);
    439                 /* 注意: オプションオフセットé
    440 åˆ—には、オフセット + 8 が設定されている。*/
     416                /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/
    441417                lladdr     = (uint8_t *)(opth + 1);
    442418                lladdr_len = (opth->len << 3);
     
    444420
    445421        /*
    446          *  ネットワークインタフェースのアドレス長が一致しなければエラー
     422         *  ネットワークインタフェースのアドレス長が一致しなければエラー
    447423         */
    448424        if (lladdr && lladdr_len != ((sizeof(T_IF_ADDR) + sizeof(T_ND_OPT_HDR) + 7) & ~7))
    449425                goto err_ret;
    450426
    451         /* 向け直しのルータのリンクアドレスを近隣キャッシュに登録する。*/
     427        /* 向け直しのルータのリンクアドレスを近隣キャッシュに登録する。*/
    452428        nd6_cache_lladdr(ifp, &rdh->target, (T_IF_ADDR *)lladdr, ND_REDIRECT,
    453429                         onlink ? ND_REDIRECT_ONLINK : ND_REDIRECT_ROUTER);
    454430
    455         /* ルーティング表に登録する。*/
     431        /* ルーティング表に登録する。*/
    456432        in6_rtredirect(&rdh->target, &rdh->dst, 128, IN_RTF_REDIRECT, TMO_IN_REDIRECT);
    457433
     
    467443
    468444/*
    469  *  icmp6_input -- ICMP6 のå
    470 ¥åŠ›é–¢æ•°
     445 *  icmp6_input -- ICMP6 の入力関数
    471446 */
    472447
     
    485460        NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInMsgs, 1);
    486461
    487         /* ICMP6 ヘッダの長さをチェックする。*/
     462        /* ICMP6 ヘッダの長さをチェックする。*/
    488463        len  = input->len - off;
    489464        if (len < ICMP6_HDR_SIZE) {
     
    496471        icmp6h = GET_ICMP6_HDR(input, off);
    497472
    498         /* チェックサムを計算する。*/
     473        /* チェックサムを計算する。*/
    499474        if ((in6_cksum(input, IPPROTO_ICMPV6, off, ntohs(ip6h->plen) - (off - IF_IP_HDR_SIZE)) & 0xffff) != 0) {
    500475                NET_COUNT_ICMP6(net_count_icmp6[NC_ICMP6_IN_ERR_PACKETS], 1);
     
    505480        code = icmp6h->code;
    506481
    507         /* メッセージの型により分岐する。*/
     482        /* メッセージの型により分岐する。*/
    508483        switch (icmp6h->type) {
    509484
    510         case ICMP6_DST_UNREACH:                 /* 宛å
    511 ˆåˆ°é”不可能                */
     485        case ICMP6_DST_UNREACH:                 /* 宛先到達不可能              */
    512486                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInDestUnreachs, 1);
    513487                icmp6_notify_error(input, off);
    514488                break;
    515489
    516         case ICMP6_ECHO_REQUEST:                /* エコー要求                      */
     490        case ICMP6_ECHO_REQUEST:                /* エコー要求                        */
    517491                icmp6_echo_request(input, off);
    518492                return IPPROTO_DONE;
    519493                break;
    520494
    521         case ICMP6_ECHO_REPLY:                  /* エコー応答                      */
     495        case ICMP6_ECHO_REPLY:                  /* エコー応答                        */
    522496
    523497#ifdef ICMP_CFG_CALLBACK_ECHO_REPLY
     
    529503                break;
    530504
    531         case ND_ROUTER_ADVERT:                  /* ルータ通知                      */
     505        case ND_ROUTER_ADVERT:                  /* ルータ通知                        */
    532506                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInRouterAdvertisements, 1);
    533507                if (code != 0 || len < ROUTER_ADVERT_HDR_SIZE)
     
    537511                break;
    538512
    539         case ND_NEIGHBOR_SOLICIT:               /* 近隣要請                 */
     513        case ND_NEIGHBOR_SOLICIT:               /* 近隣要請                 */
    540514                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInNeighborSolicits, 1);
    541515                if (code != 0 || len < NEIGHBOR_SOLICIT_HDR_SIZE)
     
    545519                break;
    546520
    547         case ND_NEIGHBOR_ADVERT:                /* 近隣通知                 */
     521        case ND_NEIGHBOR_ADVERT:                /* 近隣通知                 */
    548522                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInNeighborAdvertisements, 1);
    549523                if (code != 0 || len < NEIGHBOR_ADVERT_HDR_SIZE)
     
    553527                break;
    554528
    555         case ND_REDIRECT:                       /* 向け直し                 */
     529        case ND_REDIRECT:                       /* 向け直し                 */
    556530                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInRedirects, 1);
    557531
     
    571545                break;
    572546
    573         case ICMP6_PACKET_TOO_BIG:              /* パケットが大きすぎる。    */
     547        case ICMP6_PACKET_TOO_BIG:              /* パケットが大きすぎる。  */
    574548
    575549#if NUM_IN6_HOSTCACHE_ENTRY > 0
     
    582556                break;
    583557
    584         case ICMP6_TIME_EXCEEDED:               /* TTL をè¶
    585 éŽã—た。            */
     558        case ICMP6_TIME_EXCEEDED:               /* TTL を超過した。           */
    586559                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInTimeExcds, 1);
    587560                break;
    588561
    589         case ICMP6_PARAM_PROB:                  /* IPv6 ヘッダが不正。           */
     562        case ICMP6_PARAM_PROB:                  /* IPv6 ヘッダが不正。         */
    590563                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInParmProblems, 1);
    591564                break;
    592565
    593         case MLD_LISTENER_QUERY:                /* マルチキャスト受信è€
    594 ç
    595 §ä¼š    */
    596         case MLD_LISTENER_REPORT:               /* マルチキャスト受信è€
    597 å ±å‘Š  */
    598         case MLD_LISTENER_DONE:                 /* マルチキャスト受信è€
    599 çµ‚了  */
    600         case ND_ROUTER_SOLICIT:                 /* ルータ要請                      */
    601         case ICMP6_ROUTER_RENUMBERING:          /* ルータ番号再設定             */
    602         case ICMP6_FQDN_QUERY:                  /* FQDN ç
    603 §ä¼š                    */
    604         case ICMP6_FQDN_REPLY:                  /* FQDN 応答                  */
     566        case MLD_LISTENER_QUERY:                /* マルチキャスト受信者照会 */
     567        case MLD_LISTENER_REPORT:               /* マルチキャスト受信者報告 */
     568        case MLD_LISTENER_DONE:                 /* マルチキャスト受信者終了 */
     569        case ND_ROUTER_SOLICIT:                 /* ルータ要請                        */
     570        case ICMP6_ROUTER_RENUMBERING:          /* ルータ番号再設定             */
     571        case ICMP6_FQDN_QUERY:                  /* FQDN 照会                      */
     572        case ICMP6_FQDN_REPLY:                  /* FQDN 応答                      */
    605573                syslog(LOG_WARNING, "[ICMP6] unsupported type: %d.", icmp6h->type);
    606574                break;
     
    619587
    620588/*
    621  *  icmp6_error -- ICMP6 エラー送信関数
     589 *  icmp6_error -- ICMP6 エラー送信関数
    622590 */
    623591
     
    634602
    635603        /*
    636          *  宛å
    637 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã®å ´åˆã¯ã€
    638          *  以下の条件以外のときは処理を行わない。
     604         *  宛先アドレスが、マルチキャストの場合は、
     605         *  以下の条件以外のときは処理を行わない。
    639606         *
    640          *    ・データグラムが大きすぎる。
    641          *    ・IPv6 ヘッダの不正で、オプションが認識できない。
     607         *    ・データグラムが大きすぎる。
     608         *    ・IPv6 ヘッダの不正で、オプションが認識できない。
    642609         */
    643610        if (IN6_IS_ADDR_MULTICAST(&ip6h->dst) &&
     
    647614
    648615        /*
    649          *  始点アドレスが、以下の場合は処理を行わない。
     616         *  始点アドレスが、以下の場合は処理を行わない。
    650617         *
    651          *    ・無指定
    652          *    ・マルチキャスト
     618         *    ・無指定
     619         *    ・マルチキャスト
    653620         */
    654621        if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src) ||
     
    656623                goto buf_rel;
    657624
    658         /* 最後のヘッダを探索する。*/
     625        /* 最後のヘッダを探索する。*/
    659626        off = ip6_lasthdr(input, 0, IPPROTO_IPV6, &next);
    660627
    661628        /*
    662          *  タイプが、エラーか向け直しの ICMP6 パケットのエラーには返答しない。
     629         *  タイプが、エラーか向け直しの ICMP6 パケットのエラーには返答しない。
    663630         */
    664631        if (off >= 0 && next == IPPROTO_ICMPV6) {
     
    674641                }
    675642
    676         /* DoS 攻撃に対する防御は未実è£
    677  */
    678 
    679         /*
    680          *  送り返すメッセージ長を、ICMPv6 の最大ペイロード長に調整する。
     643        /* DoS 攻撃に対する防御は未実装 */
     644
     645        /*
     646         *  送り返すメッセージ長を、ICMPv6 の最大ペイロード長に調整する。
    681647         *  IPV6_MMTU - (IP6_HDR_SIZE + ICMP6_HDR_SIZE)
    682648         */
     
    686652                len = input->len - IF_HDR_SIZE;
    687653
    688         /* 送信用のネットワークバッファを獲得する。*/
     654        /* 送信用のネットワークバッファを獲得する。*/
    689655        if (in6_get_datagram(&output, len + ICMP6_HDR_SIZE, 0,
    690656                             &ip6h->src, &in6_addr_unspecified,
     
    693659                goto buf_rel;
    694660
    695         /* ICMP6 ヘッダを設定する。*/
     661        /* ICMP6 ヘッダを設定する。*/
    696662        icmp6h = GET_ICMP6_HDR(output, IF_IP6_ICMP6_HDR_OFFSET);
    697663        icmp6h->type       = type;
     
    699665        icmp6h->icmp6_pptr = htonl(param);
    700666 
    701         /* エラーデータを設定する。*/
     667        /* エラーデータを設定する。*/
    702668        memcpy(GET_ICMP6_SDU(output, IF_IP6_ICMP6_HDR_OFFSET), (uint8_t *)ip6h, len);
    703669
     
    720686#endif  /* of #ifdef SUPPORT_MIB */
    721687
    722         /* 送信する。*/
     688        /* 送信する。*/
    723689        icmp6_output(output, IF_IP6_HDR_SIZE);
    724690
Note: See TracChangeset for help on using the changeset viewer.