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/nd6_rtr.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$
     
    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        memcpy(&fdr->addr, src, sizeof(T_IN6_ADDR));
    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->in6_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
     
    724693        int_t           ix;
    725694
    726         /* プレフィックスリストから空きのプレフィックスエントリを探索する。*/
     695        /* プレフィックスリストから空きのプレフィックスエントリを探索する。*/
    727696        for (ix = NUM_ND6_PREFIX_ENTRY; ix --; ) {
    728697                pr = &nd6_prefix[ix];
     
    731700                }
    732701
    733         /* プレフィックスリストに空きがなければエラー */
     702        /* プレフィックスリストに空きがなければエラー */
    734703        if (ix < 0)
    735704                return NULL;
     
    737706        pr->flags |= ND6_PREFIX_STATE_BUSY;
    738707
    739         /* プレフィックスを追加する。*/
     708        /* プレフィックスを追加する。*/
    740709        pr->prefix     = pi->prefix;
    741710        pr->prefix_len = pi->prefix_len;
    742711
    743         /* フラグを設定する。*/
     712        /* フラグを設定する。*/
    744713        if ((pi->flags & ND_OPT_PI_FLAG_ONLINK) != 0)
    745714                pr->flags |= ND6_PREFIX_FLAG_ONLINK;
     
    747716                pr->flags |= ND6_PREFIX_FLAG_AUTO;
    748717
    749         /* プレフィックスの有効時間を設定する。*/
     718        /* プレフィックスの有効時間を設定する。*/
    750719        pr->vltime = ntohl(pi->valid);
    751720        pr->pltime = ntohl(pi->preferred);
     
    757726                }
    758727
    759         /* ルータマップを初期化する。*/
     728        /* ルータマップを初期化する。*/
    760729        pr->routermap = 0;
    761730
    762         /* ルータを追加する。*/
     731        /* ルータを追加する。*/
    763732        pfxrtr_add(pr - nd6_prefix, rtr_index);
    764733
     
    767736
    768737/*
    769  *  prelist_update -- プレフィックス・リストを更新する。
     738 *  prelist_update -- プレフィックス・リストを更新する。
    770739 */
    771740
     
    781750        if ((pr = nd6_prefix_lookup(&pi->prefix, pi->prefix_len)) != NULL) {
    782751                /*
    783                  *  登録済みの場合は、プレフィックスリストを更新する。
     752                 *  登録済みの場合は、プレフィックスリストを更新する。
    784753                 */
    785754
    786755                /*
    787                  *  フラグの更新の注意:
    788                  *    on-link ビットと autonomous ビットは
    789                  *    1 から 0 に変更してはならない。
     756                 *  フラグの更新の注意:
     757                 *    on-link ビットと autonomous ビットは
     758                 *    1 から 0 に変更してはならない。
    790759                 */
    791760
     
    797766                if ((pi->flags & ND_OPT_PI_FLAG_ONLINK) != 0) {
    798767                        /*
    799                          *  通知されたプレフィックスがオンリンクの時は、
    800                          *  有効時間を更新する。
     768                         *  通知されたプレフィックスがオンリンクの時は、
     769                         *  有効時間を更新する。
    801770                         */
    802771                        pr->vltime = ntohl(pi->valid);
     
    808777                    (pr->flags & ND6_PREFIX_STATE_ONLINK) == 0) {
    809778                        /*
    810                          *  オフリンクのプレフィックスがオンリンクになった時の処理を実行する。
     779                         *  オフリンクのプレフィックスがオンリンクになった時の処理を実行する。
    811780                         */
    812781                        if (nd6_prefix_onlink(pr) != E_OK) {
     
    820789                        pfxrtr_add(pr - nd6_prefix, router_index);
    821790                }
    822         else {  /* 未登録の場合 */
    823 
    824                 /* 有効時間 0 のプレフィックスは追加しない。*/
     791        else {  /* 未登録の場合 */
     792
     793                /* 有効時間 0 のプレフィックスは追加しない。*/
    825794                if (pi->valid == 0) {
    826795                        syscall(sig_sem(SEM_ND6_DEFRTRLIST));
     
    828797                        }
    829798
    830                 /* オフリンクでアドレス自動設定に使用しなければ追加しない。*/
     799                /* オフリンクでアドレス自動設定に使用しなければ追加しない。*/
    831800                if ((pi->flags & (ND_OPT_PI_FLAG_ONLINK | ND_OPT_PI_FLAG_AUTO)) !=
    832801                                 (ND_OPT_PI_FLAG_ONLINK | ND_OPT_PI_FLAG_AUTO)) {
     
    835804                        }
    836805
    837                 /* プレフィックスを追加する。*/
     806                /* プレフィックスを追加する。*/
    838807                if ((pr = nd6_prelist_add(pi, router_index)) == NULL) {
    839808                        syslog(LOG_ERROR, "[ND6 RTR] prefix add failed.");
     
    842811                        }
    843812
    844 #if 1           /* プレフィックスが未登録の場合だけ表示する。*/
     813#if 1           /* プレフィックスが未登録の場合だけ表示する。*/
    845814                syslog(LOG_NOTICE, "[ND6 RTR] add prefix: flags[MOH]: %02x, addr: %s\n"
    846815                                   "                                      from: %s.",
     
    851820                if ((pr->flags & ND6_PREFIX_FLAG_ONLINK) == 0) {
    852821                        /*
    853                          *  オフリンク・プレフィックスの場合は、有効時間を 0 に設定する。
    854                          *  あとで有効期限切れとなり、リストから削除される。
     822                         *  オフリンク・プレフィックスの場合は、有効時間を 0 に設定する。
     823                         *  あとで有効期限切れとなり、リストから削除される。
    855824                         */
    856825                        pr->vltime = 0;
     
    861830
    862831        /*
    863          *  ステートレス・アドレス自動設定を行う。
     832         *  ステートレス・アドレス自動設定を行う。
    864833         */
    865834        if ((pr->flags & ND6_PREFIX_FLAG_AUTO) == 0) {
     
    869838
    870839        /*
    871          *  通知されたプレフィックスが割り当てられているインタフェースの
    872          *  アドレスæƒ
    873 å ±ã‚’探す。
     840         *  通知されたプレフィックスが割り当てられているインタフェースの
     841         *  アドレス情報を探す。
    874842         */
    875843        for (ix = NUM_IN6_IFADDR_ENTRY; ix --; ) {
     
    881849                }
    882850
    883         if (ix >= 0) {  /* 登録済みのとき */
     851        if (ix >= 0) {  /* 登録済みのとき */
    884852                if ((ia->flags & IN6_IFF_AUTOCONF) == 0) {
    885853                        /*
    886                          *  ステートレス・アドレス自動設定により
    887                          *  設定されていなければ更新しない。
     854                         *  ステートレス・アドレス自動設定により
     855                         *  設定されていなければ更新しない。
    888856                         */
    889857                        ;
     
    891859                else if (ia->flags & IN6_IFF_TENTATIVE) {
    892860                        /*
    893                          *  重複検出中なら更新しない。
     861                         *  重複検出中なら更新しない。
    894862                         */
    895863                        ;
     
    902870                        int_t           ix;
    903871
    904                         /* 有効時間を設定する。*/
     872                        /* 有効時間を設定する。*/
    905873                        syscall(get_tim(&now));
    906874
     
    914882                        if (pr->vltime > (2 * 60 * 60) || pr->vltime > vltime) {
    915883                                /*
    916                                  *  lifetime.expire、pi->valid (有効時間) と
    917                                  *  pi->preferred (推奨有効時間) の単位は [s]。
    918                                  *  通知された有効時間が 2 時間以上か、現在の残り時間より
    919                                  *  長ければ、新しい有効時間には、通知された有効時間を設定する。
     884                                 *  lifetime.expire、pi->valid (有効時間) と
     885                                 *  pi->preferred (推奨有効時間) の単位は [s]。
     886                                 *  通知された有効時間が 2 時間以上か、現在の残り時間より
     887                                 *  長ければ、新しい有効時間には、通知された有効時間を設定する。
    920888                                 */
    921889                                vltime = pr->vltime;
     
    925893                        else {
    926894                                /*
    927                                  *  IPsec は未実è£
    928 ã®ãŸã‚ã€2 時間を設定する。
     895                                 *  IPsec は未実装のため、2 時間を設定する。
    929896                                 */
    930897                                vltime = 2 * 60 * 60;
     
    933900                        lla = &ifp->in6_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL];
    934901
    935                         /* プレフィックスマスクを生成する。*/
     902                        /* プレフィックスマスクを生成する。*/
    936903                        in6_plen2pmask(&mask, pr->prefix_len);
    937904
    938                         /* アドレスを生成する。*/
     905                        /* アドレスを生成する。*/
    939906                        for (ix = 0; ix < 4; ix ++)
    940907                                addr.s6_addr32[ix] = (pr->prefix.s6_addr32[ix] &  mask.s6_addr32[ix])
     
    947914                }
    948915
    949         else { /* 未登録のとき */
     916        else { /* 未登録のとき */
    950917
    951918                /*
    952                  *  プレフィックス長をチェックする。
    953                  *  もし、プレフィックス長とインタフェース ID の合計が
    954                  *  128 ビットに一致しない時は、プレフィックスæƒ
    955 å ±ã‚’無視する。
     919                 *  プレフィックス長をチェックする。
     920                 *  もし、プレフィックス長とインタフェース ID の合計が
     921                 *  128 ビットに一致しない時は、プレフィックス情報を無視する。
    956922                 */
    957923                if ((ifidlen = in6_if2idlen(ifp)) < 0)
     
    978944
    979945/*
    980  *  nd6_prelist_timer -- プレフィックス・リストの管理タイマー
     946 *  nd6_prelist_timer -- プレフィックス・リストの管理タイマー
    981947 */
    982948
     
    989955
    990956        syscall(get_tim(&now));
    991         now /= SYSTIM_HZ;               /* 有効時間の単位は [s] */
     957        now /= SYSTIM_HZ;               /* 有効時間の単位は [s] */
    992958
    993959        syscall(wai_sem(SEM_ND6_DEFRTRLIST));
     
    1002968
    1003969/*
    1004  *  nd6_rs_output -- ルータ要請を出力する。
     970 *  nd6_rs_output -- ルータ要請を出力する。
    1005971 */
    1006972
     
    1017983
    1018984        /*
    1019          *  送信å
    1020 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã¯ã€ãƒªãƒ³ã‚¯ãƒ­ãƒ¼ã‚«ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’設定するが、
    1021          *  まだ設定されいなければ、無指定を設定する。
     985         *  送信元アドレスには、リンクローカルアドレスを設定するが、
     986         *  まだ設定されいなければ、無指定を設定する。
    1022987         */
    1023988        if ((ifa = in6ifa_ifpwithix(IF_GET_IFNET(), IPV6_IFADDR_IX_LINKLOCAL)) != NULL && !IFA6_IS_NOTREADY(ifa))
     
    1028993        len = (ROUTER_SOLICIT_HDR_SIZE + 7) >> 3 << 3;
    1029994
    1030         /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/
     995        /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/
    1031996        if (in6_get_datagram(&output, len, 0, &in6_addr_linklocal_allrouters,
    1032997                             saddr, IPPROTO_ICMPV6,
     
    1034999                return;
    10351000
    1036         /* ルータ要請ヘッダを設定する。*/
     1001        /* ルータ要請ヘッダを設定する。*/
    10371002        rsh = GET_ROUTER_SOLICIT_HDR(output, IF_IP6_ROUTER_SOLICIT_HDR_OFFSET);
    10381003        rsh->hdr.type       = ND_ROUTER_SOLICIT;
     
    10401005        rsh->nd_rs_reserved = 0;
    10411006
    1042         /* チェックサムを計算する。*/
     1007        /* チェックサムを計算する。*/
    10431008        rsh->hdr.sum = 0;
    10441009        rsh->hdr.sum = in6_cksum(output, IPPROTO_ICMPV6, (uint8_t*)rsh - output->buf, len);
    10451010
    1046         /* 送信する。*/
     1011        /* 送信する。*/
    10471012        NET_COUNT_ICMP6(net_count_nd6[NC_ICMP6_OUT_OCTETS],
    10481013                       output->len - GET_IF_IP6_HDR_SIZE(output));
     
    10541019
    10551020/*
    1056  *  nd6_defrtrlist_lookup -- ディフォルトルータ・リストを探索する。
     1021 *  nd6_defrtrlist_lookup -- ディフォルトルータ・リストを探索する。
    10571022 */
    10581023
     
    10731038
    10741039/*
    1075  *  nd6_router_lookup -- ルータのアドレスを返す。
     1040 *  nd6_router_lookup -- ルータのアドレスを返す。
    10761041 *
    10771042 */
     
    10871052
    10881053/*
    1089  *  nd6_defrtrlist_del -- ディフォルトルータ・リストからルータを削除する。
     1054 *  nd6_defrtrlist_del -- ディフォルトルータ・リストからルータを削除する。
    10901055 *
    1091  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    1092  *          ロックしてから呼び出すこと。
     1056 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     1057 *          ロックしてから呼び出すこと。
    10931058 */
    10941059
     
    11041069        if ((ia = in6ifa_ifpwithrtrix(ifp, rtrix)) != NULL) {
    11051070                /*
    1106                  *  ネットワークインタフェースのプレフィックスを通知した
    1107                  *  ルータを到達不能にする。
     1071                 *  ネットワークインタフェースのプレフィックスを通知した
     1072                 *  ルータを到達不能にする。
    11081073                 */
    11091074                ia->router_index = IN6_RTR_IX_UNREACH;
    11101075                }
    11111076
    1112         /* プレフィックスリストからルータを削除する。*/
     1077        /* プレフィックスリストからルータを削除する。*/
    11131078        mask = make_mask(rtrix);
    11141079        for (pix = NUM_ND6_PREFIX_ENTRY; pix --; )
    11151080                nd6_prefix[pix].routermap &= ~mask;
    11161081
    1117         /* 削除したルータ以降を前に詰める。*/
     1082        /* 削除したルータ以降を前に詰める。*/
    11181083        for (rix = rtrix + 1; rix < def_router_count; rix ++)
    11191084                nd6_def_router[rix - 1] = nd6_def_router[rix];
    11201085
    1121         /* プレフィックスリストのルータも更新する。*/
     1086        /* プレフィックスリストのルータも更新する。*/
    11221087        if (dr != nd6_def_router) {
    11231088
    1124                 /* マスクを生成する。*/
     1089                /* マスクを生成する。*/
    11251090                mask = 1;
    11261091                for (ix = rtrix - 1; ix -- > 0; )
     
    11341099        def_router_count --;
    11351100
    1136         /* プレフィックスのオンリンク状æ
    1137 ‹ã‚’確認する。*/
     1101        /* プレフィックスのオンリンク状態を確認する。*/
    11381102        pfxlist_onlink_check();
    11391103
    11401104        /*
    1141          *  削除するルータが優å
    1142 ˆãƒ‡ã‚£ãƒ•ã‚©ãƒ«ãƒˆãƒ«ãƒ¼ã‚¿ã®å ´åˆã¯ã€
    1143          *  優å
    1144 ˆãƒ‡ã‚£ãƒ•ã‚©ãƒ«ãƒˆãƒ«ãƒ¼ã‚¿ã‚’選択しなおす。
     1105         *  削除するルータが優先ディフォルトルータの場合は、
     1106         *  優先ディフォルトルータを選択しなおす。
    11451107         */
    11461108        if (rtrix == 0)
     
    11491111
    11501112/*
    1151  *  nd6_defrtrlist_timer -- ディフォルトルータ・リストの管理タイマー
     1113 *  nd6_defrtrlist_timer -- ディフォルトルータ・リストの管理タイマー
    11521114 */
    11531115
     
    11731135
    11741136/*
    1175  *  nd6_get_drl -- ディフォルトルータ・リストを獲得する。
     1137 *  nd6_get_drl -- ディフォルトルータ・リストを獲得する。
    11761138 */
    11771139
     
    11841146
    11851147/*
    1186  *  nd6_get_prl -- プレフィックス・リストを獲得する。
     1148 *  nd6_get_prl -- プレフィックス・リストを獲得する。
    11871149 */
    11881150
     
    11961158
    11971159/*
    1198  *  nd6_ra_input -- ルータ通知のå
    1199 ¥åŠ›å‡¦ç†ã€‚
     1160 *  nd6_ra_input -- ルータ通知の入力処理。
    12001161 */
    12011162
     
    12211182
    12221183        /*
    1223          *  ヘッダのチェック、以下の場合は破棄する。
    1224          *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
    1225          *    ・ヘッダ長が短い
    1226          *    ・始点アドレスが、リンクローカルではない (RFC2461)
     1184         *  ヘッダのチェック、以下の場合は破棄する。
     1185         *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
     1186         *    ・ヘッダ長が短い
     1187         *    ・始点アドレスが、リンクローカルではない (RFC2461)
    12271188         */
    12281189        if (ip6h->hlim != IPV6_MAXHLIM                ||
     
    12331194        rah  = GET_ROUTER_ADVERT_HDR(input, off);
    12341195
    1235         /* 近隣探索オプションのオフセットを記録する。*/
     1196        /* 近隣探索オプションのオフセットを記録する。*/
    12361197        if (nd6_options(nd_opt_off, input->buf + (off + ROUTER_ADVERT_HDR_SIZE),
    12371198                                    input->len - (off + ROUTER_ADVERT_HDR_SIZE)) != E_OK)
    12381199                goto err_ret;
    12391200        /*
    1240          *  到達可能状æ
    1241 ‹ã®æœ‰åŠ¹æ™‚間の更新
     1201         *  到達可能状態の有効時間の更新
    12421202
    12431203         */
    12441204        if (rah->reachable) {
    1245                 advrea = ntohl(rah->reachable) * SYSTIM_HZ / 1000;      /* rah->reachable の単位は ms */
     1205                advrea = ntohl(rah->reachable) * SYSTIM_HZ / 1000;      /* rah->reachable の単位は ms */
    12461206                if (advrea <= ND6_MAX_REACHABLE_TIME &&
    12471207                    advrea != nd6_base_reachable_time) {
     
    12551215                }
    12561216
    1257         /* 近隣探索の送信間隔の更新 */
     1217        /* 近隣探索の送信間隔の更新 */
    12581218        if (rah->retransmit) {
    12591219                nd6_retrans_time = ntohl(rah->retransmit) * SYSTIM_HZ / 1000;
    1260                                                                         /* rah->retransmit の単位は ms */
    1261                 }
    1262 
    1263         /* ホップリミットの規定値の更新 */
     1220                                                                        /* rah->retransmit の単位は ms */
     1221                }
     1222
     1223        /* ホップリミットの規定値の更新 */
    12641224        if (rah->nd_ra_current_hoplimit) {
    12651225                ip6_defhlim = rah->nd_ra_current_hoplimit;
    12661226                }
    12671227
    1268         /* ディフォルトルータリストの更新 */
     1228        /* ディフォルトルータリストの更新 */
    12691229        rix = defrtrlist_update(&ip6h->src,
    12701230                               ntohs(rah->nd_ra_router_lifetime),
    1271                                rah->nd_ra_flags);               /* rah->nd_ra_router_lifetime の単位は秒 */
    1272 
    1273         /* プレフィックスリストの更新 */
     1231                               rah->nd_ra_flags);               /* rah->nd_ra_router_lifetime の単位は秒 */
     1232
     1233        /* プレフィックスリストの更新 */
    12741234        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_PREFIX_INFO_COUNT)]) {
    12751235                T_ND_OPT_PREFIX_INFO    *pi;
     
    12791239                pi_off   = off + ROUTER_ADVERT_HDR_SIZE
    12801240                               + nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_PREFIX_INFORMATION)] - 8;
    1281                 /* 注意: オプションオフセットé
    1282 åˆ—には、オフセット + 8 が設定されている。*/
     1241                /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/
    12831242                while (pi_count -- > 0) {
    12841243                        pi = (T_ND_OPT_PREFIX_INFO*)(input->buf + pi_off);
    12851244                        if (pi->type != ND_OPT_PREFIX_INFORMATION)
    1286                                 /* オプションタイプがプレフィックスæƒ
    1287 å ±ã§ãªã‘れば何もしない。*/
     1245                                /* オプションタイプがプレフィックス情報でなければ何もしない。*/
    12881246                                ;
    12891247                        else if (pi->len != 4)
    1290                                 /* プレフィックスæƒ
    1291 å ±ã®é•·ã•ãŒ 32 (8×4) でなければ不正 */
     1248                                /* プレフィックス情報の長さが 32 (8×4) でなければ不正 */
    12921249                                syslog(LOG_NOTICE, "[ND6 RTR] prefix opt len: %d.", pi->len);
    12931250                        else if (pi->prefix_len > 128)
    1294                                 /* プレフィックス長は 128 ビット以下 */
     1251                                /* プレフィックス長は 128 ビット以下 */
    12951252                                syslog(LOG_NOTICE, "[ND6 RTR] prefix len: %d.", pi->prefix_len);
    12961253                        else if (IN6_IS_ADDR_MULTICAST(&pi->prefix) ||
    12971254                                 IN6_IS_ADDR_LINKLOCAL(&pi->prefix))
    1298                                 /* マルチキャストとリンクローカルは不正 */
     1255                                /* マルチキャストとリンクローカルは不正 */
    12991256                                syslog(LOG_NOTICE, "[ND6 RTR] invalid addr: %s from %s.",
    13001257                                                   ipv62str(NULL, &pi->prefix), ipv62str(NULL, &ip6h->src));
    1301 #if 0   /* FreeBSD 6.3 で削除されている。*/
     1258#if 0   /* FreeBSD 6.3 で削除されている。*/
    13021259                        else if (IN6_IS_ADDR_AGGREGATE_UNICAST(&pi->prefix) &&         
    13031260                                 (pi->prefix_len != 64)                       )
    1304                                 /* 集約可能ユニキャストで、プレフィックス長が 64 ビット以外は不正 */
     1261                                /* 集約可能ユニキャストで、プレフィックス長が 64 ビット以外は不正 */
    13051262                                syslog(LOG_NOTICE, "[ND6 RTR] invalid prefix len for global: %d.", pi->prefix_len);
    13061263#endif
    13071264                        else if (ntohl(pi->preferred) > ntohl(pi->valid))
    1308                                 /* 推奨有効時間が有効時間より長ければ不正 */
     1265                                /* 推奨有効時間が有効時間より長ければ不正 */
    13091266                                syslog(LOG_NOTICE, "[ND6 RTR] preferred(%d) > valid time(%d).", ntohl(pi->preferred), ntohl(pi->valid));
    13101267                        else {
    1311 #if 0   /* プレフィックスが未登録の場合だけ表示する。*/
     1268#if 0   /* プレフィックスが未登録の場合だけ表示する。*/
    13121269                                syslog(LOG_NOTICE, "[ND6 RTR] update prefix: flags[MOH]: %02x, addr: %s\n"
    13131270                                                   "                                         from: %s.",
     
    13161273                                if (rix >= 0) {
    13171274                                        /*
    1318                                          *  defrtrlist_update の戻り値は、ルータのインデックス。
    1319                                          *  ただし、値が -1 なら、プレフィックス・リストは更新しない。
     1275                                         *  defrtrlist_update の戻り値は、ルータのインデックス。
     1276                                         *  ただし、値が -1 なら、プレフィックス・リストは更新しない。
    13201277                                         */
    1321                                         prelist_update(pi, rix);        /* プレフィックス・リストを更新する。*/
     1278                                        prelist_update(pi, rix);        /* プレフィックス・リストを更新する。*/
    13221279                                        }
    13231280                                }
    1324                         pi_off += pi->len << 3;         /* オプション長の単位は 8 バイト */
    1325                         }
    1326                 }
    1327 
    1328         /* MTU の更新 */
     1281                        pi_off += pi->len << 3;         /* オプション長の単位は 8 バイト */
     1282                        }
     1283                }
     1284
     1285        /* MTU の更新 */
    13291286        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_MTU)]) {
    13301287                T_ND_OPT_MTU_HDR        *optmtuh;
     
    13351292
    13361293                /*
    1337                  *  値のチェック
     1294                 *  値のチェック
    13381295                 *
    1339                  *    オプション長: 1
    1340                  *    予約:         0
     1296                 *    オプション長: 1
     1297                 *    予約:         0
    13411298                 */
    13421299                if (optmtuh->len != 1 || optmtuh->reserved != 0)
    13431300                        goto err_ret;
    13441301
    1345                 /* MTU が IPv6 MMTU(1280 オクテット)以下なら無視する。*/
     1302                /* MTU が IPv6 MMTU(1280 オクテット)以下なら無視する。*/
    13461303                mtu = ntohl(optmtuh->mtu);
    13471304                if (mtu >= IPV6_MMTU) {
     
    13521309
    13531310        /*
    1354          *  ルータの始点リンクアドレスを近隣キャッシュに登録する。
     1311         *  ルータの始点リンクアドレスを近隣キャッシュに登録する。
    13551312         */
    13561313        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_SOURCE_LINKADDR)]) {
    13571314                opth = (T_ND_OPT_HDR *)((uint8_t *)(input->buf + off + ROUTER_ADVERT_HDR_SIZE) +
    13581315                                        nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_SOURCE_LINKADDR)] - 8);
    1359                 /* 注意: オプションオフセットé
    1360 åˆ—には、オフセット + 8 が設定されている。*/
     1316                /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/
    13611317                lladdr     = (uint8_t *)(opth + 1);
    13621318                lladdr_len = (opth->len << 3);
     
    13641320
    13651321        /*
    1366          *  ネットワークインタフェースのアドレス長が一致しなければエラー
     1322         *  ネットワークインタフェースのアドレス長が一致しなければエラー
    13671323         */
    13681324        if (lladdr && lladdr_len != ((sizeof(T_IF_ADDR) + sizeof(T_ND_OPT_HDR) + 7) & ~7))
    13691325                goto err_ret;
    13701326
    1371         /* 近隣キャッシュに登録する。*/
     1327        /* 近隣キャッシュに登録する。*/
    13721328        nd6_cache_lladdr(ifp, &ip6h->src, (T_IF_ADDR *)lladdr, ND_ROUTER_ADVERT, 0);
    13731329
    13741330        /*
    1375          *  ルータの始点リンクアドレスを近隣キャッシュに登録したので、
    1376          *  オンリンク状æ
    1377 ‹ãŒå¤‰åŒ–する可能性があるため、それをチェックする。
     1331         *  ルータの始点リンクアドレスを近隣キャッシュに登録したので、
     1332         *  オンリンク状態が変化する可能性があるため、それをチェックする。
    13781333         */
    13791334        pfxlist_onlink_check();
     
    13891344
    13901345        /*
    1391          *  ルータ通知を受信しない場合は、破棄して終了する。
     1346         *  ルータ通知を受信しない場合は、破棄して終了する。
    13921347         */
    13931348        NET_COUNT_ICMP6(net_count_nd6[NC_ND6_RA_IN_PACKETS], 1);
     
    14001355
    14011356/*
    1402  *  nd6_rtrsol_ctl -- ルータ要請出力の制御
     1357 *  nd6_rtrsol_ctl -- ルータ要請出力の制御
    14031358 */
    14041359
     
    14091364        int_t           try;
    14101365
    1411         /* リンクローカルアドレスのアドレスæƒ
    1412 å ±ã‚’得る。*/
     1366        /* リンクローカルアドレスのアドレス情報を得る。*/
    14131367        if ((ifa = in6ifa_ifpwithix(IF_GET_IFNET(), IPV6_IFADDR_IX_LINKLOCAL)) == NULL)
    14141368                return;
    14151369
    1416         /* リンクローカルアドレスの重複検出終了をå¾
    1417 ã¤ã€‚*/
     1370        /* リンクローカルアドレスの重複検出終了を待つ。*/
    14181371        do {
    1419                 /* リンクローカルアドレスの重複検出終了å¾
    1420 ã¡æ™‚間を設定する。*/
     1372                /* リンクローカルアドレスの重複検出終了待ち時間を設定する。*/
    14211373                syscall(dly_tsk(net_rand() % TMO_ND6_RTR_SOL_DELAY));
    14221374
    1423                 /* å¾
    1424 ã£ã¦ã„る間に重複が検出されたら終了する。*/
     1375                /* 待っている間に重複が検出されたら終了する。*/
    14251376                if (ifa->flags & IN6_IFF_DUPLICATED)
    14261377                        return;
     
    14301381        for (try = 0; try < NUM_ND6_RTR_SOL_RETRY; try ++) {
    14311382
    1432                 /* ディフォルトルータ・リストにエントリがあれば終了 */
     1383                /* ディフォルトルータ・リストにエントリがあれば終了 */
    14331384                if (def_router_count > 0)
    14341385                        return;
    14351386
    1436                 /* ルータ要請を出力する。*/
     1387                /* ルータ要請を出力する。*/
    14371388                nd6_rs_output();
    14381389
    1439                 /* 出力の 2 回目以降のé
    1440 å»¶æ™‚間を設定する。*/
     1390                /* 出力の 2 回目以降の遅延時間を設定する。*/
    14411391                syscall(dly_tsk(TMO_ND6_RTR_SOL_INTERVAL));
    14421392                }
     
    14461396
    14471397/*
    1448  *  nd6_onlink_prefix_lookup -- プレフィックスを探索する。
     1398 *  nd6_onlink_prefix_lookup -- プレフィックスを探索する。
    14491399 */
    14501400
     
    14591409        now /= SYSTIM_HZ;
    14601410
    1461         /* 推奨有効時間å†
    1462 ã®ãƒ—レフィックスを探索する。*/
     1411        /* 推奨有効時間内のプレフィックスを探索する。*/
    14631412        for (ix = NUM_ND6_PREFIX_ENTRY; ix -- > 0; ) {
    14641413                pr = &nd6_prefix[ix];
     
    14721421                }
    14731422
    1474         /* 有効時間å†
    1475 ã®ãƒ—レフィックスを探索する。*/
     1423        /* 有効時間内のプレフィックスを探索する。*/
    14761424        for (ix = NUM_ND6_PREFIX_ENTRY; ix -- > 0; ) {
    14771425                pr = &nd6_prefix[ix];
Note: See TracChangeset for help on using the changeset viewer.