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/in6_subr.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 è²¬ã™ã‚‹ã“と.
    36  *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     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プロジェクトを免責すること.
     25 *
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    155143
    156144/*
    157  *  ホストキャッシュ
     145 *  ホストキャッシュ
    158146 */
    159147
     
    163151
    164152/*
    165  *  in6_lookup_ifaddr -- ネットワークインタフェースに割り当てられているアドレスを探索する。
     153 *  in6_lookup_ifaddr -- ネットワークインタフェースに割り当てられているアドレスを探索する。
    166154 */
    167155
     
    180168
    181169/*
    182  *  in6_lookup_multi -- ネットワークインタフェースのマルチキャストアドレスを検索する。
     170 *  in6_lookup_multi -- ネットワークインタフェースのマルチキャストアドレスを検索する。
    183171 */
    184172
     
    195183
    196184/*
    197  *  in6_set_header -- IPv6 ヘッダを設定する。
     185 *  in6_set_header -- IPv6 ヘッダを設定する。
    198186 */
    199187
     
    208196
    209197        /*
    210          *  宛å
    211 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    212 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    213          *  ネットワークインタフェースから探索して利用する。
     198         *  宛先アドレスにふさわしい送信元アドレスを、
     199         *  ネットワークインタフェースから探索して利用する。
    214200         */
    215201        if (srcaddr == NULL || !IN6_IS_ADDR_UNSPECIFIED(srcaddr))
     
    220206                srcaddr = &ia->addr;
    221207
    222         /* IPv6 ヘッダを設定する。*/
     208        /* IPv6 ヘッダを設定する。*/
    223209        ip6h            = GET_IP6_HDR(nbuf);
    224210        ip6h->vcf       = htonl(IP6_MAKE_VCF(IPV6_VERSION, 0));
     
    241227
    242228/*
    243  *  in6_get_datagram -- IPv6 データグラムを獲得し、ヘッダを設定する。
     229 *  in6_get_datagram -- IPv6 データグラムを獲得し、ヘッダを設定する。
    244230 */
    245231
     
    252238        uint_t          align;
    253239
    254         /* データ長は 4 オクテット境界に調整する。    */
     240        /* データ長は 4 オクテット境界に調整する。        */
    255241        align = (len + 3) >> 2 << 2;
    256242
    257         /* ネットワークバッファを獲得する。     */
     243        /* ネットワークバッファを獲得する。     */
    258244        if ((error = tget_net_buf_ex(nbuf, IF_IP6_HDR_SIZE + align,
    259245                                           IF_IP6_HDR_SIZE + maxlen, nbatr, tmout)) != E_OK)
     
    261247
    262248        /*
    263          *  より大きなサイズのネットワークバッファを獲得する場合のみ長さを調整する。
    264          *  より小さなサイズのネットワークバッファの獲得は、送信ウィンドバッファの
    265          *  省コピー機能で使用され、実際に送信するまで、データサイズは決定できない。
     249         *  より大きなサイズのネットワークバッファを獲得する場合のみ長さを調整する。
     250         *  より小さなサイズのネットワークバッファの獲得は、送信ウィンドバッファの
     251         *  省コピー機能で使用され、実際に送信するまで、データサイズは決定できない。
    266252         */
    267253        if ((nbatr & NBA_SEARCH_ASCENT) != 0)
    268254                (*nbuf)->len = IF_IP6_HDR_SIZE + len;
    269255
    270         /* IPv6 ヘッダを設定する。*/
     256        /* IPv6 ヘッダを設定する。*/
    271257        if ((error = in6_set_header(*nbuf, len, dstaddr, srcaddr, next, hlim)) != E_OK)
    272258                return error;
    273259
    274         /* 4 オクテット境界までパディングで埋める。*/
     260        /* 4 オクテット境界までパディングで埋める。*/
    275261        if (align > len)
    276262                memset(GET_IP6_SDU(*nbuf) + len, 0, align - len);
     
    280266
    281267/*
    282  *  in6_get_maxnum_ifaddr -- インタフェースに設定可能な最大アドレス数を返す。
     268 *  in6_get_maxnum_ifaddr -- インタフェースに設定可能な最大アドレス数を返す。
    283269 */
    284270
     
    290276
    291277/*
    292  *  in6_get_ifaddr -- インタフェースに設定されているアドレスを返す。
     278 *  in6_get_ifaddr -- インタフェースに設定されているアドレスを返す。
    293279 */
    294280
     
    306292
    307293/*
    308  *  ipv62str -- IPv6 アドレスを文字列に変換する。
     294 *  ipv62str -- IPv6 アドレスを文字列に変換する。
    309295 */
    310296
     
    357343
    358344/*
    359  *  in6_cksum -- IPv6 のトランスポート層ヘッダのチェックサムを計算する。
    360  *
    361  *  注意: 戻り値はネットワークバイトオーダ
     345 *  in6_cksum -- IPv6 のトランスポート層ヘッダのチェックサムを計算する。
     346 *
     347 *  注意: 戻り値はネットワークバイトオーダ
    362348 */
    363349
     
    368354        uint_t          align;
    369355
    370         /* 4 オクテット境界のデータ長 */
     356        /* 4 オクテット境界のデータ長 */
    371357        align = (len + 3) >> 2 << 2;
    372358
    373         /* 4 オクテット境界までパディングで埋める。*/
     359        /* 4 オクテット境界までパディングで埋める。*/
    374360        if (align > len)
    375361                memset((uint8_t*)nbuf->buf + off + len, 0, align - len);
     
    384370
    385371/*
    386  *  in6_is_dstaddr_accept -- 宛å
    387 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—て正しいかチェックする。
     372 *  in6_is_dstaddr_accept -- 宛先アドレスとして正しいかチェックする。
    388373 */
    389374
     
    398383
    399384/*
    400  *  get_ip6_hdr_size -- 拡張ヘッダも含めた IPv6 ヘッダ長を返す。
     385 *  get_ip6_hdr_size -- 拡張ヘッダも含めた IPv6 ヘッダ長を返す。
    401386 */
    402387
     
    410395        while (1) {
    411396                next = *hdr;
    412                 if (curr ==IPPROTO_NONE)                /* 次ヘッダ無し                   */
     397                if (curr ==IPPROTO_NONE)                /* 次ヘッダ無し                       */
    413398                        break;
    414                 else if (curr == IPPROTO_FRAGMENT)      /* 断片化                    */
     399                else if (curr == IPPROTO_FRAGMENT)      /* 断片化                  */
    415400                        hsize = sizeof(T_IP6_FRAG_HDR);
    416                 else if (curr == IPPROTO_AH)            /* IPv6 認証                  */
     401                else if (curr == IPPROTO_AH)            /* IPv6 認証                      */
    417402                        hsize = (((T_IP6_AH_HDR *)hdr)->len + 2) * 4;
    418                 else if (curr == IPPROTO_HOPOPTS ||     /* 中継点 (Hop-by-Hop) オプション       */
    419                          curr == IPPROTO_DSTOPTS ||     /* IPv6 終点オプション           */
    420                          curr == IPPROTO_ROUTING)       /* 経路制御                 */
     403                else if (curr == IPPROTO_HOPOPTS ||     /* 中継点 (Hop-by-Hop) オプション       */
     404                         curr == IPPROTO_DSTOPTS ||     /* IPv6 終点オプション         */
     405                         curr == IPPROTO_ROUTING)       /* 経路制御                 */
    421406                        hsize = (((T_IP6_EXT_HDR *)hdr)->len + 1) * 8;
    422407                else
     
    430415
    431416/*
    432  *  in6_plen2pmask -- プレフィックス長からマスクを生成する。
     417 *  in6_plen2pmask -- プレフィックス長からマスクを生成する。
    433418 */
    434419
     
    448433
    449434/*
    450  *  in6_rtalloc -- ルーティング表を探索する。
     435 *  in6_rtalloc -- ルーティング表を探索する。
    451436 */
    452437
     
    462447
    463448                /*
    464                  *  サイトローカルアドレスか集約可能(グローバル)アドレスの場合は、
    465                  *  同一リンクå†
    466 ã®ãƒŽãƒ¼ãƒ‰ã§ã‚るかをチェックする。
     449                 *  サイトローカルアドレスか集約可能(グローバル)アドレスの場合は、
     450                 *  同一リンク内のノードであるかをチェックする。
    467451                 */
    468452
     
    470454                now /= SYSTIM_HZ;
    471455
    472                 /* 推奨有効時間å†
    473 ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’探索する。*/
     456                /* 推奨有効時間内のアドレスを探索する。*/
    474457                for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
    475458                        ia = &ifp->in_ifaddrs[ix];
     
    482465                        }
    483466
    484                 /* 有効時間å†
    485 ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’探索する。*/
     467                /* 有効時間内のアドレスを探索する。*/
    486468                for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
    487469                        ia = &ifp->in_ifaddrs[ix];
     
    494476
    495477                /*
    496                  *  プレフィックスを探索する。
     478                 *  プレフィックスを探索する。
    497479                 */
    498480                if (nd6_onlink_prefix_lookup (dst) != NULL)
     
    500482
    501483                /*
    502                  *  静的経路表を探索する。
     484                 *  静的経路表を探索する。
    503485                 */
    504486
     
    512494
    513495                                /*
    514                                  *  向け直しによるエントリは、有効時間が切れる時刻を延長する。
    515                                  *  expire の単位は [s]。
    516                                  *  TMO_IN_REDIRECT の単位は [ms]。
     496                                 *  向け直しによるエントリは、有効時間が切れる時刻を延長する。
     497                                 *  expire の単位は [s]。
     498                                 *  TMO_IN_REDIRECT の単位は [ms]。
    517499                                 */
    518500                                if (ix > NUM_STATIC_ROUTE_ENTRY) {
     
    532514
    533515                /*
    534                  *  ディフォルトルータ・リストを探索する。
     516                 *  ディフォルトルータ・リストを探索する。
    535517                 */
    536518                return nd6_router_lookup();
     
    541523
    542524/*
    543  *  in6_gateway_lookup -- ルーティング表のルータを探索する。
     525 *  in6_gateway_lookup -- ルーティング表のルータを探索する。
    544526 */
    545527
     
    557539
    558540/*
    559  *  in6_rtredirect -- ルーティング表にエントリを登録する。
    560  *
    561  *    注意: 引数 tmo の単位は [ms]。
     541 *  in6_rtredirect -- ルーティング表にエントリを登録する。
     542 *
     543 *    注意: 引数 tmo の単位は [ms]。
    562544 */
    563545
     
    578560
    579561/*
    580  *  in6_hostcache_lookup -- IPv6 ホストキャッシュを探索する。
     562 *  in6_hostcache_lookup -- IPv6 ホストキャッシュを探索する。
    581563 */
    582564
     
    594576
    595577/*
    596  *  in6_hostcache_update -- IPv6 ホストキャッシュを更新する。
     578 *  in6_hostcache_update -- IPv6 ホストキャッシュを更新する。
    597579 */
    598580
     
    606588        syscall(get_tim(&now));
    607589
    608         /* 既に登録されているか探索する。*/
     590        /* 既に登録されているか探索する。*/
    609591        if ((hc = in6_hostcache_lookup (dst)) == NULL) {
    610592
    611                 /* 空きのホストキャッシュを探す。*/
     593                /* 空きのホストキャッシュを探す。*/
    612594                for (ix = NUM_IN6_HOSTCACHE_ENTRY; ix -- > 0; ) {
    613595                        if (IN6_IS_HOSTCACHE_FREE(&in6_hostcache[ix]))
     
    617599                if (ix < 0) {
    618600                        /*
    619                          *  空きが無い時は、有効時間の切れる時間が、
    620                          *  最も短いホストキャッシュを置換する。
     601                         *  空きが無い時は、有効時間の切れる時間が、
     602                         *  最も短いホストキャッシュを置換する。
    621603                         */
    622604                        old = now - 1;
     
    638620
    639621                /*
    640                  *  既に登録されていて、新しい MTU が、登録されている MTU より大きいとき、
    641                  *  IN6_HOSTCACHE_INCREASE(推奨 10 分)間は更新しない。
     622                 *  既に登録されていて、新しい MTU が、登録されている MTU より大きいとき、
     623                 *  IN6_HOSTCACHE_INCREASE(推奨 10 分)間は更新しない。
    642624                 */
    643625                return;
     
    649631
    650632/*
    651  *  in6_hostcache_getmtu -- IPv6 ホストキャッシュをから MTU を取得する。
    652  *
    653  *    戻り値が 0 であれば、ホストキャッシュに登録されていない。
     633 *  in6_hostcache_getmtu -- IPv6 ホストキャッシュをから MTU を取得する。
     634 *
     635 *    戻り値が 0 であれば、ホストキャッシュに登録されていない。
    654636 */
    655637
     
    659641        T_IN6_HOSTCACHE_ENTRY   *hc;
    660642
    661         /* 既に登録されているか探索する。*/
     643        /* 既に登録されているか探索する。*/
    662644        if ((hc = in6_hostcache_lookup(dst)) == NULL)
    663645                return 0;
     
    667649
    668650/*
    669  *  in6_hostcache_timer -- IPv6 ホストキャッシュ更新タイマー
    670  *
    671  *    1秒周期で起動される。
     651 *  in6_hostcache_timer -- IPv6 ホストキャッシュ更新タイマー
     652 *
     653 *    1秒周期で起動される。
    672654 */
    673655
     
    689671
    690672/*
    691  *  in6_timer -- IPv6 å
    692 ±é€šã‚¿ã‚¤ãƒžãƒ¼
    693  *
    694  *    1秒周期で起動される。
     673 *  in6_timer -- IPv6 共通タイマー
     674 *
     675 *    1秒周期で起動される。
    695676 */
    696677
     
    720701
    721702/*
    722  *  in6_init -- IPv6 å
    723 ±é€šæ©Ÿèƒ½ã‚’初期化する。
     703 *  in6_init -- IPv6 共通機能を初期化する。
    724704 */
    725705
Note: See TracChangeset for help on using the changeset viewer.