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/nd6_rtr.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$
     
    123111
    124112/*
    125  *  外部関数の定義
     113 *  外部関数の定義
    126114 */
    127115
     
    133121
    134122/*
    135  *  å
    136 ¨åŸŸå¤‰æ•°
    137  */
    138 
    139 SYSTIM  nd6_base_reachable_time         = ND6_DEF_REACHABLE_TIME;       /* ルータから通知された値            */
    140 SYSTIM  nd6_reachable_time              = ND6_DEF_REACHABLE_TIME;       /* ルータから通知された値の補正値        */
    141 SYSTIM  nd6_recalc_reachtm_interval     = ND6_RECALC_REACHTM_INTERVAL;  /* 到達可能状æ
    142 ‹ã®æœ‰åŠ¹æ™‚間再計算間隔 */
    143 SYSTIM  nd6_retrans_time                = ND6_DEF_RETRANS_TIME;         /* 近隣探索の送信間隔                  */
    144 uint8_t ip6_defhlim                     = IPV6_DEFHLIM;                 /* ホップリミットの規定値            */
    145 
    146 /*
    147  *  局所変数
    148  */
    149 
    150 /*
    151  *  プレフィックス・リスト
     123 *  全域変数
     124 */
     125
     126SYSTIM  nd6_base_reachable_time         = ND6_DEF_REACHABLE_TIME;       /* ルータから通知された値          */
     127SYSTIM  nd6_reachable_time              = ND6_DEF_REACHABLE_TIME;       /* ルータから通知された値の補正値      */
     128SYSTIM  nd6_recalc_reachtm_interval     = ND6_RECALC_REACHTM_INTERVAL;  /* 到達可能状態の有効時間再計算間隔     */
     129SYSTIM  nd6_retrans_time                = ND6_DEF_RETRANS_TIME;         /* 近隣探索の送信間隔                    */
     130uint8_t ip6_defhlim                     = IPV6_DEFHLIM;                 /* ホップリミットの規定値          */
     131
     132/*
     133 *  局所変数
     134 */
     135
     136/*
     137 *  プレフィックス・リスト
    152138 */
    153139
     
    155141
    156142/*
    157  *  ディフォルトルータ・リスト
     143 *  ディフォルトルータ・リスト
    158144 */
    159145
    160146static T_DEF_ROUTER     nd6_def_router[NUM_ND6_DEF_RTR_ENTRY];
    161 static uint_t           def_router_count = 0;                           /* リストにあるルータ数 */
    162 
    163 /*
    164  *  make_mask -- マップ用のマスクを生成する。
     147static uint_t           def_router_count = 0;                           /* リストにあるルータ数 */
     148
     149/*
     150 *  make_mask -- マップ用のマスクを生成する。
    165151 */
    166152
     
    171157        int_t   ix;
    172158
    173         /* マスクを生成する。*/
     159        /* マスクを生成する。*/
    174160        mask = 1;
    175161        for (ix = index; ix -- > 0; )
     
    181167/*
    182168 *  find_pfxlist_reachable_router --
    183  *      指定したプレフィックスを通知したルータがリンク上に存在するかチェックする。
     169 *      指定したプレフィックスを通知したルータがリンク上に存在するかチェックする。
    184170 */
    185171
     
    205191
    206192/*
    207  *  pfxlist_onlink_check -- プレフィックス・リストのオンリンク状æ
    208 ‹ã‚’チェックする。
     193 *  pfxlist_onlink_check -- プレフィックス・リストのオンリンク状態をチェックする。
    209194 *
    210  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    211  *          ロックしてから呼び出すこと。
     195 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     196 *          ロックしてから呼び出すこと。
    212197 */
    213198
     
    230215        if (ix >= 0) {
    231216                /*
    232                  *  オンリンク状æ
    233 ‹ã®ãƒ—レフィックスが最低一つ存在するときの処理。
    234                  *  各プレフィックスのオンリンク状æ
    235 ‹ã‚’、それらを通知してきたルータの
    236                  *  状æ
    237 ‹ã«å¾“って設定する。
     217                 *  オンリンク状態のプレフィックスが最低一つ存在するときの処理。
     218                 *  各プレフィックスのオンリンク状態を、それらを通知してきたルータの
     219                 *  状態に従って設定する。
    238220                 */
    239221
     
    256238        else {
    257239                /*
    258                  *  どのプレフィックスもオンリンクではなく、
    259                  *  ディフォルトルータも存在しないときの処理。
    260                  *  すべてのプレフィックスを使用可能状æ
    261 ‹ã«è¨­å®šã™ã‚‹ã€‚
     240                 *  どのプレフィックスもオンリンクではなく、
     241                 *  ディフォルトルータも存在しないときの処理。
     242                 *  すべてのプレフィックスを使用可能状態に設定する。
    262243                 */
    263244
     
    275256
    276257        /*
    277          *  各プレフィックス毎に、通知してきたルータの状æ
    278 ‹ã¨
    279          *  オンリンクの状æ
    280 ‹ãŒä¸€è‡´ã—なければ、オンリンク状æ
    281 ‹ã‚’更新する。
     258         *  各プレフィックス毎に、通知してきたルータの状態と
     259         *  オンリンクの状態が一致しなければ、オンリンク状態を更新する。
    282260         */
    283261        for (ix = NUM_ND6_PREFIX_ENTRY; ix -- > 0; ) {
     
    302280
    303281        /*
    304          *  リンク上にプレフィックスを通知しているルータが
    305          *  少なくとも 1 台存在するか確認する。
     282         *  リンク上にプレフィックスを通知しているルータが
     283         *  少なくとも 1 台存在するか確認する。
    306284         */
    307285        for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
     
    317295        if (ix >= 0) {
    318296                /*
    319                  *  リンク上にプレフィックスを通知しているルータが
    320                  *  少なくとも 1 台存在する時の処理。
     297                 *  リンク上にプレフィックスを通知しているルータが
     298                 *  少なくとも 1 台存在する時の処理。
    321299                 */
    322300                for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
     
    334312        else {
    335313                /*
    336                  *  リンク上にプレフィックスを通知しているルータが
    337                  *  1 台存在しない時はå
    338 ¨ã¦ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’利用できるようにする。
     314                 *  リンク上にプレフィックスを通知しているルータが
     315                 *  1 台存在しない時は全てのアドレスを利用できるようにする。
    339316                 */
    340317                for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
     
    347324
    348325/*
    349  *  pfxrtr_add -- プレフィックスエントリとディフォルトルータ・エントリをリンクする。
     326 *  pfxrtr_add -- プレフィックスエントリとディフォルトルータ・エントリをリンクする。
    350327 *
    351  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    352  *          ロックしてから呼び出すこと。
     328 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     329 *          ロックしてから呼び出すこと。
    353330 */
    354331
     
    356333pfxrtr_add (int_t prefix_index, int_t rtr_index)
    357334{
    358         /*  プレフィックスエントリとディフォルトルータ・エントリをリンクする。*/
     335        /*  プレフィックスエントリとディフォルトルータ・エントリをリンクする。*/
    359336        nd6_prefix[prefix_index].routermap |= make_mask(rtr_index);
    360337        nd6_def_router[rtr_index].plistmap |= make_mask(prefix_index);
     
    364341
    365342/*
    366  *  nd6_pfxrtr_lookup -- プレフィックスエントリからルータを探索する。
     343 *  nd6_pfxrtr_lookup -- プレフィックスエントリからルータを探索する。
    367344 */
    368345
     
    374351
    375352/*
    376  *  defrouter_select -- 優å
    377 ˆãƒ‡ã‚£ãƒ•ã‚©ãƒ«ãƒˆãƒ»ãƒ«ãƒ¼ã‚¿ã‚’選択しなおす。
     353 *  defrouter_select -- 優先ディフォルト・ルータを選択しなおす。
    378354 *
    379  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    380  *          ロックしてから呼び出すこと。
     355 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     356 *          ロックしてから呼び出すこと。
    381357 */
    382358
     
    392368                if ((ln = nd6_lookup(&dr->addr, false)) != NULL && ND6_IS_LLINFO_PROBREACH(ln)) {
    393369               
    394                         /* 選択したルータをå
    395 ˆé ­ã«ç§»ã™ã€‚*/
     370                        /* 選択したルータを先頭に移す。*/
    396371                        router = *dr;
    397372                        for (tix = ix; tix > 0; tix --)
     
    404379
    405380/*
    406  *  defrtrlist_update -- ディフォルトルータ・リストを更新する。
     381 *  defrtrlist_update -- ディフォルトルータ・リストを更新する。
    407382 *
    408  *      戻り値は、ルータのインデックス。
    409  *      ただし、値が -1 なら、プレフィックス・リストは更新しない。
     383 *      戻り値は、ルータのインデックス。
     384 *      ただし、値が -1 なら、プレフィックス・リストは更新しない。
    410385 */
    411386
     
    420395        syscall(wai_sem(SEM_ND6_DEFRTRLIST));
    421396
    422         /* 登録済か調べる。*/
     397        /* 登録済か調べる。*/
    423398        if ((fdr = nd6_defrtrlist_lookup(src)) != NULL) {
    424                 /* 登録済みの場合の処理 */
     399                /* 登録済みの場合の処理 */
    425400                if (lifetime == 0) {
    426401                        nd6_defrtrlist_del(fdr);
     
    429404                        }
    430405                else {
    431                         fdr->lifetime = lifetime * SYSTIM_HZ;           /* lifetime の単位は秒 */
     406                        fdr->lifetime = lifetime * SYSTIM_HZ;           /* lifetime の単位は秒 */
    432407                        fdr->flags    = flags;
    433408                        fdr->expire   = now + fdr->lifetime;
     
    443418        if (fdr == NULL && def_router_count < NUM_ND6_DEF_RTR_ENTRY) {
    444419                /*
    445                  *  def_router_count < NUM_ND6_DEF_RTR_ENTRY であれば、
    446                  *  nd6_def_router[def_router_count]; が空きエントリ
     420                 *  def_router_count < NUM_ND6_DEF_RTR_ENTRY であれば、
     421                 *  nd6_def_router[def_router_count]; が空きエントリ
    447422                 */
    448423                fdr = &nd6_def_router[def_router_count];
    449424                }
    450425
    451         /* 空きエントリがなければ、有効時間が短いエントリを削除する。*/
     426        /* 空きエントリがなければ、有効時間が短いエントリを削除する。*/
    452427        if (fdr == NULL) {
    453428                T_DEF_ROUTER    *sdr = NULL;
     
    458433                        diff = (int32_t)(dr->expire - now);
    459434                        if (diff <= 0) {        /* dr->expire <= now */
    460                                 /* 既に、有効時間が過ぎている。*/
     435                                /* 既に、有効時間が過ぎている。*/
    461436                                sdr = dr;
    462437                                break;
     
    471446                }
    472447
    473         /* 各メンバに値を設定する。*/
     448        /* 各メンバに値を設定する。*/
    474449        fdr->plistmap = 0;
    475450        fdr->addr     = *src;
    476         fdr->lifetime = lifetime * SYSTIM_HZ;           /* lifetime の単位は秒 */
     451        fdr->lifetime = lifetime * SYSTIM_HZ;           /* lifetime の単位は秒 */
    477452        fdr->flags    = flags;
    478453        fdr->expire   = now + fdr->lifetime;
     
    481456
    482457        /*
    483          *  ディフォルトルータとして登録するが、
    484          *  既にディフォルトルータがあれば選択しなおさない。
     458         *  ディフォルトルータとして登録するが、
     459         *  既にディフォルトルータがあれば選択しなおさない。
    485460         */
    486461        if (fdr - nd6_def_router != 0)
     
    492467
    493468/*
    494  *  in6_ifadd -- インタフェースにアドレスを追加する。
     469 *  in6_ifadd -- インタフェースにアドレスを追加する。
    495470 */
    496471
     
    506481
    507482        /*
    508          *  リンクローカルアドレスが未登録であれば何もしない。
     483         *  リンクローカルアドレスが未登録であれば何もしない。
    509484         */
    510485        if ((lla->flags & IN6_IFF_DEFINED) == 0)
     
    512487
    513488        /*
    514          *  ルータから通知されたプレフィックス長が、
    515          *  リンクローカルアドレスのプレフィックス長と
    516          *  異なっていればエラー
     489         *  ルータから通知されたプレフィックス長が、
     490         *  リンクローカルアドレスのプレフィックス長と
     491         *  異なっていればエラー
    517492         */
    518493        if (lla->prefix_len != pr->prefix_len)
    519494                return E_PAR;
    520495
    521         /* プレフィックスマスクを生成する。*/
     496        /* プレフィックスマスクを生成する。*/
    522497        in6_plen2pmask(&mask, pr->prefix_len);
    523498
    524         /* アドレスを生成する。*/
     499        /* アドレスを生成する。*/
    525500        for (ix = 0; ix < 4; ix ++)
    526501                addr.s6_addr32[ix] = (pr->prefix.s6_addr32[ix] &  mask.s6_addr32[ix])
    527502                                   | ( lla->addr.s6_addr32[ix] & ~mask.s6_addr32[ix]);
    528503
    529         /* フラグを初期化する。*/
     504        /* フラグを初期化する。*/
    530505        ia->flags = 0;
    531506
     
    536511
    537512/*
    538  *  nd6_prefix_lookup -- プレフィックスを探索する。
     513 *  nd6_prefix_lookup -- プレフィックスを探索する。
    539514 */
    540515
     
    556531
    557532/*
    558  *  prelist_remove -- プレフィックスリストからプレフィックスを削除する。
     533 *  prelist_remove -- プレフィックスリストからプレフィックスを削除する。
    559534 *
    560  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    561  *          ロックしてから呼び出すこと。
     535 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     536 *          ロックしてから呼び出すこと。
    562537 */
    563538
     
    569544        int_t   rix;
    570545
    571         /* 有効時間切れにする。*/
     546        /* 有効時間切れにする。*/
    572547        pr->vltime = 0;
    573548        pr->pltime = 0;
     
    579554                }
    580555
    581         /*  プレフィックスエントリとディフォルトルータ・エントリのリンクを解除する。*/
     556        /*  プレフィックスエントリとディフォルトルータ・エントリのリンクを解除する。*/
    582557        pr->routermap = 0;
    583558        mask = make_mask(pr - nd6_prefix);
     
    585560                nd6_def_router[rix].plistmap &= ~mask;
    586561
    587         /* プレフィックスを無効にする。*/
     562        /* プレフィックスを無効にする。*/
    588563        pr->flags &= ~ND6_PREFIX_STATE_BUSY;
    589564
     
    592567
    593568/*
    594  *  nd6_prefix_onlink -- プレフィックスをオンリンクに設定し、アドレスを使用可能にする。
     569 *  nd6_prefix_onlink -- プレフィックスをオンリンクに設定し、アドレスを使用可能にする。
    595570 *
    596  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    597  *          ロックしてから呼び出すこと。
     571 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     572 *          ロックしてから呼び出すこと。
    598573 */
    599574
     
    605580        int_t           ix;
    606581
    607         /* 既にオンリンク状æ
    608 ‹ã«ãªã£ã¦ã„る場合はエラー。*/
     582        /* 既にオンリンク状態になっている場合はエラー。*/
    609583        if ((pr->flags & ND6_PREFIX_STATE_ONLINK) != 0)
    610584                return E_OBJ;
    611585
    612         /* リンクローカルアドレスが未登録であれば何もしない。*/
     586        /* リンクローカルアドレスが未登録であれば何もしない。*/
    613587        lla = &ifp->in_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL];
    614588        if ((lla->flags & IN6_IFF_DEFINED) == 0)
     
    616590
    617591        /*
    618          *  指定されたプレフィックスが割り当てられているインタフェースの
    619          *  アドレスæƒ
    620 å ±ã‚’探す。
     592         *  指定されたプレフィックスが割り当てられているインタフェースの
     593         *  アドレス情報を探す。
    621594         */
    622595        for (ix = NUM_IN6_IFADDR_ENTRY; ix --; ) {
     
    628601        if (ix >= 0) {
    629602
    630                 /* アドレスæƒ
    631 å ±ã‚’使用可能にする。*/
     603                /* アドレス情報を使用可能にする。*/
    632604                ia->flags &= ~IN6_IFF_DETACHED;
    633605
    634                 /* プレフィックスをオンリンクに設定する。*/
     606                /* プレフィックスをオンリンクに設定する。*/
    635607                pr->flags |= ND6_PREFIX_STATE_ONLINK;
    636608                }
     
    640612
    641613/*
    642  *  nd6_prefix_offlink -- プレフィックスをオフリンクに設定し、アドレスを使用不可にする。
     614 *  nd6_prefix_offlink -- プレフィックスをオフリンクに設定し、アドレスを使用不可にする。
    643615 *
    644  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    645  *          ロックしてから呼び出すこと。
     616 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     617 *          ロックしてから呼び出すこと。
    646618 */
    647619
     
    653625        int_t           ix;
    654626
    655         /* 既にオフリンク状æ
    656 ‹ã«ãªã£ã¦ã„る場合はエラー。*/
     627        /* 既にオフリンク状態になっている場合はエラー。*/
    657628        if ((pr->flags & ND6_PREFIX_STATE_ONLINK) == 0)
    658629                return E_OBJ;
    659630
    660631        /*
    661          *  指定されたプレフィックスが割り当てられているインタフェースの
    662          *  アドレスæƒ
    663 å ±ã‚’探す。
     632         *  指定されたプレフィックスが割り当てられているインタフェースの
     633         *  アドレス情報を探す。
    664634         */
    665635        for (ix = NUM_IN6_IFADDR_ENTRY; ix --; ) {
     
    671641        if (ix >= 0) {
    672642
    673                 /* アドレスæƒ
    674 å ±ã‚’使用不可にする。*/
     643                /* アドレス情報を使用不可にする。*/
    675644                ia->flags |= IN6_IFF_DETACHED;
    676645
    677                 /* プレフィックスをオフリンクに設定する。*/
     646                /* プレフィックスをオフリンクに設定する。*/
    678647                pr->flags &= ~ND6_PREFIX_STATE_ONLINK;
    679648                }
     
    683652
    684653/*
    685  *  in6_init_prefix_ltimes -- プレフィックスの有効時間を設定する。
     654 *  in6_init_prefix_ltimes -- プレフィックスの有効時間を設定する。
    686655 */
    687656
     
    691660        SYSTIM          now;
    692661
    693         /* 推奨有効時間が有効時間より長いときはエラー */
     662        /* 推奨有効時間が有効時間より長いときはエラー */
    694663        if (pr->pltime > pr->vltime)
    695664                return E_PAR;
     
    712681
    713682/*
    714  *  nd6_prelist_add -- プレフィックスリストにプレフィックスを追加する。
     683 *  nd6_prelist_add -- プレフィックスリストにプレフィックスを追加する。
    715684 *
    716  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    717  *          ロックしてから呼び出すこと。
     685 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     686 *          ロックしてから呼び出すこと。
    718687 */
    719688
     
    725694        ER              error;
    726695
    727         /* プレフィックスリストから空きのプレフィックスエントリを探索する。*/
     696        /* プレフィックスリストから空きのプレフィックスエントリを探索する。*/
    728697        for (ix = NUM_ND6_PREFIX_ENTRY; ix --; ) {
    729698                pr = &nd6_prefix[ix];
     
    732701                }
    733702
    734         /* プレフィックスリストに空きがなければエラー */
     703        /* プレフィックスリストに空きがなければエラー */
    735704        if (ix < 0)
    736705                return NULL;
     
    738707        pr->flags |= ND6_PREFIX_STATE_BUSY;
    739708
    740         /* プレフィックスを追加する。*/
     709        /* プレフィックスを追加する。*/
    741710        pr->prefix     = pi->prefix;
    742711        pr->prefix_len = pi->prefix_len;
    743712
    744         /* フラグを設定する。*/
     713        /* フラグを設定する。*/
    745714        if ((pi->flags & ND_OPT_PI_FLAG_ONLINK) != 0)
    746715                pr->flags |= ND6_PREFIX_FLAG_ONLINK;
     
    748717                pr->flags |= ND6_PREFIX_FLAG_AUTO;
    749718
    750         /* プレフィックスの有効時間を設定する。*/
     719        /* プレフィックスの有効時間を設定する。*/
    751720        pr->vltime = ntohl(pi->valid);
    752721        pr->pltime = ntohl(pi->preferred);
     
    758727                }
    759728
    760         /* ルータマップを初期化する。*/
     729        /* ルータマップを初期化する。*/
    761730        pr->routermap = 0;
    762731
    763         /* ルータを追加する。*/
     732        /* ルータを追加する。*/
    764733        pfxrtr_add(pr - nd6_prefix, rtr_index);
    765734
     
    768737
    769738/*
    770  *  prelist_update -- プレフィックス・リストを更新する。
     739 *  prelist_update -- プレフィックス・リストを更新する。
    771740 */
    772741
     
    782751        if ((pr = nd6_prefix_lookup(&pi->prefix, pi->prefix_len)) != NULL) {
    783752                /*
    784                  *  登録済みの場合は、プレフィックスリストを更新する。
     753                 *  登録済みの場合は、プレフィックスリストを更新する。
    785754                 */
    786755
    787756                /*
    788                  *  フラグの更新の注意:
    789                  *    on-link ビットと autonomous ビットは
    790                  *    1 から 0 に変更してはならない。
     757                 *  フラグの更新の注意:
     758                 *    on-link ビットと autonomous ビットは
     759                 *    1 から 0 に変更してはならない。
    791760                 */
    792761
     
    798767                if ((pi->flags & ND_OPT_PI_FLAG_ONLINK) != 0) {
    799768                        /*
    800                          *  通知されたプレフィックスがオンリンクの時は、
    801                          *  有効時間を更新する。
     769                         *  通知されたプレフィックスがオンリンクの時は、
     770                         *  有効時間を更新する。
    802771                         */
    803772                        pr->vltime = ntohl(pi->valid);
     
    809778                    (pr->flags & ND6_PREFIX_STATE_ONLINK) == 0) {
    810779                        /*
    811                          *  オフリンクのプレフィックスがオンリンクになった時の処理を実行する。
     780                         *  オフリンクのプレフィックスがオンリンクになった時の処理を実行する。
    812781                         */
    813782                        if (nd6_prefix_onlink(pr) != E_OK) {
     
    821790                        pfxrtr_add(pr - nd6_prefix, router_index);
    822791                }
    823         else {  /* 未登録の場合 */
    824 
    825                 /* 有効時間 0 のプレフィックスは追加しない。*/
     792        else {  /* 未登録の場合 */
     793
     794                /* 有効時間 0 のプレフィックスは追加しない。*/
    826795                if (pi->valid == 0) {
    827796                        syscall(sig_sem(SEM_ND6_DEFRTRLIST));
     
    829798                        }
    830799
    831                 /* オフリンクでアドレス自動設定に使用しなければ追加しない。*/
     800                /* オフリンクでアドレス自動設定に使用しなければ追加しない。*/
    832801                if ((pi->flags & (ND_OPT_PI_FLAG_ONLINK | ND_OPT_PI_FLAG_AUTO)) !=
    833802                                 (ND_OPT_PI_FLAG_ONLINK | ND_OPT_PI_FLAG_AUTO)) {
     
    836805                        }
    837806
    838                 /* プレフィックスを追加する。*/
     807                /* プレフィックスを追加する。*/
    839808                if ((pr = nd6_prelist_add(pi, router_index)) == NULL) {
    840809                        syslog(LOG_ERROR, "[ND6 RTR] prefix add failed.");
     
    845814                if ((pr->flags & ND6_PREFIX_FLAG_ONLINK) == 0) {
    846815                        /*
    847                          *  オフリンク・プレフィックスの場合は、有効時間を 0 に設定する。
    848                          *  あとで有効期限切れとなり、リストから削除される。
     816                         *  オフリンク・プレフィックスの場合は、有効時間を 0 に設定する。
     817                         *  あとで有効期限切れとなり、リストから削除される。
    849818                         */
    850819                        pr->vltime = 0;
     
    855824
    856825        /*
    857          *  ステートレス・アドレス自動設定を行う。
     826         *  ステートレス・アドレス自動設定を行う。
    858827         */
    859828        if ((pr->flags & ND6_PREFIX_FLAG_AUTO) == 0) {
     
    863832
    864833        /*
    865          *  通知されたプレフィックスが割り当てられているインタフェースの
    866          *  アドレスæƒ
    867 å ±ã‚’探す。
     834         *  通知されたプレフィックスが割り当てられているインタフェースの
     835         *  アドレス情報を探す。
    868836         */
    869837        for (ix = NUM_IN6_IFADDR_ENTRY; ix --; ) {
     
    875843                }
    876844
    877         if (ix >= 0) {  /* 登録済みのとき */
     845        if (ix >= 0) {  /* 登録済みのとき */
    878846                if ((ia->flags & IN6_IFF_AUTOCONF) == 0) {
    879847                        /*
    880                          *  ステートレス・アドレス自動設定により
    881                          *  設定されていなければ更新しない。
     848                         *  ステートレス・アドレス自動設定により
     849                         *  設定されていなければ更新しない。
    882850                         */
    883851                        ;
     
    885853                else if (ia->flags & IN6_IFF_TENTATIVE) {
    886854                        /*
    887                          *  重複検出中なら更新しない。
     855                         *  重複検出中なら更新しない。
    888856                         */
    889857                        ;
     
    896864                        int_t           ix;
    897865
    898                         /* 有効時間を設定する。*/
     866                        /* 有効時間を設定する。*/
    899867                        syscall(get_tim(&now));
    900868
     
    908876                        if (pr->vltime > (2 * 60 * 60) || pr->vltime > vltime) {
    909877                                /*
    910                                  *  lifetime.expire、pi->valid (有効時間) と
    911                                  *  pi->preferred (推奨有効時間) の単位は [s]。
    912                                  *  通知された有効時間が 2 時間以上か、現在の残り時間より
    913                                  *  長ければ、新しい有効時間には、通知された有効時間を設定する。
     878                                 *  lifetime.expire、pi->valid (有効時間) と
     879                                 *  pi->preferred (推奨有効時間) の単位は [s]。
     880                                 *  通知された有効時間が 2 時間以上か、現在の残り時間より
     881                                 *  長ければ、新しい有効時間には、通知された有効時間を設定する。
    914882                                 */
    915883                                vltime = pr->vltime;
     
    919887                        else {
    920888                                /*
    921                                  *  IPsec は未実è£
    922 ã®ãŸã‚ã€2 時間を設定する。
     889                                 *  IPsec は未実装のため、2 時間を設定する。
    923890                                 */
    924891                                vltime = 2 * 60 * 60;
     
    927894                        lla = &ifp->in_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL];
    928895
    929                         /* プレフィックスマスクを生成する。*/
     896                        /* プレフィックスマスクを生成する。*/
    930897                        in6_plen2pmask(&mask, pr->prefix_len);
    931898
    932                         /* アドレスを生成する。*/
     899                        /* アドレスを生成する。*/
    933900                        for (ix = 0; ix < 4; ix ++)
    934901                                addr.s6_addr32[ix] = (pr->prefix.s6_addr32[ix] &  mask.s6_addr32[ix])
     
    941908                }
    942909
    943         else { /* 未登録のとき */
     910        else { /* 未登録のとき */
    944911
    945912                /*
    946                  *  プレフィックス長をチェックする。
    947                  *  もし、プレフィックス長とインタフェース ID の合計が
    948                  *  128 ビットに一致しない時は、プレフィックスæƒ
    949 å ±ã‚’無視する。
     913                 *  プレフィックス長をチェックする。
     914                 *  もし、プレフィックス長とインタフェース ID の合計が
     915                 *  128 ビットに一致しない時は、プレフィックス情報を無視する。
    950916                 */
    951917                if ((ifidlen = in6_if2idlen(ifp)) < 0)
     
    972938
    973939/*
    974  *  nd6_prelist_timer -- プレフィックス・リストの管理タイマー
     940 *  nd6_prelist_timer -- プレフィックス・リストの管理タイマー
    975941 */
    976942
     
    983949
    984950        syscall(get_tim(&now));
    985         now /= SYSTIM_HZ;               /* 有効時間の単位は [s] */
     951        now /= SYSTIM_HZ;               /* 有効時間の単位は [s] */
    986952
    987953        syscall(wai_sem(SEM_ND6_DEFRTRLIST));
     
    996962
    997963/*
    998  *  nd6_rs_output -- ルータ要請を出力する。
     964 *  nd6_rs_output -- ルータ要請を出力する。
    999965 */
    1000966
     
    1011977
    1012978        /*
    1013          *  送信å
    1014 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã¯ã€ãƒªãƒ³ã‚¯ãƒ­ãƒ¼ã‚«ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’設定するが、
    1015          *  まだ設定されいなければ、無指定を設定する。
     979         *  送信元アドレスには、リンクローカルアドレスを設定するが、
     980         *  まだ設定されいなければ、無指定を設定する。
    1016981         */
    1017982        if ((ifa = in6ifa_ifpwithix(IF_GET_IFNET(), IPV6_IFADDR_IX_LINKLOCAL)) != NULL && !IFA6_IS_NOTREADY(ifa))
     
    1022987        len = (ROUTER_SOLICIT_HDR_SIZE + 7) >> 3 << 3;
    1023988
    1024         /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/
     989        /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/
    1025990        if (in6_get_datagram(&output, len, 0, &in6_addr_linklocal_allrouters,
    1026991                             saddr, IPPROTO_ICMPV6,
     
    1028993                return;
    1029994
    1030         /* ルータ要請ヘッダを設定する。*/
     995        /* ルータ要請ヘッダを設定する。*/
    1031996        rsh = GET_ROUTER_SOLICIT_HDR(output, IF_IP6_ROUTER_SOLICIT_HDR_OFFSET);
    1032997        rsh->hdr.type       = ND_ROUTER_SOLICIT;
     
    1034999        rsh->nd_rs_reserved = 0;
    10351000
    1036         /* チェックサムを計算する。*/
     1001        /* チェックサムを計算する。*/
    10371002        rsh->hdr.sum = 0;
    10381003        rsh->hdr.sum = in6_cksum(output, IPPROTO_ICMPV6, (uint8_t*)rsh - output->buf, len);
    10391004
    1040         /* 送信する。*/
     1005        /* 送信する。*/
    10411006        NET_COUNT_ICMP6(net_count_nd6[NC_ICMP6_OUT_OCTETS],
    10421007                       output->len - GET_IF_IP6_HDR_SIZE(output));
     
    10481013
    10491014/*
    1050  *  nd6_defrtrlist_lookup -- ディフォルトルータ・リストを探索する。
     1015 *  nd6_defrtrlist_lookup -- ディフォルトルータ・リストを探索する。
    10511016 */
    10521017
     
    10671032
    10681033/*
    1069  *  nd6_router_lookup -- ルータのアドレスを返す。
     1034 *  nd6_router_lookup -- ルータのアドレスを返す。
    10701035 *
    10711036 */
     
    10811046
    10821047/*
    1083  *  nd6_defrtrlist_del -- ディフォルトルータ・リストからルータを削除する。
     1048 *  nd6_defrtrlist_del -- ディフォルトルータ・リストからルータを削除する。
    10841049 *
    1085  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    1086  *          ロックしてから呼び出すこと。
     1050 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     1051 *          ロックしてから呼び出すこと。
    10871052 */
    10881053
     
    10981063        if ((ia = in6ifa_ifpwithrtrix(ifp, rtrix)) != NULL) {
    10991064                /*
    1100                  *  ネットワークインタフェースのプレフィックスを通知した
    1101                  *  ルータを到達不能にする。
     1065                 *  ネットワークインタフェースのプレフィックスを通知した
     1066                 *  ルータを到達不能にする。
    11021067                 */
    11031068                ia->router_index = IN6_RTR_IX_UNREACH;
    11041069                }
    11051070
    1106         /* プレフィックスリストからルータを削除する。*/
     1071        /* プレフィックスリストからルータを削除する。*/
    11071072        mask = make_mask(rtrix);
    11081073        for (pix = NUM_ND6_PREFIX_ENTRY; pix --; )
    11091074                nd6_prefix[pix].routermap &= ~mask;
    11101075
    1111         /* 削除したルータ以降を前に詰める。*/
     1076        /* 削除したルータ以降を前に詰める。*/
    11121077        for (rix = rtrix + 1; rix < def_router_count; rix ++)
    11131078                nd6_def_router[rix - 1] = nd6_def_router[rix];
    11141079
    1115         /* プレフィックスリストのルータも更新する。*/
     1080        /* プレフィックスリストのルータも更新する。*/
    11161081        if (dr != nd6_def_router) {
    11171082
    1118                 /* マスクを生成する。*/
     1083                /* マスクを生成する。*/
    11191084                mask = 1;
    11201085                for (ix = rtrix - 1; ix -- > 0; )
     
    11281093        def_router_count --;
    11291094
    1130         /* プレフィックスのオンリンク状æ
    1131 ‹ã‚’確認する。*/
     1095        /* プレフィックスのオンリンク状態を確認する。*/
    11321096        pfxlist_onlink_check();
    11331097
    11341098        /*
    1135          *  削除するルータが優å
    1136 ˆãƒ‡ã‚£ãƒ•ã‚©ãƒ«ãƒˆãƒ«ãƒ¼ã‚¿ã®å ´åˆã¯ã€
    1137          *  優å
    1138 ˆãƒ‡ã‚£ãƒ•ã‚©ãƒ«ãƒˆãƒ«ãƒ¼ã‚¿ã‚’選択しなおす。
     1099         *  削除するルータが優先ディフォルトルータの場合は、
     1100         *  優先ディフォルトルータを選択しなおす。
    11391101         */
    11401102        if (rtrix == 0)
     
    11431105
    11441106/*
    1145  *  nd6_defrtrlist_timer -- ディフォルトルータ・リストの管理タイマー
     1107 *  nd6_defrtrlist_timer -- ディフォルトルータ・リストの管理タイマー
    11461108 */
    11471109
     
    11671129
    11681130/*
    1169  *  nd6_get_drl -- ディフォルトルータ・リストを獲得する。
     1131 *  nd6_get_drl -- ディフォルトルータ・リストを獲得する。
    11701132 */
    11711133
     
    11781140
    11791141/*
    1180  *  nd6_get_prl -- プレフィックス・リストを獲得する。
     1142 *  nd6_get_prl -- プレフィックス・リストを獲得する。
    11811143 */
    11821144
     
    11901152
    11911153/*
    1192  *  nd6_ra_input -- ルータ通知のå
    1193 ¥åŠ›å‡¦ç†ã€‚
     1154 *  nd6_ra_input -- ルータ通知の入力処理。
    11941155 */
    11951156
     
    12151176
    12161177        /*
    1217          *  ヘッダのチェック、以下の場合は破棄する。
    1218          *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
    1219          *    ・ヘッダ長が短い
    1220          *    ・始点アドレスが、リンクローカルではない (RFC2461)
     1178         *  ヘッダのチェック、以下の場合は破棄する。
     1179         *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
     1180         *    ・ヘッダ長が短い
     1181         *    ・始点アドレスが、リンクローカルではない (RFC2461)
    12211182         */
    12221183        if (ip6h->hlim != IPV6_MAXHLIM                ||
     
    12271188        rah  = GET_ROUTER_ADVERT_HDR(input, off);
    12281189
    1229         /* 近隣探索オプションのオフセットを記録する。*/
     1190        /* 近隣探索オプションのオフセットを記録する。*/
    12301191        if (nd6_options(nd_opt_off, input->buf + (off + ROUTER_ADVERT_HDR_SIZE),
    12311192                                    input->len - (off + ROUTER_ADVERT_HDR_SIZE)) != E_OK)
    12321193                goto err_ret;
    12331194        /*
    1234          *  到達可能状æ
    1235 ‹ã®æœ‰åŠ¹æ™‚間の更新
     1195         *  到達可能状態の有効時間の更新
    12361196
    12371197         */
    12381198        if (rah->reachable) {
    1239                 advrea = ntohl(rah->reachable) * SYSTIM_HZ / 1000;      /* rah->reachable の単位は ms */
     1199                advrea = ntohl(rah->reachable) * SYSTIM_HZ / 1000;      /* rah->reachable の単位は ms */
    12401200                if (advrea <= ND6_MAX_REACHABLE_TIME &&
    12411201                    advrea != nd6_base_reachable_time) {
     
    12491209                }
    12501210
    1251         /* 近隣探索の送信間隔の更新 */
     1211        /* 近隣探索の送信間隔の更新 */
    12521212        if (rah->retransmit) {
    12531213                nd6_retrans_time = ntohl(rah->retransmit) * SYSTIM_HZ / 1000;
    1254                                                                         /* rah->retransmit の単位は ms */
    1255                 }
    1256 
    1257         /* ホップリミットの規定値の更新 */
     1214                                                                        /* rah->retransmit の単位は ms */
     1215                }
     1216
     1217        /* ホップリミットの規定値の更新 */
    12581218        if (rah->nd_ra_current_hoplimit) {
    12591219                ip6_defhlim = rah->nd_ra_current_hoplimit;
    12601220                }
    12611221
    1262         /* ディフォルトルータリストの更新 */
     1222        /* ディフォルトルータリストの更新 */
    12631223        rix = defrtrlist_update(&ip6h->src,
    12641224                               ntohs(rah->nd_ra_router_lifetime),
    1265                                rah->nd_ra_flags);               /* rah->nd_ra_router_lifetime の単位は秒 */
    1266 
    1267         /* プレフィックスリストの更新 */
     1225                               rah->nd_ra_flags);               /* rah->nd_ra_router_lifetime の単位は秒 */
     1226
     1227        /* プレフィックスリストの更新 */
    12681228        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_PREFIX_INFO_COUNT)]) {
    12691229                T_ND_OPT_PREFIX_INFO    *pi;
     
    12731233                pi_off   = off + ROUTER_ADVERT_HDR_SIZE
    12741234                               + nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_PREFIX_INFORMATION)] - 8;
    1275                 /* 注意: オプションオフセットé
    1276 åˆ—には、オフセット + 8 が設定されている。*/
     1235                /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/
    12771236                while (pi_count -- > 0) {
    12781237                        pi = (T_ND_OPT_PREFIX_INFO*)(input->buf + pi_off);
    12791238                        if (pi->type != ND_OPT_PREFIX_INFORMATION)
    1280                                 /* オプションタイプがプレフィックスæƒ
    1281 å ±ã§ãªã‘れば何もしない。*/
     1239                                /* オプションタイプがプレフィックス情報でなければ何もしない。*/
    12821240                                ;
    12831241                        else if (pi->len != 4)
    1284                                 /* プレフィックスæƒ
    1285 å ±ã®é•·ã•ãŒ 32 (8×4) でなければ不正 */
     1242                                /* プレフィックス情報の長さが 32 (8×4) でなければ不正 */
    12861243                                syslog(LOG_NOTICE, "[ND6 RTR] prefix opt len: %d.", pi->len);
    12871244                        else if (pi->prefix_len > 128)
    1288                                 /* プレフィックス長は 128 ビット以下 */
     1245                                /* プレフィックス長は 128 ビット以下 */
    12891246                                syslog(LOG_NOTICE, "[ND6 RTR] prefix len: %d.", pi->prefix_len);
    12901247                        else if (IN6_IS_ADDR_MULTICAST(&pi->prefix) ||
    12911248                                 IN6_IS_ADDR_LINKLOCAL(&pi->prefix))
    1292                                 /* マルチキャストとリンクローカルは不正 */
     1249                                /* マルチキャストとリンクローカルは不正 */
    12931250                                syslog(LOG_NOTICE, "[ND6 RTR] invalid addr: %s from %s.",
    12941251                                                   ipv62str(NULL, &pi->prefix), ipv62str(NULL, &ip6h->src));
    1295 #if 0   /* FreeBSD 6.3 で削除されている。*/
     1252#if 0   /* FreeBSD 6.3 で削除されている。*/
    12961253                        else if (IN6_IS_ADDR_AGGREGATE_UNICAST(&pi->prefix) &&         
    12971254                                 (pi->prefix_len != 64)                       )
    1298                                 /* 集約可能ユニキャストで、プレフィックス長が 64 ビット以外は不正 */
     1255                                /* 集約可能ユニキャストで、プレフィックス長が 64 ビット以外は不正 */
    12991256                                syslog(LOG_NOTICE, "[ND6 RTR] invalid prefix len for global: %d.", pi->prefix_len);
    13001257#endif
    13011258                        else if (ntohl(pi->preferred) > ntohl(pi->valid))
    1302                                 /* 推奨有効時間が有効時間より長ければ不正 */
     1259                                /* 推奨有効時間が有効時間より長ければ不正 */
    13031260                                syslog(LOG_NOTICE, "[ND6 RTR] preferred(%d) > valid time(%d).", ntohl(pi->preferred), ntohl(pi->valid));
    13041261                        else {
     
    13071264                                if (rix >= 0) {
    13081265                                        /*
    1309                                          *  defrtrlist_update の戻り値は、ルータのインデックス。
    1310                                          *  ただし、値が -1 なら、プレフィックス・リストは更新しない。
     1266                                         *  defrtrlist_update の戻り値は、ルータのインデックス。
     1267                                         *  ただし、値が -1 なら、プレフィックス・リストは更新しない。
    13111268                                         */
    1312                                         prelist_update(pi, rix);        /* プレフィックス・リストを更新する。*/
     1269                                        prelist_update(pi, rix);        /* プレフィックス・リストを更新する。*/
    13131270                                        }
    13141271                                }
    1315                         pi_off += pi->len << 3;         /* オプション長の単位は 8 バイト */
    1316                         }
    1317                 }
    1318 
    1319         /* MTU の更新 */
     1272                        pi_off += pi->len << 3;         /* オプション長の単位は 8 バイト */
     1273                        }
     1274                }
     1275
     1276        /* MTU の更新 */
    13201277        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_MTU)]) {
    13211278                T_ND_OPT_MTU_HDR        *optmtuh;
     
    13261283
    13271284                /*
    1328                  *  値のチェック
     1285                 *  値のチェック
    13291286                 *
    1330                  *    オプション長: 1
    1331                  *    予約:         0
     1287                 *    オプション長: 1
     1288                 *    予約:         0
    13321289                 */
    13331290                if (optmtuh->len != 1 || optmtuh->reserved != 0)
    13341291                        goto err_ret;
    13351292
    1336                 /* MTU が IPv6 MMTU(1280 オクテット)以下なら無視する。*/
     1293                /* MTU が IPv6 MMTU(1280 オクテット)以下なら無視する。*/
    13371294                mtu = ntohl(optmtuh->mtu);
    13381295                if (mtu >= IPV6_MMTU) {
     
    13431300
    13441301        /*
    1345          *  ルータの始点リンクアドレスを近隣キャッシュに登録する。
     1302         *  ルータの始点リンクアドレスを近隣キャッシュに登録する。
    13461303         */
    13471304        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_SOURCE_LINKADDR)]) {
    13481305                opth = (T_ND_OPT_HDR *)((uint8_t *)(input->buf + off + ROUTER_ADVERT_HDR_SIZE) +
    13491306                                        nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_SOURCE_LINKADDR)] - 8);
    1350                 /* 注意: オプションオフセットé
    1351 åˆ—には、オフセット + 8 が設定されている。*/
     1307                /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/
    13521308                lladdr     = (uint8_t *)(opth + 1);
    13531309                lladdr_len = (opth->len << 3);
     
    13551311
    13561312        /*
    1357          *  ネットワークインタフェースのアドレス長が一致しなければエラー
     1313         *  ネットワークインタフェースのアドレス長が一致しなければエラー
    13581314         */
    13591315        if (lladdr && lladdr_len != ((sizeof(T_IF_ADDR) + sizeof(T_ND_OPT_HDR) + 7) & ~7))
    13601316                goto err_ret;
    13611317
    1362         /* 近隣キャッシュに登録する。*/
     1318        /* 近隣キャッシュに登録する。*/
    13631319        nd6_cache_lladdr(ifp, &ip6h->src, (T_IF_ADDR *)lladdr, ND_ROUTER_ADVERT, 0);
    13641320
    13651321        /*
    1366          *  ルータの始点リンクアドレスを近隣キャッシュに登録したので、
    1367          *  オンリンク状æ
    1368 ‹ãŒå¤‰åŒ–する可能性があるため、それをチェックする。
     1322         *  ルータの始点リンクアドレスを近隣キャッシュに登録したので、
     1323         *  オンリンク状態が変化する可能性があるため、それをチェックする。
    13691324         */
    13701325        pfxlist_onlink_check();
     
    13801335
    13811336        /*
    1382          *  ルータ通知を受信しない場合は、破棄して終了する。
     1337         *  ルータ通知を受信しない場合は、破棄して終了する。
    13831338         */
    13841339        NET_COUNT_ICMP6(net_count_nd6[NC_ND6_RA_IN_PACKETS], 1);
     
    13911346
    13921347/*
    1393  *  nd6_rtrsol_ctl -- ルータ要請出力の制御
     1348 *  nd6_rtrsol_ctl -- ルータ要請出力の制御
    13941349 */
    13951350
     
    14001355        int_t           try;
    14011356
    1402         /* リンクローカルアドレスのアドレスæƒ
    1403 å ±ã‚’得る。*/
     1357        /* リンクローカルアドレスのアドレス情報を得る。*/
    14041358        if ((ifa = in6ifa_ifpwithix(IF_GET_IFNET(), IPV6_IFADDR_IX_LINKLOCAL)) == NULL)
    14051359                return;
    14061360
    1407         /* リンクローカルアドレスの重複検出終了をå¾
    1408 ã¤ã€‚*/
     1361        /* リンクローカルアドレスの重複検出終了を待つ。*/
    14091362        do {
    1410                 /* リンクローカルアドレスの重複検出終了å¾
    1411 ã¡æ™‚間を設定する。*/
     1363                /* リンクローカルアドレスの重複検出終了待ち時間を設定する。*/
    14121364                syscall(dly_tsk(net_rand() % TMO_ND6_RTR_SOL_DELAY));
    14131365
    1414                 /* å¾
    1415 ã£ã¦ã„る間に重複が検出されたら終了する。*/
     1366                /* 待っている間に重複が検出されたら終了する。*/
    14161367                if (ifa->flags & IN6_IFF_DUPLICATED)
    14171368                        return;
     
    14211372        for (try = 0; try < NUM_ND6_RTR_SOL_RETRY; try ++) {
    14221373
    1423                 /* ディフォルトルータ・リストにエントリがあれば終了 */
     1374                /* ディフォルトルータ・リストにエントリがあれば終了 */
    14241375                if (def_router_count > 0)
    14251376                        return;
    14261377
    1427                 /* ルータ要請を出力する。*/
     1378                /* ルータ要請を出力する。*/
    14281379                nd6_rs_output();
    14291380
    1430                 /* 出力の 2 回目以降のé
    1431 å»¶æ™‚間を設定する。*/
     1381                /* 出力の 2 回目以降の遅延時間を設定する。*/
    14321382                syscall(dly_tsk(TMO_ND6_RTR_SOL_INTERVAL));
    14331383                }
     
    14371387
    14381388/*
    1439  *  nd6_onlink_prefix_lookup -- プレフィックスを探索する。
     1389 *  nd6_onlink_prefix_lookup -- プレフィックスを探索する。
    14401390 */
    14411391
     
    14501400        now /= SYSTIM_HZ;
    14511401
    1452         /* 推奨有効時間å†
    1453 ã®ãƒ—レフィックスを探索する。*/
     1402        /* 推奨有効時間内のプレフィックスを探索する。*/
    14541403        for (ix = NUM_ND6_PREFIX_ENTRY; ix -- > 0; ) {
    14551404                pr = &nd6_prefix[ix];
     
    14631412                }
    14641413
    1465         /* 有効時間å†
    1466 ã®ãƒ—レフィックスを探索する。*/
     1414        /* 有効時間内のプレフィックスを探索する。*/
    14671415        for (ix = NUM_ND6_PREFIX_ENTRY; ix -- > 0; ) {
    14681416                pr = &nd6_prefix[ix];
Note: See TracChangeset for help on using the changeset viewer.