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

文字コードを設定

Location:
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6
Files:
29 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ah.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;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$
     
    8270
    8371/*
    84  *  RFC2402 認証ヘッダ
     72 *  RFC2402 認証ヘッダ
    8573 */
    8674
     
    8876        uint8_t         next;   /* Next Header                          */
    8977        uint8_t         len;   
    90         /* 4 オクテット単位の長さ。ただし、データ長 + 1 がå
    91 ¥ã‚‹ã€‚ */
     78        /* 4 オクテット単位の長さ。ただし、データ長 + 1 が入る。       */
    9279        uint16_t        reserved;
    9380        uint32_t        spi;    /* Security Parameter Index (SPI)       */
    94         uint32_t        seq;    /* シーケンス番号                        */
     81        uint32_t        seq;    /* シーケンス番号                      */
    9582        } __attribute__((packed, aligned(2)))T_IP6_AH_HDR;
    9683
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ah6.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;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$
     
    8270
    8371/*
    84  *  関数
     72 *  関数
    8573 */
    8674
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ah_input.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$
     
    116104
    117105/*
    118  *  ah6_input -- 認証ヘッダのå
    119 ¥åŠ›é–¢æ•°
     106 *  ah6_input -- 認証ヘッダの入力関数
    120107 *
    121  *    本実è£
    122 ã§ã¯ã€ãƒ‡ãƒ¼ã‚¿ã‚°ãƒ©ãƒ ã‚’破棄する。
     108 *    本実装では、データグラムを破棄する。
    123109 */
    124110
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/dest6.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$
     
    114102
    115103/*
    116  *  dest6_input -- 終点オプションヘッダのå
    117 ¥åŠ›é–¢æ•°
     104 *  dest6_input -- 終点オプションヘッダの入力関数
    118105 *
    119  *    本実è£
    120 ã§ã¯ã€ãƒ‘ディング以外のオプションをå
    121 ¨ã¦æœªçŸ¥ã‚ªãƒ—ションとして処理する。
     106 *    本実装では、パディング以外のオプションを全て未知オプションとして処理する。
    122107 */
    123108
     
    131116        uint8_t         *opt;
    132117
    133         /* ネットワークバッファの残りの長さをチェックする。*/
     118        /* ネットワークバッファの残りの長さをチェックする。*/
    134119        if (input->len - off < sizeof(T_IP6_DEST_HDR))
    135120                goto buf_rel;
     
    138123        len    = (desth->len + 1) << 3;
    139124
    140         /* 終点オプションヘッダの長さをチェックする。*/
     125        /* 終点オプションヘッダの長さをチェックする。*/
    141126        if (input->len < off + len)
    142127                goto buf_rel;
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/esp.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    66 *  Copyright (C) 2008-2009 by Hokkaido Industrial Research Institute, JAPAN
    77 *
    8  *  上記著作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    10  *  によってå
    11 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    12  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    13  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    14 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    15  *  利用と呼ぶ)することを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    29  *    (a) 再é
    30 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    31 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    32  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
     8 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     9 *  によって公表されている GNU General Public License の Version 2 に記
     10 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     11 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     12 *  利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次の条件を満たすこと.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     25 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3726 *
    38  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    39 ãŠ
    40  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    41  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    42  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     27 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     28 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     29 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     30 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4331 *
    4432 *  @(#) $Id$
     
    8371
    8472/*
    85  *  RFC2406 暗号化ヘッダ
     73 *  RFC2406 暗号化ヘッダ
    8674 */
    8775
    8876typedef struct t_esp_hdr {
    8977        int32_t spi;    /* Security Parameter Index (SPI)       */
    90         int32_t seq;    /* シーケンス番号                        */
     78        int32_t seq;    /* シーケンス番号                      */
    9179        } __attribute__((packed, aligned(2)))T_ESP_HDR;
    9280
    9381typedef struct t_esp_tail {
    94         int8_t  padlen; /* パディング長                           */     
     82        int8_t  padlen; /* パディング長                               */     
    9583        int8_t  next;   /* Next Header                          */
    9684        } __attribute__((packed, aligned(2)))T_ESP_TAIL;
     
    127115
    128116/*
    129  * 関数
     117 * 関数
    130118 */
    131119
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/esp6.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;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$
     
    8270
    8371/*
    84  *  関数
     72 *  関数
    8573 */
    8674
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/esp_input.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$
     
    118106
    119107/*
    120  *  esp6_input -- 暗号化ヘッダのå
    121 ¥åŠ›é–¢æ•°
     108 *  esp6_input -- 暗号化ヘッダの入力関数
    122109 *
    123  *    本実è£
    124 ã§ã¯ã€ãƒ‡ãƒ¼ã‚¿ã‚°ãƒ©ãƒ ã‚’破棄する。
     110 *    本実装では、データグラムを破棄する。
    125111 */
    126112
     
    129115{
    130116#if 0
    131         *nextp = <T_ESP_TAIL の next フィールドの位置(IPv6 ヘッダのå
    132 ˆé ­ã‹ã‚‰ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆï¼‰>;
    133         *offp  = <次ヘッダの位置(input->buf からのオフセット)>;
     117        *nextp = <T_ESP_TAIL の next フィールドの位置(IPv6 ヘッダの先頭からのオフセット)>;
     118        *offp  = <次ヘッダの位置(input->buf からのオフセット)>;
    134119#endif
    135120        syscall(rel_net_buf(*inputp));
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/frag6.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$
     
    121109
    122110/*
    123  *  データグラム再構成キューé
    124 åˆ—
     111 *  データグラム再構成キュー配列
    125112 */
    126113
     
    129116
    130117/*
    131  *  ip6_get_frag_queue -- データグラム再構成キューを獲得する。
     118 *  ip6_get_frag_queue -- データグラム再構成キューを獲得する。
    132119 */
    133120
     
    139126
    140127/*
    141  *  frag6_free_queue -- データグラム再構成キューを解放する。
     128 *  frag6_free_queue -- データグラム再構成キューを解放する。
    142129 *
    143  *    注意: データグラム再構成キューé
    144 åˆ—をロックしてから呼び出すこと。
     130 *    注意: データグラム再構成キュー配列をロックしてから呼び出すこと。
    145131 */
    146132
     
    162148
    163149/*
    164  *  frag6_timer -- データグラム再構成管理タイマ
     150 *  frag6_timer -- データグラム再構成管理タイマ
    165151 */
    166152
     
    184170
    185171                                        /*
    186                                          *  å
    187 ˆé ­ã®æ–­ç‰‡ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆãŒ 0 の時のみ
    188                                          *  ICMPv6 エラーメッセージを送信する。
     172                                         *  先頭の断片のオフセットが 0 の時のみ
     173                                         *  ICMPv6 エラーメッセージを送信する。
    189174                                         */
    190175
    191                                         /* å
    192 ˆé ­ã®æ–­ç‰‡ã‚’データグラム再構成キューから外す。*/
     176                                        /* 先頭の断片をデータグラム再構成キューから外す。*/
    193177                                        ip6_frag_queue[ix] = qip6h->next_frag;
    194178
    195                                         /* あてå
    196 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å
    197 ƒã«æˆ»ã™ã€‚*/
     179                                        /* あて先アドレスを元に戻す。*/
    198180                                        GET_IP6_HDR(frag)->dst = ip6_frag_dest[ix];
    199181
    200                                         /* ICMPv6 エラーメッセージを送信する。*/
     182                                        /* ICMPv6 エラーメッセージを送信する。*/
    201183                                        icmp6_error(frag, ICMP6_TIME_EXCEEDED,
    202184                                                          ICMP6_TIME_EXCEED_REASSEMBLY, 0);
    203185                                        }
    204186
    205                                 /* データグラム再構成キューを解放する。*/
     187                                /* データグラム再構成キューを解放する。*/
    206188                                NET_COUNT_IP6(net_count_ip6[NC_IP6_FRAG_IN_TMOUT], 1);
    207189                                NET_COUNT_IP6(net_count_ip6[NC_IP6_FRAG_IN_DROP], 1);
     
    216198
    217199/*
    218  *  frag6_input -- 断片ヘッダのå
    219 ¥åŠ›é–¢æ•°
     200 *  frag6_input -- 断片ヘッダの入力関数
    220201 */
    221202
     
    241222#endif  /* #ifdef IP6_CFG_FRAGMENT */
    242223
    243         /* ネットワークバッファの残りの長さをチェックする。*/
     224        /* ネットワークバッファの残りの長さをチェックする。*/
    244225        if (input->len - off < sizeof(T_IP6_FRAG_HDR))
    245226                goto buf_rel;
    246227
    247228        /*
    248          *  巨大ペイロードオプションと断片ヘッダを同時に使用することは
    249          *  できない。ペイロード長がが 0 なら、巨大ペイロードオプションが
    250          *  指定されていることになるので ICMP でエラーを送信è€
    251 ã«
    252          *  通知する。
     229         *  巨大ペイロードオプションと断片ヘッダを同時に使用することは
     230         *  できない。ペイロード長がが 0 なら、巨大ペイロードオプションが
     231         *  指定されていることになるので ICMP でエラーを送信者に
     232         *  通知する。
    253233         */
    254234        ip6h = GET_IP6_HDR(input);
     
    262242
    263243        /*
    264          *  オフセットが 0 で、最終フラグメントであれば、
    265          *  分割不要のデータグラムなので、
    266          *  次ヘッダを指す変数を調整して終了する。
     244         *  オフセットが 0 で、最終フラグメントであれば、
     245         *  分割不要のデータグラムなので、
     246         *  次ヘッダを指す変数を調整して終了する。
    267247         */
    268248        ip6fh = (T_IP6_FRAG_HDR *)(input->buf + off);
     
    276256
    277257        /*
    278          *  ペイロード長をチェックする。
     258         *  ペイロード長をチェックする。
    279259         */
    280260        if ((ip6fh->off_flag & IP6F_MORE_FRAG) &&
     
    291271
    292272        /*
    293          *  データグラム再構成キューé
    294 åˆ—から、対応するエントリを探す。
     273         *  データグラム再構成キュー配列から、対応するエントリを探す。
    295274         */
    296275        for (ix = NUM_IP6_FRAG_QUEUE; ix -- > 0; ) {
     
    310289
    311290                /*
    312                  *  断片の正当性をチェックする。
     291                 *  断片の正当性をチェックする。
    313292                 */
    314293                unfraglen = 0;
     
    317296
    318297                        /*
    319                          *  å
    320 ¥åŠ›ã—た断片がå
    321 ˆé ­ã®æ–­ç‰‡
    322                          *  分割できない部分の長さ unfraglen を計算する。
     298                         *  入力した断片が先頭の断片
     299                         *  分割できない部分の長さ unfraglen を計算する。
    323300                         */
    324301                        unfraglen = (off - IF_HDR_SIZE) - sizeof(T_IP6_HDR);
     
    352329
    353330                /*
    354                  *  ip6fq == NULL であれば、対応するエントリは無いので、
    355                  *  データグラム再構成キューé
    356 åˆ—に、エントリを追加する。
     331                 *  ip6fq == NULL であれば、対応するエントリは無いので、
     332                 *  データグラム再構成キュー配列に、エントリを追加する。
    357333                 */
    358334                for (ix = NUM_IP6_FRAG_QUEUE; ix -- > 0; ) {
    359335
    360                         /* 空きエントリを探す。*/
     336                        /* 空きエントリを探す。*/
    361337                        if (ip6_frag_queue[ix] == NULL) {
    362338                                ip6fq = &ip6_frag_queue[ix];
     
    366342
    367343                /*
    368                  *  ip6fq == NULL であれば、空きエントリが無いので、
    369                  *  タイムアウト(hlim)が短いエントリを開放する。
     344                 *  ip6fq == NULL であれば、空きエントリが無いので、
     345                 *  タイムアウト(hlim)が短いエントリを開放する。
    370346                 */
    371347                if (ip6fq == NULL) {
     
    385361
    386362                /*
    387                  *  エントリを設定する。
     363                 *  エントリを設定する。
    388364                 */
    389365                *ip6fq = input;
     
    398374
    399375                /*
    400                  *  断片の正当性をチェックする。
     376                 *  断片の正当性をチェックする。
    401377                 */
    402378                unfraglen = 0;
     
    405381
    406382                        /*
    407                          *  データグラム再構成キューの最初の断片がå
    408 ˆé ­ã®æ–­ç‰‡
    409                          *  分割できない部分の長さ unfraglen を計算する。
     383                         *  データグラム再構成キューの最初の断片が先頭の断片
     384                         *  分割できない部分の長さ unfraglen を計算する。
    410385                         */
    411386                        unfraglen = (GET_QIP6_HDR(*ip6fq)->foff - IF_HDR_SIZE) - sizeof(T_IP6_HDR);
     
    416391
    417392                        /*
    418                          *  å
    419 ¥åŠ›ã—た断片がå
    420 ˆé ­ã®æ–­ç‰‡
    421                          *  分割できない部分の長さ unfraglen を計算する。
     393                         *  入力した断片が先頭の断片
     394                         *  分割できない部分の長さ unfraglen を計算する。
    422395                         */
    423396                        unfraglen = (off - IF_HDR_SIZE) - sizeof(T_IP6_HDR);
     
    453426
    454427                        /*
    455                          *  å
    456 ¥åŠ›ã—た断片がå
    457 ˆé ­ã®æ–­ç‰‡
    458                          *  データグラム再構成キューの最後の断片が、
    459                          *  データグラムの最大長をè¶
    460 ãˆã¦ã„ないかチェックする。
    461                          */
    462 
    463                         /* 最後の断片を探索する。*/
     428                         *  入力した断片が先頭の断片
     429                         *  データグラム再構成キューの最後の断片が、
     430                         *  データグラムの最大長を超えていないかチェックする。
     431                         */
     432
     433                        /* 最後の断片を探索する。*/
    464434                        next = *ip6fq;
    465435                        while ((qip6h = GET_QIP6_HDR(next))->next_frag != NULL)
    466436                                next = qip6h->next_frag;
    467437
    468                         /* 最後の断片のオフセットと断片サイズを計算する。*/
     438                        /* 最後の断片のオフセットと断片サイズを計算する。*/
    469439                        qip6fh = (T_IP6_FRAG_HDR *)(next->buf + qip6h->foff);
    470440                        fragoff = ntohs(qip6fh->off_flag & IP6F_OFF_MASK);
     
    473443
    474444                                /*
    475                                  *  データグラムの最大長をè¶
    476 ãˆã¦ã„る場合は、
    477                                  *  データグラム再構成キューå
    478 ¨ä½“を破棄する。
     445                                 *  データグラムの最大長を超えている場合は、
     446                                 *  データグラム再構成キュー全体を破棄する。
    479447                                 */
    480448                                frag6_free_queue(ip6fq);
     
    484452                        }
    485453
    486                 /* ECN の正当性チェックは未実è£
    487  */
    488 
    489                 /*
    490                  *  断片をエントリに挿å
    491 ¥ã™ã‚‹ã€‚
    492                  *  データグラム再構成キューから、å
    493 ¥åŠ›ã—た断片より前の断片を探索する。
     454                /* ECN の正当性チェックは未実装 */
     455
     456                /*
     457                 *  断片をエントリに挿入する。
     458                 *  データグラム再構成キューから、入力した断片より前の断片を探索する。
    494459                 */
    495460                prev = NULL;
     
    505470
    506471                /*
    507                  *  prev は、å
    508 ¥åŠ›ã—た断片より前の断片。ただし NULL の場合は、
    509                  *  å
    510 ¥åŠ›ã—た断片がデータグラム再構成キューの中で最も前の断片。
    511                  *  next は、å
    512 ¥åŠ›ã—た断片より後の断片。ただし NULL の場合は、
    513                  *  å
    514 ¥åŠ›ã—た断片がデータグラム再構成キューの中で最も後の断片。
     472                 *  prev は、入力した断片より前の断片。ただし NULL の場合は、
     473                 *  入力した断片がデータグラム再構成キューの中で最も前の断片。
     474                 *  next は、入力した断片より後の断片。ただし NULL の場合は、
     475                 *  入力した断片がデータグラム再構成キューの中で最も後の断片。
    515476                 */
    516477                fragoff = ntohs(ip6fh->off_flag & IP6F_OFF_MASK);
     
    518479
    519480                        /*
    520                          *  前の断片と、å
    521 ¥åŠ›ã—た断片が重なっていないかチェックする。
     481                         *  前の断片と、入力した断片が重なっていないかチェックする。
    522482                         *
    523483                         *    qfragoff
     
    542502                        if (diff > 0) {
    543503
    544                                 /* 重なっていれば、å
    545 ¥åŠ›ã—た断片を破棄して終了する。*/
     504                                /* 重なっていれば、入力した断片を破棄して終了する。*/
    546505                                syscall(rel_net_buf(input));
    547506                                goto sig_ret;
     
    552511
    553512                        /*
    554                          *  後の断片と、å
    555 ¥åŠ›ã—た断片が重なっていないかチェックする。
     513                         *  後の断片と、入力した断片が重なっていないかチェックする。
    556514                         *
    557515                         *    fragoff
     
    576534                        if (diff > 0) {
    577535
    578                                 /* 重なっていれば、å
    579 ¥åŠ›ã—た断片を破棄して終了する。*/
     536                                /* 重なっていれば、入力した断片を破棄して終了する。*/
    580537                                syscall(rel_net_buf(input));
    581538                                goto sig_ret;
     
    583540                        }
    584541
    585                 /* å
    586 ¥åŠ›ã—た断片を設定する。*/
     542                /* 入力した断片を設定する。*/
    587543                qip6h  = GET_QIP6_HDR(input);
    588544                qip6h->foff = off;
     
    598554
    599555                /*
    600                  *  å
    601 ¨ã¦ã®æ–­ç‰‡ã‚’受信したかチェックする。
     556                 *  全ての断片を受信したかチェックする。
    602557                 */
    603558                plen = 0;
     
    608563                        if (ntohs(qip6fh->off_flag & IP6F_OFF_MASK) != plen) {
    609564
    610                                 /* 断片が連続していない。*/
     565                                /* 断片が連続していない。*/
    611566                                goto sig_ret;
    612567                                }
     
    616571                if (ntohs(qip6fh->off_flag & IP6F_MORE_FRAG) != 0) {
    617572
    618                         /* 最後の断片を受信していない。*/
     573                        /* 最後の断片を受信していない。*/
    619574                        goto sig_ret;
    620575                        }
    621576
    622577                /*
    623                  *  å
    624 ¨ã¦ã®æ–­ç‰‡ã‚’受信したので、再構成する。
    625                  */
    626 
    627                 /* ネットワークバッファを獲得する。*/
     578                 *  全ての断片を受信したので、再構成する。
     579                 */
     580
     581                /* ネットワークバッファを獲得する。*/
    628582                qip6h  = GET_QIP6_HDR(*ip6fq);
    629583                qip6fh = (T_IP6_FRAG_HDR *)((*ip6fq)->buf + qip6h->foff);
     
    631585
    632586                        /*
    633                          *  断片ヘッダの直前のヘッダの NEXT フィールドのアドレスを獲得し、
    634                          *  å
    635 ƒã«æˆ»ã™ã€‚
     587                         *  断片ヘッダの直前のヘッダの NEXT フィールドのアドレスを獲得し、
     588                         *  元に戻す。
    636589                         */
    637590                        if ((prev_next = ip6_get_prev_hdr(*ip6fq, qip6h->foff)) == NULL) {
     
    646599
    647600                        /*
    648                          *  IPv6 ヘッダと分割できない部分を
    649                          *  データグラム再構成キューの中のå
    650 ˆé ­ã®æ–­ç‰‡ã‹ã‚‰ã‚³ãƒ”ーする。
     601                         *  IPv6 ヘッダと分割できない部分を
     602                         *  データグラム再構成キューの中の先頭の断片からコピーする。
    651603                         */
    652604                        memcpy(input->buf, (*ip6fq)->buf, qip6h->foff);
    653605
    654                         /* 送信å
    655 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å
    656 ƒã«æˆ»ã™ã€‚*/
     606                        /* 送信先アドレスを元に戻す。*/
    657607                        ip6h = GET_IP6_HDR(input);
    658608                        ip6h->dst = ip6_frag_dest[ip6fq - ip6_frag_queue];
    659609
    660                         /* offp を、再構成した断片のå
    661 ˆé ­ã«è¨­å®šã™ã‚‹ã€‚*/
     610                        /* offp を、再構成した断片の先頭に設定する。*/
    662611                        *offp = qip6h->foff;
    663612
    664                         /* ネットワークバッファ長を設定する。*/
     613                        /* ネットワークバッファ長を設定する。*/
    665614                        input->len = plen + qip6h->foff;
    666615
    667616                        /*
    668                          *  å
    669 ¨ã¦ã®æ–­ç‰‡ã‚’コピーする。
     617                         *  全ての断片をコピーする。
    670618                         */
    671619                        frag = *ip6fq;
     
    680628                                }
    681629
    682                         /* ペイロード長を設定する。*/
     630                        /* ペイロード長を設定する。*/
    683631                        ip6h->plen = htons(plen);
    684632
     
    692640                        }
    693641
    694                 /* データグラム再構成キューを解放する。*/
     642                /* データグラム再構成キューを解放する。*/
    695643                frag6_free_queue(ip6fq);
    696644                }
     
    703651
    704652        /*
    705          *  データグラムの分割・再構成行わない場合は、å
    706 ¨æ–­ç‰‡ã‚’破棄し、
    707          *  最後の断片を受信したとき、
    708          *  ICMP エラーを送信è€
    709 ã«é€šçŸ¥ã™ã‚‹ã€‚
     653         *  データグラムの分割・再構成行わない場合は、全断片を破棄し、
     654         *  最後の断片を受信したとき、
     655         *  ICMP エラーを送信者に通知する。
    710656         */
    711657        if ((ip6fh->off_flag & IP6F_MORE_FRAG) == 0) {
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/icmp6.c

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

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;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$
     
    8371
    8472/*
    85  *  関数
     73 *  関数
    8674 */
    8775
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6.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$
     
    152140
    153141/*
    154  *  å
    155 ¨åŸŸå¤‰æ•°
     142 *  全域変数
    156143 */
    157144
     
    166153
    167154/*
    168  *  in6_addmulti -- マルチキャストアドレスを登録する。
     155 *  in6_addmulti -- マルチキャストアドレスを登録する。
    169156 */
    170157
     
    181168
    182169/*
    183  *  in6_ifinit -- インタフェースにアドレスæƒ
    184 å ±ã‚’設定し、初期化する。
     170 *  in6_ifinit -- インタフェースにアドレス情報を設定し、初期化する。
    185171 */
    186172
     
    188174in6_ifinit (T_IFNET *ifp, T_IN6_IFADDR *ia, T_IN6_ADDR *addr, uint_t prefix_len)
    189175{
    190         /* アドレスとプレフィックス長を設定する。*/
     176        /* アドレスとプレフィックス長を設定する。*/
    191177        ia->addr       = *addr;
    192178        ia->prefix_len = prefix_len;
    193179
    194         /* フラグを初期化する。*/
     180        /* フラグを初期化する。*/
    195181        ia->flags = 0;
    196182
    197183        /*
    198          *  初めてアドレスが設定されたとき、インタフェース独自の初期化を行う。
     184         *  初めてアドレスが設定されたとき、インタフェース独自の初期化を行う。
    199185         */
    200186
     
    203189
    204190/*
    205  *  in6_ifainit -- インタフェースアドレス構造体の初期化
     191 *  in6_ifainit -- インタフェースアドレス構造体の初期化
    206192 */
    207193
     
    222208
    223209/*
    224  *  in6_if2idlen -- インタフェース ID 長を返す。
     210 *  in6_if2idlen -- インタフェース ID 長を返す。
    225211 */
    226212
     
    236222
    237223/*
    238  *  in6_addr2ifaix -- アドレスからインタフェースアドレスæƒ
    239 å ±ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã«å¤‰æ›ã™ã‚‹ã€‚
     224 *  in6_addr2ifaix -- アドレスからインタフェースアドレス情報のインデックスに変換する。
    240225 */
    241226
     
    258243
    259244/*
    260  *  in6_addr2maix -- アドレスからマルチキャストアドレスのインデックスに変換する。
     245 *  in6_addr2maix -- アドレスからマルチキャストアドレスのインデックスに変換する。
    261246 */
    262247
     
    279264
    280265/*
    281  *  in6_update_ifa -- インタフェースのアドレスæƒ
    282 å ±ã‚’更新する。
     266 *  in6_update_ifa -- インタフェースのアドレス情報を更新する。
    283267 */
    284268
     
    292276        SYSTIM          now;
    293277
    294         /* 引数をチェックする。*/
     278        /* 引数をチェックする。*/
    295279        if (addr == NULL)
    296280                return E_PAR;
    297281
    298282        /*
    299          *  有効時間をチェックする。
    300          *  vltime (有効時間) と pltime (推奨有効時間) の単位は [s]。
     283         *  有効時間をチェックする。
     284         *  vltime (有効時間) と pltime (推奨有効時間) の単位は [s]。
    301285         */
    302286        syscall(get_tim(&now));
     
    309293                return E_PAR;
    310294
    311         /* インタフェースを初期化する。*/
     295        /* インタフェースを初期化する。*/
    312296        if ((error = in6_ifinit(ifp, ia, addr, prefix_len)) != E_OK)
    313297                return error;
     
    315299        if (IN6_IS_ADDR_LINKLOCAL(addr)) {
    316300
    317                 /* 要請マルチキャストアドレスを登録する。*/
     301                /* 要請マルチキャストアドレスを登録する。*/
    318302                llsol.s6_addr32[0] = IPV6_ADDR_INT32_MLL;
    319303                llsol.s6_addr32[1] = 0x00000000;
     
    324308                        return error;
    325309
    326                 /* å
    327 ¨ãƒŽãƒ¼ãƒ‰ãƒ»ãƒªãƒ³ã‚¯ãƒ­ãƒ¼ã‚«ãƒ«ãƒ»ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’登録する。*/
     310                /* 全ノード・リンクローカル・マルチキャストアドレスを登録する。*/
    328311                llsol.s6_addr32[2] = 0x00000000;
    329312                llsol.s6_addr32[3] = IPV6_ADDR_INT32_ONE;
     
    333316                }
    334317
    335         /* ルータインデックスを設定する。*/
     318        /* ルータインデックスを設定する。*/
    336319        ia->router_index = router_index;
    337320
    338         /* プレフィックスインデックスを設定する。*/
     321        /* プレフィックスインデックスを設定する。*/
    339322        ia->prefix_index = prefix_index;
    340323
    341         /* フラグを設定する。*/
     324        /* フラグを設定する。*/
    342325        ia->flags  = flags & ~(IN6_IFF_DUPLICATED | IN6_IFF_NODAD);
    343326        ia->flags |= IN6_IFF_DEFINED;
    344327
    345328        /*
    346          *  アドレス有効時間を設定する。
    347          *  vltime (有効時間) と pltime (推奨有効時間) の単位は [s]。
     329         *  アドレス有効時間を設定する。
     330         *  vltime (有効時間) と pltime (推奨有効時間) の単位は [s]。
    348331         */
    349332        syscall(get_tim(&now));
     
    362345                ia->lifetime.preferred = 0;
    363346
    364         /* 近隣探索の初期設定を行う。*/
     347        /* 近隣探索の初期設定を行う。*/
    365348        nd6_ifattach(ifp);
    366349
    367         /* 重複アドレス検出を行う。*/
     350        /* 重複アドレス検出を行う。*/
    368351        if ((flags & IN6_IFF_NODAD) == 0) {
    369352                ia->flags |= IN6_IFF_TENTATIVE;
     
    375358
    376359/*
    377  * in6ifa_ifpwithix -- インデックス番号から、ネットワークインタフェースに
    378  *                     å‰²ã‚Šå½“てられているアドレスを探索する。
     360 * in6ifa_ifpwithix -- インデックス番号から、ネットワークインタフェースに
     361 *                     割り当てられているアドレスを探索する。
    379362 */
    380363
     
    386369
    387370/*
    388  * in6ifa_ifpwithrtrix -- ルータのインデックス番号から、ネットワークインタフェースに
    389  *                        割り当てられているアドレスを探索する。
     371 * in6ifa_ifpwithrtrix -- ルータのインデックス番号から、ネットワークインタフェースに
     372 *                        割り当てられているアドレスを探索する。
    390373 */
    391374
     
    402385
    403386/*
    404  * in6_ifawithifp -- 宛å
    405 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    406 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    407  *                   ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã‹ã‚‰æŽ¢ç´¢ã™ã‚‹ã€‚
     387 * in6_ifawithifp -- 宛先アドレスにふさわしい送信元アドレスを、
     388 *                   ネットワークインタフェースから探索する。
    408389 */
    409390
     
    414395        int_t   ix;
    415396
    416         /* 宛å
    417 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¨åŒã˜ã‚¹ã‚³ãƒ¼ãƒ—のアドレスを返す。*/
     397        /* 宛先アドレスと同じスコープのアドレスを返す。*/
    418398        if ((ix = in6_addr2ifaix(dst)) != IPV6_IFADDR_IX_INVALID)
    419399                return &ifp->in_ifaddrs[ix];
     
    435415
    436416/*
    437  * in6_if_up -- インタフェース起動後の重複アドレス検出を行う。
     417 * in6_if_up -- インタフェース起動後の重複アドレス検出を行う。
    438418 */
    439419
     
    441421in6_if_up (T_IFNET *ifp)
    442422{
    443 #if 0                                           /* 保留 */
     423#if 0                                           /* 保留 */
    444424        int_t dad_delay, ix;
    445425#endif  /* of #if 0 */
     
    447427        in6_ifattach(ifp);
    448428
    449 #if 0                                           /* 保留 */
    450         /* 重複アドレス検出を行う。*/
     429#if 0                                           /* 保留 */
     430        /* 重複アドレス検出を行う。*/
    451431        dad_delay = 0;
    452432        for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; )
     
    458438#if NUM_ND6_RTR_SOL_RETRY > 0
    459439
    460         /* ルータ要請を出力する。*/
     440        /* ルータ要請を出力する。*/
    461441        nd6_rtrsol_ctl();
    462442
     
    465445
    466446/*
    467  *  in6_are_prefix_equal -- プレフィックスが同一か調べる。
     447 *  in6_are_prefix_equal -- プレフィックスが同一か調べる。
    468448 */
    469449
     
    486466
    487467/*
    488  *  in6_ifaddr_timer -- ネットワークインタフェースのアドレスの管理タイマー
     468 *  in6_ifaddr_timer -- ネットワークインタフェースのアドレスの管理タイマー
    489469 */
    490470
     
    505485
    506486                        /*
    507                          *  有効時間を過ぎたので削除する。
     487                         *  有効時間を過ぎたので削除する。
    508488                         */
    509489                        ia->flags &= ~IN6_IFF_DEFINED;
     
    513493
    514494                        /*
    515                          *  推奨有効時間を過ぎたので非推奨にする。
     495                         *  推奨有効時間を過ぎたので非推奨にする。
    516496                         */
    517497                        ia->flags |= IN6_IFF_DEPRECATED;
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;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$
     
    115103
    116104/*
    117  *  IPv6 アドレス
     105 *  IPv6 アドレス
    118106 */
    119107
     
    140128
    141129/*
    142  *  IPv6 アドレスの初期化データ
     130 *  IPv6 アドレスの初期化データ
    143131 */
    144132
     
    162150
    163151/*
    164  *  アドレスの定義
     152 *  アドレスの定義
    165153 */
    166154
     
    196184
    197185/*
    198  *  特別なアドレスのチェック
    199  */
    200 
    201 /* 無指定 */
     186 *  特別なアドレスのチェック
     187 */
     188
     189/* 無指定 */
    202190
    203191#define IN6_IS_ADDR_UNSPECIFIED(a)      \
    204192        (memcmp((void *)(a), (void *)&in6_addr_unspecified, sizeof(T_IN6_ADDR)) == 0)
    205193
    206 /* ループバック */
     194/* ループバック */
    207195
    208196#define IN6_IS_ADDR_LOOPBACK(a)         \
     
    210198         (a)->s6_addr8[15] == 0x01)
    211199
    212 /* IPv4 互換 */
     200/* IPv4 互換 */
    213201
    214202#define IN6_IS_ADDR_V4COMPAT(a)         \
     
    216204         (a)->s6_addr32[3] > IPV6_ADDR_INT32_ONE)
    217205
    218 /* IPv4 マップ */
     206/* IPv4 マップ */
    219207
    220208#define IN6_IS_ADDR_V4MAPPED(a)         \
     
    224212
    225213/*
    226  *  スコープ ID
     214 *  スコープ ID
    227215 */
    228216
     
    234222
    235223/*
    236  *  ユニキャスト・スコープ
    237  *
    238  *  注意: 上位 10 ビットのみチェックしなければならない。RFC2373 参ç
    239 §
    240  */
    241 
    242 /* リンクローカル */
     224 *  ユニキャスト・スコープ
     225 *
     226 *  注意: 上位 10 ビットのみチェックしなければならない。RFC2373 参照
     227 */
     228
     229/* リンクローカル */
    243230
    244231#define IN6_IS_ADDR_LINKLOCAL(a)        \
    245232        (((a)->s6_addr8[0] == UINT_C(0xfe)) && (((a)->s6_addr8[1] & UINT_C(0xc0)) == UINT_C(0x80)))
    246233
    247 /* サイトローカル */
     234/* サイトローカル */
    248235
    249236#define IN6_IS_ADDR_SITELOCAL(a)        \
    250237        (((a)->s6_addr8[0] == UINT_C(0xfe)) && (((a)->s6_addr8[1] & UINT_C(0xc0)) == UINT_C(0xc0)))
    251238
    252 /* 集約可能ユニキャスト (グローバル) */
     239/* 集約可能ユニキャスト (グローバル) */
    253240
    254241#define IN6_IS_ADDR_AGGREGATE_UNICAST(a)        \
     
    256243
    257244/*
    258  *  マルチキャスト
     245 *  マルチキャスト
    259246 */
    260247
    261248#define IN6_IS_ADDR_MULTICAST(a)        ((a)->s6_addr8[0] == UINT_C(0xff))
    262249
    263 /* 要請マルチキャスト */
     250/* 要請マルチキャスト */
    264251
    265252#define IN6_IS_ADDR_NS_MULTICAST(a)     \
     
    270257
    271258/*
    272  *  同一のチェック
     259 *  同一のチェック
    273260 */
    274261
     
    276263
    277264/*
    278  *  経路制御用定義
    279  */
    280 
    281 #define IPV6_RTHDR_TYPE_0               UINT_C(0)       /* IPv6 経路制御ヘッダタイプ 0        */
    282 
    283 /*
    284  *  規定値と制限値
    285  */
    286 
    287 #define IPV6_DEFAULT_MULTICAST_HOPS     1       /* マルチキャスト時のホップリミットの規定値 */
    288 
    289 /*
    290  *  ITRON TCP/IPv6 アドレス/ポート番号の定義
     265 *  経路制御用定義
     266 */
     267
     268#define IPV6_RTHDR_TYPE_0               UINT_C(0)       /* IPv6 経路制御ヘッダタイプ 0    */
     269
     270/*
     271 *  規定値と制限値
     272 */
     273
     274#define IPV6_DEFAULT_MULTICAST_HOPS     1       /* マルチキャスト時のホップリミットの規定値 */
     275
     276/*
     277 *  ITRON TCP/IPv6 アドレス/ポート番号の定義
    291278 */
    292279
    293280typedef struct t_ipv6ep {
    294         T_IN6_ADDR      ipaddr;         /* IPv6 アドレス    */
    295         uint16_t        portno;         /* ポート番号      */
     281        T_IN6_ADDR      ipaddr;         /* IPv6 アドレス    */
     282        uint16_t        portno;         /* ポート番号        */
    296283        } T_IPV6EP;
    297284
    298285/*
    299  *  ITRON/TCP/IP 用 IP アドレスの定義
     286 *  ITRON/TCP/IP 用 IP アドレスの定義
    300287 */
    301288
     
    303290
    304291/*
    305  *  動的生成用 IPv6 TCP 受付口
     292 *  動的生成用 IPv6 TCP 受付口
    306293 */
    307294
    308295typedef struct t_tcp6_crep {
    309         /* 標準 */
    310         ATR             repatr;         /* 受付口属性              */
    311         T_IPV6EP        myaddr;         /* 自分のアドレス        */
    312         /* 実è£
    313 ä¾å­˜ */
     296        /* 標準 */
     297        ATR             repatr;         /* 受付口属性                */
     298        T_IPV6EP        myaddr;         /* 自分のアドレス      */
     299        /* 実装依存 */
    314300        } T_TCP6_CREP;
    315301
     
    319305
    320306/*
    321  *  動的生成用 IPv6 UDP 通信端点
     307 *  動的生成用 IPv6 UDP 通信端点
    322308 */
    323309
    324310typedef struct t_udp6_ccep {
    325         /* 標準 */
    326         ATR             cepatr;         /* UDP 通信端点属性               */
    327         T_IPV6EP        myaddr;         /* 自分のアドレス                */
    328         FP              callback;       /* コールバック関数             */
    329         /* 実è£
    330 ä¾å­˜ */
     311        /* 標準 */
     312        ATR             cepatr;         /* UDP 通信端点属性           */
     313        T_IPV6EP        myaddr;         /* 自分のアドレス              */
     314        FP              callback;       /* コールバック関数             */
     315        /* 実装依存 */
    331316        } T_UDP6_CCEP;
    332317
     
    336321
    337322/*
    338  *  IPv4 と IPv6 をコンパイル時に選択するためのマクロ
     323 *  IPv4 と IPv6 をコンパイル時に選択するためのマクロ
    339324 */
    340325
     
    356341
    357342/*
    358  *  前方参ç
    359 §
     343 *  前方参照
    360344 */
    361345
     
    369353
    370354/*
    371  *  å
    372 ¨åŸŸå¤‰æ•°
     355 *  全域変数
    373356 */
    374357
     
    380363
    381364/*
    382  *  TINET 独自 API
     365 *  TINET 独自 API
    383366 */
    384367
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6_ifattach.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$
     
    11098
    11199/*
    112  * EUI64 の定義
     100 * EUI64 の定義
    113101 */
    114102
     
    118106
    119107/*
    120  * get_mac6_ifid -- MAC (6 オクテット) アドレスで、インタフェース識別子を設定する。
     108 * get_mac6_ifid -- MAC (6 オクテット) アドレスで、インタフェース識別子を設定する。
    121109 */
    122110
     
    141129
    142130/*
    143  *  in6_ifattach_linklocal -- インタフェースにリンクローカル・アドレスを割り当てる。
     131 *  in6_ifattach_linklocal -- インタフェースにリンクローカル・アドレスを割り当てる。
    144132 */
    145133
     
    151139
    152140        /*
    153          *  リンクローカル・プレフィックス fe80::/64 を設定する。
     141         *  リンクローカル・プレフィックス fe80::/64 を設定する。
    154142         */
    155143        addr.s6_addr32[0] = IPV6_ADDR_INT32_ULL;
    156144        addr.s6_addr32[1] = ULONG_C(0);
    157145
    158         /* インタフェース識別子を設定する。*/
     146        /* インタフェース識別子を設定する。*/
    159147        if ((error = IF_IN6_IFID(ifp, &addr)) != E_OK)
    160148                return error;
    161149
    162         /* インタフェースのアドレスæƒ
    163 å ±ã‚’更新する。*/
     150        /* インタフェースのアドレス情報を更新する。*/
    164151        if ((error = in6_update_ifa(ifp, &ifp->in_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL],
    165152                                    &addr, 64, ND6_INFINITE_LIFETIME,
     
    174161
    175162/*
    176  *  in6_ifattach -- インタフェースにアドレスを割り当てる。
     163 *  in6_ifattach -- インタフェースにアドレスを割り当てる。
    177164 */
    178165
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6_ifattach.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;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$
     
    8068
    8169/*
    82  *  関数
     70 *  関数
    8371 */
    8472
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6_rename.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;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$
     
    4836
    4937/*
    50  *  TCP/IPv6 プロトコルスタックå†
    51 éƒ¨åã®ãƒªãƒãƒ¼ãƒ 
     38 *  TCP/IPv6 プロトコルスタック内部名のリネーム
    5239 */
    5340
  • 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
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6_var.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;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$
     
    117105
    118106/*
    119  *  アドレス有効時間構造体
     107 *  アドレス有効時間構造体
    120108 */
    121109
     
    123111
    124112        /*
    125          * expire と perferred は、システムが起動してからの経過時間
     113         * expire と perferred は、システムが起動してからの経過時間
    126114         */
    127         uint32_t        expire;         /* 有効時間が切れる時刻 [s]   */
    128         uint32_t        preferred;      /* 推奨有効時間が切れる時刻 [s]     */
     115        uint32_t        expire;         /* 有効時間が切れる時刻 [s]       */
     116        uint32_t        preferred;      /* 推奨有効時間が切れる時刻 [s]     */
    129117
    130118        /*
    131          * vltime と pltime は、追加/変更してからの相対時間
     119         * vltime と pltime は、追加/変更してからの相対時間
    132120         */
    133         uint32_t        vltime;         /* 有効時間 [ms]                    */
    134         uint32_t        pltime;         /* 推奨有効時間 [ms]              */
     121        uint32_t        vltime;         /* 有効時間 [ms]                    */
     122        uint32_t        pltime;         /* 推奨有効時間 [ms]          */
    135123        } __attribute__((packed, aligned(2)))T_IN6_ADDR_LIFETIME;
    136124
    137125/*
    138  *  インタフェースアドレス構造体
     126 *  インタフェースアドレス構造体
    139127 */
    140128
    141129typedef struct t_in6_ifaddr {
    142         T_IN6_ADDR              addr;           /* IPv6 アドレス            */
    143         T_IN6_ADDR_LIFETIME     lifetime;       /* 有効時間         */
    144         uint8_t                 flags;          /* フラグ            */
    145         uint8_t                 prefix_len;     /* プレフィックス長     */
    146         uint8_t                 router_index;   /* ルータインデックス  */
    147         uint8_t                 prefix_index;   /* プレフィックスインデックス      */
    148         uint8_t                 na_icount;      /* 重複アドレス検出 (DAD) 通知のå
    149 ¥åŠ›å›žæ•°      */
    150         uint8_t                 ns_icount;      /* 重複アドレス検出 (DAD) 要請のå
    151 ¥åŠ›å›žæ•°      */
    152         uint8_t                 ns_ocount;      /* 重複アドレス検出 (DAD) 要請の出力回数 */
     130        T_IN6_ADDR              addr;           /* IPv6 アドレス            */
     131        T_IN6_ADDR_LIFETIME     lifetime;       /* 有効時間         */
     132        uint8_t                 flags;          /* フラグ          */
     133        uint8_t                 prefix_len;     /* プレフィックス長     */
     134        uint8_t                 router_index;   /* ルータインデックス    */
     135        uint8_t                 prefix_index;   /* プレフィックスインデックス        */
     136        uint8_t                 na_icount;      /* 重複アドレス検出 (DAD) 通知の入力回数       */
     137        uint8_t                 ns_icount;      /* 重複アドレス検出 (DAD) 要請の入力回数       */
     138        uint8_t                 ns_ocount;      /* 重複アドレス検出 (DAD) 要請の出力回数       */
    153139        } __attribute__((packed, aligned(2)))T_IN6_IFADDR;
    154140
    155141/*
    156  *  アドレス状æ
    157 ‹ãƒ•ãƒ©ã‚°
    158  */
    159 
    160 #define IN6_IFF_ANYCAST         UINT_C(0x01)    /* エニーキャスト        */
    161 #define IN6_IFF_DEFINED         UINT_C(0x02)    /* 定義済み         */
    162 #define IN6_IFF_TENTATIVE       UINT_C(0x04)    /* 重複検出中              */
    163 #define IN6_IFF_DUPLICATED      UINT_C(0x08)    /* 重複を検出した        */
    164 #define IN6_IFF_DEPRECATED      UINT_C(0x10)    /* 非推奨            */
    165 #define IN6_IFF_NODAD           UINT_C(0x20)    /* 重複検出不要           */
    166 #define IN6_IFF_AUTOCONF        UINT_C(0x40)    /* 自動設定された        */
    167 #define IN6_IFF_DETACHED        UINT_C(0x80)    /* 非使用            */
    168 
    169 /*
    170  *  アドレスの有効性チェック
     142 *  アドレス状態フラグ
     143 */
     144
     145#define IN6_IFF_ANYCAST         UINT_C(0x01)    /* エニーキャスト      */
     146#define IN6_IFF_DEFINED         UINT_C(0x02)    /* 定義済み         */
     147#define IN6_IFF_TENTATIVE       UINT_C(0x04)    /* 重複検出中                */
     148#define IN6_IFF_DUPLICATED      UINT_C(0x08)    /* 重複を検出した      */
     149#define IN6_IFF_DEPRECATED      UINT_C(0x10)    /* 非推奨          */
     150#define IN6_IFF_NODAD           UINT_C(0x20)    /* 重複検出不要               */
     151#define IN6_IFF_AUTOCONF        UINT_C(0x40)    /* 自動設定された      */
     152#define IN6_IFF_DETACHED        UINT_C(0x80)    /* 非使用          */
     153
     154/*
     155 *  アドレスの有効性チェック
    171156 */
    172157
     
    183168
    184169/*
    185  *  ルータのインデックス
     170 *  ルータのインデックス
    186171 */
    187172
     
    189174
    190175/*
    191  *  制限値
    192  */
    193 
    194 #define IP6_HDR_NEST_LIMIT      50      /* IPv6 ヘッダのネスト制限値  */
    195 
    196 /*
    197  *  アドレスæƒ
    198 å ±é
    199 åˆ—のインデックス
     176 *  制限値
     177 */
     178
     179#define IP6_HDR_NEST_LIMIT      50      /* IPv6 ヘッダのネスト制限値      */
     180
     181/*
     182 *  アドレス情報配列のインデックス
    200183 */
    201184
     
    204187
    205188/*
    206  *  IPv6 マルチキャストアドレスé
    207 åˆ—のインデックス
    208  */
    209 
    210 #define IPV6_MADDR_IX_SOL_NODE          0       /* 要請マルチキャスト・アドレス                   */
    211 #define IPV6_MADDR_IX_LL_ALL_NODE       1       /* å
    212 ¨ãƒŽãƒ¼ãƒ‰ãƒ»ãƒªãƒ³ã‚¯ãƒ­ãƒ¼ã‚«ãƒ«ãƒ»ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹  */
     189 *  IPv6 マルチキャストアドレス配列のインデックス
     190 */
     191
     192#define IPV6_MADDR_IX_SOL_NODE          0       /* 要請マルチキャスト・アドレス                       */
     193#define IPV6_MADDR_IX_LL_ALL_NODE       1       /* 全ノード・リンクローカル・マルチキャストアドレス     */
    213194#define IPV6_MADDR_IX_EXTRA             2
    214195
    215196#define MAX_IN6_MADDR_CNT               MAX_IF_MADDR_CNT
    216                                                 /* IPv6 マルチキャストアドレスé
    217 åˆ—の最大サイズ  */
    218 
    219 /*
    220  *  ルーティングの制御
    221  */
    222 
    223 /* ルーティング表エントリ構造体 */
     197                                                /* IPv6 マルチキャストアドレス配列の最大サイズ     */
     198
     199/*
     200 *  ルーティングの制御
     201 */
     202
     203/* ルーティング表エントリ構造体 */
    224204
    225205typedef struct t_in6_rtentry {
    226         T_IN6_ADDR      target;         /* 目標ネットワークアドレス */
    227         T_IN6_ADDR      gateway;        /* ゲートウェイの IP アドレス        */
    228         uint32_t        expire;         /* 有効時間が切れる時刻 [s]   */
    229         uint8_t         flags;          /* フラグ                    */
    230         uint8_t         prefix_len;     /* プレフィックス長             */
     206        T_IN6_ADDR      target;         /* 目標ネットワークアドレス */
     207        T_IN6_ADDR      gateway;        /* ゲートウェイの IP アドレス      */
     208        uint32_t        expire;         /* 有効時間が切れる時刻 [s]       */
     209        uint8_t         flags;          /* フラグ                  */
     210        uint8_t         prefix_len;     /* プレフィックス長             */
    231211        } __attribute__((packed, aligned(2)))T_IN6_RTENTRY;
    232212
    233213/*
    234  *  ホストキャッシュ
    235  */
    236 
    237 /* ホストキャッシュ構造体 */
     214 *  ホストキャッシュ
     215 */
     216
     217/* ホストキャッシュ構造体 */
    238218
    239219typedef struct t_in6_hostcache_entry {
    240         T_IN6_ADDR      dst;            /* 目標ネットワークアドレス */
    241         uint32_t        expire;         /* 有効時間が切れる時刻 [s]   */
     220        T_IN6_ADDR      dst;            /* 目標ネットワークアドレス */
     221        uint32_t        expire;         /* 有効時間が切れる時刻 [s]       */
    242222        uint32_t        mtu;            /* Path MTU                     */
    243223        } __attribute__((packed, aligned(2)))T_IN6_HOSTCACHE_ENTRY;
    244224
    245 #define IN6_HOSTCACHE_EXPIRE    (60*60*SYSTIM_HZ)       /* 有効時間 */
    246 #define IN6_HOSTCACHE_PRUNE     (5*60*SYSTIM_HZ)        /* 更新間隔 */
    247 #define IN6_HOSTCACHE_INCREASE  (10*60*SYSTIM_HZ)       /* 増加する場合の保護時間    */
     225#define IN6_HOSTCACHE_EXPIRE    (60*60*SYSTIM_HZ)       /* 有効時間 */
     226#define IN6_HOSTCACHE_PRUNE     (5*60*SYSTIM_HZ)        /* 更新間隔 */
     227#define IN6_HOSTCACHE_INCREASE  (10*60*SYSTIM_HZ)       /* 増加する場合の保護時間  */
    248228
    249229#define IN6_IS_HOSTCACHE_FREE(e)        IN6_IS_ADDR_UNSPECIFIED(&((e)->dst))
     
    251231
    252232/*
    253  *  IPv4 と IPv6 をコンパイル時に選択するためのマクロ
     233 *  IPv4 と IPv6 をコンパイル時に選択するためのマクロ
    254234 */
    255235
     
    266246
    267247/*
    268  *  前方参ç
    269 §
     248 *  前方参照
    270249 */
    271250
     
    279258
    280259/*
    281  *  変数
     260 *  変数
    282261 */
    283262
     
    285264
    286265/*
    287  *  関数
     266 *  関数
    288267 */
    289268
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ip6.cfg

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/plain to text/plain;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$
     
    4533
    4634/*
    47  *  IPv6 で使用するカーネルオブジェクト
     35 *  IPv6 で使用するカーネルオブジェクト
    4836 */
    4937
    5038#ifdef SUPPORT_INET6
    5139
    52 /* 近隣キャッシュ */
     40/* 近隣キャッシュ */
    5341
    5442CRE_SEM(SEM_ND6_CACHE, { TA_TPRI, 1, 1 });
     
    5644#if NUM_ND6_DEF_RTR_ENTRY > 0
    5745
    58 /* ディフォルトルータ・リスト */
     46/* ディフォルトルータ・リスト */
    5947
    6048CRE_SEM(SEM_ND6_DEFRTRLIST, { TA_TPRI, 1, 1 });
     
    6452#ifdef IP6_CFG_FRAGMENT
    6553
    66 /* 分割ヘッダ */
     54/* 分割ヘッダ */
    6755
    6856CRE_SEM(SEM_IP6_FRAG_QUEUE, { TA_TPRI, 1, 1 });
     
    7260#if NUM_REDIRECT_ROUTE_ENTRY > 0
    7361
    74 /* ルーティング表(向け直し)*/
     62/* ルーティング表(向け直し)*/
    7563
    7664CRE_SEM(SEM_IN_ROUTING_TBL, { TA_TPRI, 1, 1 });
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ip6_input.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$
     
    158146
    159147/*
    160  *  関数
     148 *  関数
    161149 */
    162150
     
    164152
    165153/*
    166  *  上位プロトコル選択構造体
     154 *  上位プロトコル選択構造体
    167155 */
    168156
    169157typedef struct t_proto_switch {
    170         uint_t (*func)(T_NET_BUF **, uint_t *, uint_t *);       /* å
    171 ¥åŠ›é–¢æ•°              */
    172         uint_t proto;                                           /* プロトコル番号        */
     158        uint_t (*func)(T_NET_BUF **, uint_t *, uint_t *);       /* 入力関数         */
     159        uint_t proto;                                           /* プロトコル番号      */
    173160        } T_PROTO_SWITCH;
    174161
    175162static const T_PROTO_SWITCH proto_switch[] = {
    176         { esp6_input,   IPPROTO_ESP             },      /* IPv6 暗号化ヘッダ      */
    177         { ah6_input,    IPPROTO_AH              },      /* IPv6 認証ヘッダ */
    178         { frag6_input,  IPPROTO_FRAGMENT        },      /* 断片ヘッダ              */
    179         { route6_input, IPPROTO_ROUTING         },      /* 経路制御ヘッダ        */
    180         { dest6_input,  IPPROTO_DSTOPTS         },      /* IPv6 終点オプション   */
     163        { esp6_input,   IPPROTO_ESP             },      /* IPv6 暗号化ヘッダ  */
     164        { ah6_input,    IPPROTO_AH              },      /* IPv6 認証ヘッダ   */
     165        { frag6_input,  IPPROTO_FRAGMENT        },      /* 断片ヘッダ                */
     166        { route6_input, IPPROTO_ROUTING         },      /* 経路制御ヘッダ      */
     167        { dest6_input,  IPPROTO_DSTOPTS         },      /* IPv6 終点オプション */
    181168        { ip6_no_header_input,
    182                         IPPROTO_NONE            },      /* 次ヘッダ無し           */
     169                        IPPROTO_NONE            },      /* 次ヘッダ無し               */
    183170        { icmp6_input,  IPPROTO_ICMPV6          },
    184171
     
    204191
    205192/*
    206  *  get_upper_proto -- 上位プロトコル処理関数を返す。
     193 *  get_upper_proto -- 上位プロトコル処理関数を返す。
    207194 */
    208195
     
    219206
    220207/*
    221  *  ip6_no_header_input -- 次ヘッダが無しの場合のå
    222 ¥åŠ›å‡¦ç†
     208 *  ip6_no_header_input -- 次ヘッダが無しの場合の入力処理
    223209 */
    224210
     
    231217
    232218/*
    233  *  ip6_hopopts_input -- 中継点オプションå
    234 ¥åŠ›å‡¦ç†
    235  *
    236  *    本実è£
    237 ã§ã¯ã€ãƒ‘ディング以外のオプションをå
    238 ¨ã¦æœªçŸ¥ã‚ªãƒ—ションとして処理する。
    239  *
    240  *    戻り値:
    241  *
    242  *      0 以上                正常
    243  *      IP6_OPT_RET_ERR (-1)    エラー、呼出側でネットワークバッファを開放する。
    244  *      IP6_OPT_RET_REL (-2)    エラー、ネットワークバッファは開放されている。
     219 *  ip6_hopopts_input -- 中継点オプション入力処理
     220 *
     221 *    本実装では、パディング以外のオプションを全て未知オプションとして処理する。
     222 *
     223 *    戻り値:
     224 *
     225 *      0 以上            正常
     226 *      IP6_OPT_RET_ERR (-1)    エラー、呼出側でネットワークバッファを開放する。
     227 *      IP6_OPT_RET_REL (-2)    エラー、ネットワークバッファは開放されている。
    245228 */
    246229
     
    290273
    291274/*
    292  *  ip6_get_prev_hdr -- 直前の拡張ヘッダの next フィールドのアドレスを返す。
    293  *
    294  *    注意: off には IF_HDR_SIZE も含まれている。
     275 *  ip6_get_prev_hdr -- 直前の拡張ヘッダの next フィールドのアドレスを返す。
     276 *
     277 *    注意: off には IF_HDR_SIZE も含まれている。
    295278 */
    296279
     
    336319
    337320/*
    338  *  ip6_init -- IPv6 の初期化関数
     321 *  ip6_init -- IPv6 の初期化関数
    339322 */
    340323
     
    347330
    348331/*
    349  *  ip6_input -- IPv6 のå
    350 ¥åŠ›é–¢æ•°
     332 *  ip6_input -- IPv6 の入力関数
    351333 */
    352334
     
    365347        NET_COUNT_MIB(in6_ifstat.ipv6IfStatsInReceives, 1);
    366348
    367         /* IP ヘッダの長さをチェックする。*/
     349        /* IP ヘッダの長さをチェックする。*/
    368350        if (input->len < IF_IP6_HDR_SIZE) {
    369351                NET_COUNT_IP6(net_count_ip6[NC_IP6_IN_ERR_SHORT], 1);
     
    374356        ip6h = GET_IP6_HDR(input);
    375357
    376         /* バージョンをチェックする。*/
     358        /* バージョンをチェックする。*/
    377359        if (IP6_VCF_V(ntohl(ip6h->vcf)) != IPV6_VERSION) {
    378360                NET_COUNT_IP6(net_count_ip6[NC_IP6_IN_ERR_VER], 1);
     
    382364
    383365        /*
    384          *  次のデータグラムは破棄する。
     366         *  次のデータグラムは破棄する。
    385367         *
    386          *    ・始点アドレスがマルチキャスト
    387          *    ・終点アドレスが未定義
     368         *    ・始点アドレスがマルチキャスト
     369         *    ・終点アドレスが未定義
    388370         *
    389          *  ネットワークインタフェースがループバックでないとき、
    390          *  次のデータグラムも破棄する。
     371         *  ネットワークインタフェースがループバックでないとき、
     372         *  次のデータグラムも破棄する。
    391373         *
    392          *    ・始点アドレスがループバック
    393          *    ・終点アドレスがループバック
     374         *    ・始点アドレスがループバック
     375         *    ・終点アドレスがループバック
    394376         *
    395          *  悪意のあるユーザが TCP/UDP スタックの混乱や
    396          *  セキュリティチェックをバイパスするため、IPv4
    397          *  マップアドレスを悪用することを防ぐため
    398          *  以下のデータグラムは破棄する。 
     377         *  悪意のあるユーザが TCP/UDP スタックの混乱や
     378         *  セキュリティチェックをバイパスするため、IPv4
     379         *  マップアドレスを悪用することを防ぐため
     380         *  以下のデータグラムは破棄する。 
    399381         *
    400          *    ・始点アドレスが ::ffff:127.0.0.1
    401          *    ・終点アドレスが ::ffff:127.0.0.1
     382         *    ・始点アドレスが ::ffff:127.0.0.1
     383         *    ・終点アドレスが ::ffff:127.0.0.1
    402384         */
    403385
     
    432414
    433415        if (IN6_IS_ADDR_MULTICAST(&ip6h->dst)) {
    434                 /* 宛å
    435 ˆãŒãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã®å ´åˆã®å‡¦ç† */
     416                /* 宛先がマルチキャストの場合の処理 */
    436417                NET_COUNT_MIB(in6_ifstat.ipv6IfStatsInMcastPkts, 1);
    437418                if (!in6_lookup_multi(ifp, &ip6h->dst)) {
     
    448429                        }
    449430
    450                 /*  アドレスが未解決の場合はデータグラムを破棄する。*/
     431                /*  アドレスが未解決の場合はデータグラムを破棄する。*/
    451432                if (IFA6_IS_NOTREADY(ia6)) {
    452433                        NET_COUNT_IP6(net_count_ip6[NC_IP6_IN_ERR_ADDR], 1);
     
    456437                }
    457438
    458         /* オフセットを設定する。*/
     439        /* オフセットを設定する。*/
    459440        offp  = GET_IP6_NEXT_HDR(input) - input->buf;
    460441
    461         /* ペイロード長を取り出す。*/
     442        /* ペイロード長を取り出す。*/
    462443        plen = ntohs(ip6h->plen);
    463444
    464445
    465         /* 次ヘッダの位置を初期化する。*/
     446        /* 次ヘッダの位置を初期化する。*/
    466447        nextp = offsetof(T_IP6_HDR, next);
    467448
    468449        /*
    469          *  中継点 (Hop-by-Hop) オプションヘッダのチェック
     450         *  中継点 (Hop-by-Hop) オプションヘッダのチェック
    470451         */
    471452        if (ip6h->next == IPPROTO_HOPOPTS) {
    472453
    473                 /* 中継点ヘッダの長さをチェックする。*/
     454                /* 中継点ヘッダの長さをチェックする。*/
    474455                if (plen < sizeof(T_IP6_HBH_HDR)) {
    475456                        NET_COUNT_IP6(net_count_ip6[NC_IP6_IN_ERR_SHORT], 1);
     
    492473
    493474                /*
    494                  *  ペイロード長が 0 で、中継点オプションがあるときは、
    495                  *  巨大ペイロード・オプションが含まれなければならない。
    496                  *  このとき、巨大ペイロード・オプションにある
    497                  *  ペイロード長をチェックするå¿
    498 è¦ãŒã‚るが、本実è£
    499 ã§ã¯ã€
    500                  *  巨大ペイロード・オプションを未知のオプションとして
    501                  *  扱うので、何もしない。
     475                 *  ペイロード長が 0 で、中継点オプションがあるときは、
     476                 *  巨大ペイロード・オプションが含まれなければならない。
     477                 *  このとき、巨大ペイロード・オプションにある
     478                 *  ペイロード長をチェックする必要があるが、本実装では、
     479                 *  巨大ペイロード・オプションを未知のオプションとして
     480                 *  扱うので、何もしない。
    502481                 */
    503482                next = ((T_IP6_HBH_HDR *)(ip6h + 1))->next;
     
    506485                next = ip6h->next;
    507486
    508         /* IPv6 データグラム長をチェックする。*/
     487        /* IPv6 データグラム長をチェックする。*/
    509488        if (input->len - IF_IP6_HDR_SIZE < plen) {
    510489                NET_COUNT_IP6(net_count_ip6[NC_IP6_IN_ERR_SHORT], 1);
     
    515494                input->len = IF_IP6_HDR_SIZE + plen;
    516495
    517         /* 上位プロトコル処理関数を呼び出す。*/
     496        /* 上位プロトコル処理関数を呼び出す。*/
    518497        nest = 0;
    519498        while (next != IPPROTO_DONE) {
     
    528507                        NET_COUNT_MIB(in6_ifstat.ipv6IfStatsInUnknownProtos, 1);
    529508
    530                         /* icmp6_error でネットワークバッファを開放する。*/
     509                        /* icmp6_error でネットワークバッファを開放する。*/
    531510                        icmp6_error(input, ICMP6_PARAM_PROB,
    532511                                           ICMP6_PARAMPROB_NEXT_HEADER, nextp);
     
    545524
    546525/*
    547  *  ip6_nexthdr -- 次のヘッダのオフセットを返す。
    548  *
    549  *    戻り値 == -1 : 最後のヘッダ、またはエラー。
    550  *    戻り値 >   0 : さらにヘッダが続く。
     526 *  ip6_nexthdr -- 次のヘッダのオフセットを返す。
     527 *
     528 *    戻り値 == -1 : 最後のヘッダ、またはエラー。
     529 *    戻り値 >   0 : さらにヘッダが続く。
    551530 */
    552531
     
    566545                break;
    567546
    568         case IPPROTO_FRAGMENT:                  /* 断片ヘッダ */
     547        case IPPROTO_FRAGMENT:                  /* 断片ヘッダ */
    569548                if (nbuf->len < off + sizeof(T_IP6_FRAG_HDR))
    570549                        return (ER_UINT)-1;
    571550
    572                 /* 中間のフラグメントの場合は処理をやめる。*/
     551                /* 中間のフラグメントの場合は処理をやめる。*/
    573552                ip6fh = (T_IP6_FRAG_HDR *)(nbuf->buf + off);
    574553                if (ntohs(ip6fh->off_flag) & IP6F_MORE_FRAG)
     
    579558                break;
    580559
    581         case IPPROTO_AH:                /* IPv6 認証ヘッダ                 */
    582         case IPPROTO_HOPOPTS:           /* IPv6 中継点 (Hop-by-Hop) オプション  */
    583         case IPPROTO_ROUTING:           /* 経路制御ヘッダ                        */
    584         case IPPROTO_DSTOPTS:           /* IPv6 終点オプション                   */
     560        case IPPROTO_AH:                /* IPv6 認証ヘッダ                   */
     561        case IPPROTO_HOPOPTS:           /* IPv6 中継点 (Hop-by-Hop) オプション  */
     562        case IPPROTO_ROUTING:           /* 経路制御ヘッダ                      */
     563        case IPPROTO_DSTOPTS:           /* IPv6 終点オプション                 */
    585564                if (nbuf->len < off + sizeof(T_IP6_EXT_HDR))
    586565                        return (ER_UINT)-1;
     
    599578
    600579/*
    601  *  ip6_lasthdr -- 最後のヘッダのオフセットを返す。
     580 *  ip6_lasthdr -- 最後のヘッダのオフセットを返す。
    602581 */
    603582
     
    618597
    619598/*
    620  *  ip6_unknown_opt -- 未知のオプションの処理
    621  *
    622  *    戻り値:
    623  *
    624  *      0 以上                        正常、オプション長。
    625  *      IP6_OPT_RET_ERR (-1)    エラー、呼出側でネットワークバッファを開放する。
    626  *      IP6_OPT_RET_REL (-2)    エラー、ネットワークバッファは開放されている。
     599 *  ip6_unknown_opt -- 未知のオプションの処理
     600 *
     601 *    戻り値:
     602 *
     603 *      0 以上                    正常、オプション長。
     604 *      IP6_OPT_RET_ERR (-1)    エラー、呼出側でネットワークバッファを開放する。
     605 *      IP6_OPT_RET_REL (-2)    エラー、ネットワークバッファは開放されている。
    627606 */
    628607
     
    631610{
    632611        switch (IP6OPT_TYPE(*opt)) {
    633         case IP6OPT_TYPE_SKIP:          /* 無視する。                      */
     612        case IP6OPT_TYPE_SKIP:          /* 無視する。                        */
    634613                return *(opt + 1);
    635614                break;
    636         case IP6OPT_TYPE_ICMP:          /* 破棄して、マルチキャストでなければ ICMP を返送する。  */
     615        case IP6OPT_TYPE_ICMP:          /* 破棄して、マルチキャストでなければ ICMP を返送する。        */
    637616                if (IN6_IS_ADDR_MULTICAST(&GET_IP6_HDR(input)->dst))
    638617                        return IP6_OPT_RET_ERR;
    639618                /* no break; */
    640         case IP6OPT_TYPE_FORCEICMP:     /* 破棄して、ICMP を返送する。       */
     619        case IP6OPT_TYPE_FORCEICMP:     /* 破棄して、ICMP を返送する。     */
    641620                icmp6_error(input, ICMP6_PARAM_PROB,
    642621                                   ICMP6_PARAMPROB_OPTION,
     
    644623                return IP6_OPT_RET_REL;
    645624                break;
    646         /*case IP6OPT_TYPE_DISCARD:     ãƒ‡ãƒ¼ã‚¿ã‚°ãƒ©ãƒ ã‚’破棄する。    */
     625        /*case IP6OPT_TYPE_DISCARD:     データグラムを破棄する。    */
    647626                }
    648627
     
    651630
    652631/*
    653  *  ip6_remove_exthdrs -- IPv6 拡張ヘッダを削除し、以降を前に詰める。
     632 *  ip6_remove_exthdrs -- IPv6 拡張ヘッダを削除し、以降を前に詰める。
    654633 */
    655634
     
    660639        uint_t  next;
    661640
    662         /* 開始オフセットを IP ヘッダに設定する。*/
     641        /* 開始オフセットを IP ヘッダに設定する。*/
    663642        off = ((uint8_t *)GET_IP_HDR(nbuf)) - nbuf->buf;
    664643
    665         /* 最終ヘッダを探索する。*/
     644        /* 最終ヘッダを探索する。*/
    666645        off = ip6_lasthdr(nbuf, off, IPPROTO_IPV6, &next);
    667646
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ip6_output.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$
     
    153141
    154142/*
    155  *  å
    156 ¨åŸŸå¤‰æ•°
    157  */
    158 
    159 /* リンク MTU */
     143 *  全域変数
     144 */
     145
     146/* リンク MTU */
    160147
    161148uint32_t        linkmtu = IF_MTU;
    162149
    163150/*
    164  *  局所変数
     151 *  局所変数
    165152 */
    166153
     
    172159
    173160/*
    174  *  ip6_output -- IPv6 の出力関数
     161 *  ip6_output -- IPv6 の出力関数
    175162 */
    176163
     
    203190
    204191        /*
    205          *  重複アドレス検出要請以外には、送信å
    206 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã«
    207          *  無指定を指定できない。
     192         *  重複アドレス検出要請以外には、送信元アドレスに
     193         *  無指定を指定できない。
    208194         */
    209195        if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src) && (flags & IPV6_OUT_FLG_DAD) == 0) {
     
    212198                }
    213199
    214         /* 送信å
    215 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã¯ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’指定できない。*/
     200        /* 送信元アドレスにはマルチキャストアドレスを指定できない。*/
    216201        if (IN6_IS_ADDR_MULTICAST(&ip6h->src)) {
    217202                error = E_PAR;
     
    220205
    221206        /*
    222          *  経路選択を行う。
     207         *  経路選択を行う。
    223208         */
    224209        if ((gw = in6_rtalloc(ifp, &ip6h->dst)) == NULL) {
     
    228213
    229214        if (!IN6_IS_ADDR_MULTICAST(&ip6h->dst)) {
    230                 /* ユニキャストアドレスの処理 */
     215                /* ユニキャストアドレスの処理 */
    231216                }
    232217        else {
    233                 /* マルチキャストアドレスの処理 */
     218                /* マルチキャストアドレスの処理 */
    234219                NET_COUNT_MIB(in6_ifstat.ipv6IfStatsOutMcastPkts, 1);
    235220                if (flags & IPV6_OUT_FLG_HOP_LIMIT)
     
    239224                }
    240225
    241         /* Traffic Class と Flow Label をサポートしないので 0 に設定する。*/
     226        /* Traffic Class と Flow Label をサポートしないので 0 に設定する。*/
    242227        ip6h->vcf = htonl(IP6_MAKE_VCF(IPV6_VERSION, 0));
    243228
     
    252237
    253238                /*
    254                  *  Path MTU が登録されている場合、
    255                  *  MTU が IPv6 MMTU(1280 オクテット)以下の場合は、
    256                  *  MTU を IPv6 MMTU に設定し分割して送信する。
     239                 *  Path MTU が登録されている場合、
     240                 *  MTU が IPv6 MMTU(1280 オクテット)以下の場合は、
     241                 *  MTU を IPv6 MMTU に設定し分割して送信する。
    257242                 */
    258243                mtu = IPV6_MMTU;
     
    271256        if (plen + IP6_HDR_SIZE <= mtu && !alwaysfrag) {
    272257
    273                 /* 分割するå¿
    274 è¦ãŒãªã„ときの処理 */
     258                /* 分割する必要がないときの処理 */
    275259                if ((error = nd6_output(ifp, output, gw, NULL, tmout)) != E_OK) {
    276260                        NET_COUNT_IP6(net_count_ip6[NC_IP6_OUT_ERR_PACKETS], 1);
     
    280264        else {
    281265
    282                 /* 断片 ID を設定する。*/
     266                /* 断片 ID を設定する。*/
    283267                id = ip6_id ++;
    284268
    285                 /* MTU が IPv6 の最大パケットサイズをè¶
    286 ãˆãªã„ようにする。*/
     269                /* MTU が IPv6 の最大パケットサイズを超えないようにする。*/
    287270                if (mtu > IPV6_MAXPACKET)
    288271                        mtu = IPV6_MAXPACKET;
    289272
    290273                /*
    291                  *  MTU から、分割不能部分(TINET-1.4 では、分割ヘッダ以外の
    292                  *  拡張ヘッダの出力は未実è£
    293 ã®ãŸã‚ 0 オクテット)
    294                  *  と断片ヘッダのサイズを引いたとき、8 オクテット以上なければ
    295                  *  分割して送信できないためエラーにする。
     274                 *  MTU から、分割不能部分(TINET-1.4 では、分割ヘッダ以外の
     275                 *  拡張ヘッダの出力は未実装のため 0 オクテット)
     276                 *  と断片ヘッダのサイズを引いたとき、8 オクテット以上なければ
     277                 *  分割して送信できないためエラーにする。
    296278                 */
    297279                if (((mtu - sizeof(T_IP6_FRAG_HDR)) & ~7) < 8) {
     
    301283
    302284                /*
    303                  *  IPv6 ヘッダの next フィールドに設定する値は、断片ヘッダ。
    304                  *  断片ヘッダの  next フィールドに設定する値は、
    305                  *  å
    306 ƒã®ãƒ‡ãƒ¼ã‚¿ã‚°ãƒ©ãƒ ã® next フィールドの値。
     285                 *  IPv6 ヘッダの next フィールドに設定する値は、断片ヘッダ。
     286                 *  断片ヘッダの  next フィールドに設定する値は、
     287                 *  元のデータグラムの next フィールドの値。
    307288                 */
    308289                nextproto  = ip6h->next;
    309290                ip6h->next = IPPROTO_FRAGMENT;
    310291
    311                 /* 分割して送信する。*/
     292                /* 分割して送信する。*/
    312293                NET_COUNT_IP6(net_count_ip6[NC_IP6_FRAG_OUT], 1);
    313294                for (foff = 0; foff < plen; foff += flen) {
    314295
    315                         /* 断片の長さを計算し、8 オクテット境界に調整する。*/
     296                        /* 断片の長さを計算し、8 オクテット境界に調整する。*/
    316297                        if (foff + (mtu - (IP6_HDR_SIZE + sizeof(T_IP6_FRAG_HDR))) < plen)
    317298                                flen = (mtu - (IP6_HDR_SIZE + sizeof(T_IP6_FRAG_HDR))) >> 3 << 3;
     
    319300                                flen = plen - foff;
    320301
    321                         /* ネットワークバッファを獲得する。*/
     302                        /* ネットワークバッファを獲得する。*/
    322303                        if (tget_net_buf(&frag, flen + IF_IP6_HDR_SIZE + sizeof(T_IP6_FRAG_HDR), TMO_IP6_FRAG_GET_NET_BUF) == E_OK) {
    323304
    324                                 /* IPv6 ヘッダをコピーする。*/
     305                                /* IPv6 ヘッダをコピーする。*/
    325306                                fip6h = GET_IP6_HDR(frag);
    326307                                *fip6h = *ip6h;
    327308
    328                                 /* IPv6 ヘッダを埋める。*/
     309                                /* IPv6 ヘッダを埋める。*/
    329310                                fip6h->plen     = htons(flen + sizeof(T_IP6_FRAG_HDR));
    330311
    331                                 /* 断片ヘッダを埋める。*/
     312                                /* 断片ヘッダを埋める。*/
    332313                                fip6f = (T_IP6_FRAG_HDR *)GET_IP6_NEXT_HDR(frag);
    333314                                fip6f->off_flag = htons((uint16_t)(foff & ~7));
     
    338319                                fip6f->next     = nextproto;
    339320
    340                                 /* SDU をコピーする。*/
     321                                /* SDU をコピーする。*/
    341322                                memcpy((uint8_t*)(fip6f + 1), GET_IP6_NEXT_HDR(output) + foff, flen);
    342323                                NET_COUNT_IP6(net_count_ip6[NC_IP6_FRAG_OUT_FRAGS], 1);
    343324                                NET_COUNT_MIB(in6_ifstat.ipv6IfStatsOutFragCreates, 1);
    344325
    345                                 /* 送信する。*/
     326                                /* 送信する。*/
    346327                                if ((error = nd6_output(ifp, frag, gw, NULL, tmout)) != E_OK) {
    347328                                        NET_COUNT_MIB(in6_ifstat.ipv6IfStatsOutFragFails, 1);
     
    350331                                }
    351332                        else {
    352                                 /* ネットワークバッファが獲得できなければ、送信をあきらめる。*/
     333                                /* ネットワークバッファが獲得できなければ、送信をあきらめる。*/
    353334                                error = E_NOMEM;
    354335                                goto drop;
     
    356337                        }
    357338
    358                 /* IF でネットワークバッファを開放しないフラグをチェックする。*/
     339                /* IF でネットワークバッファを開放しないフラグをチェックする。*/
    359340                if ((output->flags & NB_FLG_NOREL_IFOUT) == 0) {
    360341                        syscall(rel_net_buf(output));
     
    378359
    379360drop:
    380         /* IF でネットワークバッファを開放しないフラグをチェックする。*/
     361        /* IF でネットワークバッファを開放しないフラグをチェックする。*/
    381362        if ((output->flags & NB_FLG_NOREL_IFOUT) == 0) {
    382363                syscall(rel_net_buf(output));
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ip6_var.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;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$
     
    117105
    118106/*
    119  *  IPv6 ヘッダ・ペイロードアクセスマクロ
     107 *  IPv6 ヘッダ・ペイロードアクセスマクロ
    120108 */
    121109
     
    132120#define SET_IP6_SDU_SIZE(iph,slen)      ((iph)->plen=htons(slen))
    133121
    134 /* ip6_output のフラグ */
    135 
    136 #define IPV6_OUT_FLG_DAD                0x0100  /* 重複アドレス検出     */
    137 #define IPV6_OUT_FLG_HOP_LIMIT          0x0200  /* ホップリミット指定  */
    138 
    139 /* ホップリミットフラグが付く時、ホップリミット値を操作するマクロ */
     122/* ip6_output のフラグ */
     123
     124#define IPV6_OUT_FLG_DAD                0x0100  /* 重複アドレス検出     */
     125#define IPV6_OUT_FLG_HOP_LIMIT          0x0200  /* ホップリミット指定    */
     126
     127/* ホップリミットフラグが付く時、ホップリミット値を操作するマクロ */
    140128
    141129#define IPV6_OUT_GET_HOP_LIMIT(f)       ((f)&0x00ff)
     
    143131
    144132/*
    145  *  ip6_unknown_opt -- 未知のオプションの処理
    146  *
    147  *    戻り値:
    148  *
    149  *      0 以上                        正常、オプション長。
    150  *      IP6_OPT_RET_ERR (-1)    エラー、呼出側でネットワークバッファを開放する。
    151  *      IP6_OPT_RET_REL (-2)    エラー、ネットワークバッファは開放されている。
     133 *  ip6_unknown_opt -- 未知のオプションの処理
     134 *
     135 *    戻り値:
     136 *
     137 *      0 以上                    正常、オプション長。
     138 *      IP6_OPT_RET_ERR (-1)    エラー、呼出側でネットワークバッファを開放する。
     139 *      IP6_OPT_RET_REL (-2)    エラー、ネットワークバッファは開放されている。
    152140 */
    153141
     
    156144
    157145/*
    158  *  IPv4 と IPv6 をコンパイル時に選択するためのマクロ
     146 *  IPv4 と IPv6 をコンパイル時に選択するためのマクロ
    159147 */
    160148
     
    177165
    178166/*
    179  *  IPv6 の MMTU サイズのネットワークバッファ
     167 *  IPv6 の MMTU サイズのネットワークバッファ
    180168 */
    181169
    182170typedef struct t_net_buf_ipv6_mmtu {
    183         uint16_t        len;    /* データの長さ           */
    184         uint8_t         idix;   /* mpfid のインデックス  */
    185         uint8_t         unit;   /* インタフェース番号  */
     171        uint16_t        len;    /* データの長さ               */
     172        uint8_t         idix;   /* mpfid のインデックス        */
     173        uint8_t         unit;   /* インタフェース番号    */
    186174#ifdef IF_ETHER_NIC_NET_BUF_ALIGN
    187175        uint8_t         nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
     
    191179#endif
    192180        uint8_t         buf[IF_HDR_SIZE + IPV6_MMTU];
    193                                 /* バッファ本体           */
     181                                /* バッファ本体               */
    194182        } T_NET_BUF_IPV6_MMTU;
    195183
    196184/*
    197  *  65536 オクテットサイズのネットワークバッファ
     185 *  65536 オクテットサイズのネットワークバッファ
    198186 */
    199187
    200188typedef struct t_net_buf6_65536 {
    201         uint16_t        len;    /* データの長さ           */
    202         uint8_t         idix;   /* mpfid のインデックス  */
    203         uint8_t         flags;  /* フラグ            */
     189        uint16_t        len;    /* データの長さ               */
     190        uint8_t         idix;   /* mpfid のインデックス        */
     191        uint8_t         flags;  /* フラグ          */
    204192#ifdef IF_ETHER_NIC_NET_BUF_ALIGN
    205193        uint8_t         nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
     
    209197#endif
    210198        uint8_t         buf[IF_IP6_HDR_SIZE + 65536];
    211                                 /* バッファ本体           */
     199                                /* バッファ本体               */
    212200#if defined(IF_PDU_HDR_PADDING)
    213201        uint8_t         padding[IF_PDU_HDR_PADDING];
    214 #endif                          /* ヘッダの余分           */
     202#endif                          /* ヘッダの余分               */
    215203        } T_NET_BUF6_65536;
    216204
     
    218206
    219207/*
    220  *  再構成キュー用 IPv6 ヘッダの定義
     208 *  再構成キュー用 IPv6 ヘッダの定義
    221209 */
    222210
     
    229217        uint8_t         hlim;           /* Hop Limit                            */
    230218        T_IN6_ADDR      src;            /* Source Address                       */
    231         T_NET_BUF       *next_frag;     /* 次の IPv6 フラグメント       */
    232         uint16_t        foff;           /* 断片ヘッダのオフセット            */
    233         uint16_t        flen;           /* 断片長                            */
    234         uint16_t        ftim;           /* 再構成タイムアウト                  */
     219        T_NET_BUF       *next_frag;     /* 次の IPv6 フラグメント       */
     220        uint16_t        foff;           /* 断片ヘッダのオフセット          */
     221        uint16_t        flen;           /* 断片長                          */
     222        uint16_t        ftim;           /* 再構成タイムアウト                    */
    235223        uint16_t        dummy1;
    236224        uint8_t         dummy2[sizeof(T_IN6_ADDR) - (sizeof(T_NET_BUF*) + sizeof(uint16_t) * 4)];
     
    247235
    248236/*
    249  *  データグラム再構成用ネットワークバッファ
     237 *  データグラム再構成用ネットワークバッファ
    250238 */
    251239
    252240typedef struct t_net_buf6_reassm {
    253         uint16_t        len;    /* データの長さ           */
    254         uint8_t         idix;   /* mpfid のインデックス  */
    255         uint8_t         flags;  /* フラグ            */
     241        uint16_t        len;    /* データの長さ               */
     242        uint8_t         idix;   /* mpfid のインデックス        */
     243        uint8_t         flags;  /* フラグ          */
    256244#ifdef IF_ETHER_NIC_NET_BUF_ALIGN
    257245        uint8_t         nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
     
    261249#endif
    262250        uint8_t         buf[IP6_CFG_FRAG_REASSM_SIZE];
    263                                 /* バッファ本体           */
     251                                /* バッファ本体               */
    264252        } T_NET_BUF6_REASSM;
    265253
     
    267255
    268256/*
    269  *  TCP の再構成キューにおける IPv6 ヘッダの定義
     257 *  TCP の再構成キューにおける IPv6 ヘッダの定義
    270258 */
    271259
     
    274262        uint8_t cf;             /* Traffic Class:  8 bit                */
    275263                        /* Flow Label:     4 bit (20 bit)       */
    276         uint16_t thoff; /* TCP ヘッダのオフセット              */
     264        uint16_t thoff; /* TCP ヘッダのオフセット                */
    277265        uint16_t plen;  /* Payload Length                       */
    278266        uint8_t next;   /* Next Header                          */
     
    285273
    286274/*
    287  *  SNMP の 管理æƒ
    288 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     275 *  SNMP の 管理情報ベース (MIB)
    289276 */
    290277
     
    317304
    318305/*
    319  *  関数
     306 *  関数
    320307 */
    321308
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ipsec.cfg

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/plain to text/plain;charset=UTF-8
    r270 r321  
    77 *  Copyright (C) 2008-2009 by Hokkaido Industrial Research Institute, JAPAN
    88 *
    9  *  上記著作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    11  *  によってå
    12 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    13  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    14  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    16  *  利用と呼ぶ)することを無償で許諾する.
    17  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    18  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    19  *      スコード中に含まれていること.
    20  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    21  *      用できる形で再é
    22 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    23 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    24  *      è€
    25 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    26  *      の無保証規定を掲載すること.
    27  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    28  *      用できない形で再é
    29 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    35  *      害からも,上記著作権è€
    36 ãŠã‚ˆã³TOPPERSプロジェクトをå
    37 è²¬ã™ã‚‹ã“と.
     9 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     10 *  によって公表されている GNU General Public License の Version 2 に記
     11 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     12 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     13 *  利用と呼ぶ)することを無償で許諾する.
     14 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     15 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     16 *      スコード中に含まれていること.
     17 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     18 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     19 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     20 *      の無保証規定を掲載すること.
     21 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     22 *      用できない形で再配布する場合には,次の条件を満たすこと.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3827 *
    39  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    40 ãŠ
    41  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    42  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    43  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     28 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     29 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     30 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     31 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4432 *
    4533 *  @(#) $Id$
     
    4735
    4836/*
    49  *  IPsec で使用するカーネルオブジェクト
     37 *  IPsec で使用するカーネルオブジェクト
    5038 */
    5139
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/nd6.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$
     
    132120
    133121/*
    134  *  近隣キャッシュ
     122 *  近隣キャッシュ
    135123 */
    136124
     
    138126
    139127/*
    140  *  nd6_free -- ルータを削除する。
     128 *  nd6_free -- ルータを削除する。
    141129 */
    142130
     
    150138                ln->state = ND6_LLINFO_INCOMPLETE;
    151139
    152                 /* プレフィックス・リストからルータを削除する。*/
     140                /* プレフィックス・リストからルータを削除する。*/
    153141                nd6_defrtrlist_del(dr);
    154142                }
     
    156144
    157145/*
    158  *  nd6_timer -- 近隣探索管理タイマー
     146 *  nd6_timer -- 近隣探索管理タイマー
    159147 */
    160148
     
    167155        int_t           ix;
    168156
    169         /* 近隣キャッシュの処理 */
     157        /* 近隣キャッシュの処理 */
    170158        syscall(wai_sem(SEM_ND6_CACHE));
    171159        syscall(get_tim(&now));
     
    177165                        switch (ln->state) {
    178166
    179                         case ND6_LLINFO_INCOMPLETE:     /* 未解決            */
     167                        case ND6_LLINFO_INCOMPLETE:     /* 未解決          */
    180168                                if (ln->asked < ND6_MAX_MCAST_QUERY) {
    181169                                        /*
    182                                          *  マルチキャストアドレス要請の再送回数以下の場合の処理
     170                                         *  マルチキャストアドレス要請の再送回数以下の場合の処理
    183171                                         */
    184172                                        ln->asked ++;
    185                                         ln->expire = now + ND6_RETRANS_TIME;    /* 近隣探索送信間隔 */
     173                                        ln->expire = now + ND6_RETRANS_TIME;    /* 近隣探索送信間隔 */
    186174                                        nd6_ns_output(ifp, &in6_addr_unspecified, &ln->addr, ln, false);
    187175                                        }
     
    189177                                        if (ln->hold != NULL) {
    190178                                                /*
    191                                                  *  最終的には、保留されているネットワークバッファが
    192                                                  *  あれば、ICMP6 ERROR を自分自身に返したあと、
    193                                                  *  ネットワークバッファを開放する。
    194                                                  *  しかし、現在、icmp6_error の実è£
    195 ãŒä¸å®Œå
    196 ¨ã®ãŸã‚ã€
    197                                                  *  ネットワークバッファの開放のみ行う。
     179                                                 *  最終的には、保留されているネットワークバッファが
     180                                                 *  あれば、ICMP6 ERROR を自分自身に返したあと、
     181                                                 *  ネットワークバッファを開放する。
     182                                                 *  しかし、現在、icmp6_error の実装が不完全のため、
     183                                                 *  ネットワークバッファの開放のみ行う。
    198184                                                 */
    199 #if 0   /* 保留 */
     185#if 0   /* 保留 */
    200186                                                icmp6_error(ln->hold, ICMP6_DST_UNREACH,
    201187                                                                      ICMP6_DST_UNREACH_ADDR, 0);
     
    209195                                break;
    210196
    211                         case ND6_LLINFO_REACHABLE:      /* 到達可能         */
     197                        case ND6_LLINFO_REACHABLE:      /* 到達可能         */
    212198                                if (ln->expire) {
    213199                                        ln->expire = now + ND6_GCOLLECTION_TIME;
     
    216202                                break;
    217203
    218                         case ND6_LLINFO_STALE:          /* 到達可能性は未確認  */
     204                        case ND6_LLINFO_STALE:          /* 到達可能性は未確認    */
    219205                                if (ln->expire) {
    220206                                        if (ln->hold != NULL) {
     
    227213                                break;
    228214
    229                         case ND6_LLINFO_DELAY:          /* 到達可能性の確認å¾
    230 æ©Ÿ     */
     215                        case ND6_LLINFO_DELAY:          /* 到達可能性の確認待機   */
    231216                                ln->asked = 1;
    232                                 ln->expire = now + ND6_RETRANS_TIME;            /* 近隣探索送信間隔 */
     217                                ln->expire = now + ND6_RETRANS_TIME;            /* 近隣探索送信間隔 */
    233218                                ln->state = ND6_LLINFO_PROBE;
    234219                                nd6_ns_output(ifp, &ln->addr, &ln->addr, ln, false);
    235220                                break;
    236221
    237                         case ND6_LLINFO_PROBE:          /* 到達可能性を確認中  */
     222                        case ND6_LLINFO_PROBE:          /* 到達可能性を確認中    */
    238223                                if (ln->asked < ND6_MAX_UCAST_QUERY) {
    239224                                        /*
    240                                          *  ユニキャストアドレス要請の再送回数以下の場合の処理
     225                                         *  ユニキャストアドレス要請の再送回数以下の場合の処理
    241226                                         */
    242227                                        ln->asked ++;
    243                                         ln->expire += ND6_RETRANS_TIME; /* 近隣探索送信間隔 */
     228                                        ln->expire += ND6_RETRANS_TIME; /* 近隣探索送信間隔 */
    244229                                        nd6_ns_output(ifp, &ln->addr, &ln->addr, ln, false);
    245230                                        }
     
    259244        syscall(sig_sem(SEM_ND6_CACHE));
    260245
    261         /* ディフォルトルータ・リストの処理 */
     246        /* ディフォルトルータ・リストの処理 */
    262247        nd6_defrtrlist_timer();
    263248
    264         /* プレフィックス・リストの処理 */
     249        /* プレフィックス・リストの処理 */
    265250        nd6_prelist_timer();
    266251
    267         /* ネットワークインタフェースのアドレスの処理 */
     252        /* ネットワークインタフェースのアドレスの処理 */
    268253        in6_ifaddr_timer(ifp);
    269254
    270255        /*
    271          *  到達可能状æ
    272 ‹ã®æœ‰åŠ¹æ™‚間の更新
     256         *  到達可能状態の有効時間の更新
    273257         */
    274258        if ((int32_t)(nd6_recalc_reachtm_interval - now) < 0) {
     
    281265
    282266/*
    283  *  nd6_get_cache -- 近隣キャッシュを獲得する。
     267 *  nd6_get_cache -- 近隣キャッシュを獲得する。
    284268 */
    285269
     
    291275
    292276/*
    293  *  nd6_ifattach -- 近隣探索の初期設定を行う。
     277 *  nd6_ifattach -- 近隣探索の初期設定を行う。
    294278 */
    295279
     
    300284
    301285/*
    302  *  nd6_output_hold -- 近隣探索キャッシュに保留されている
    303  *                     ã‚¢ãƒ‰ãƒ¬ã‚¹è§£æ±ºå¾
    304 ã¡ã®ãƒ‡ãƒ¼ã‚¿ã‚°ãƒ©ãƒ ãŒã‚れば送信する。
    305  *
    306  *    注意: セマフォ SEM_ND6_CACHE によりロック状æ
    307 ‹ã§å‘¼å‡ºã™ã“と。
     286 *  nd6_output_hold -- 近隣探索キャッシュに保留されている
     287 *                     アドレス解決待ちのデータグラムがあれば送信する。
     288 *
     289 *    注意: セマフォ SEM_ND6_CACHE によりロック状態で呼出すこと。
    308290 */
    309291
     
    313295        SYSTIM now;
    314296
    315         /* アドレス解決å¾
    316 ã¡ã®ãƒ‡ãƒ¼ã‚¿ã‚°ãƒ©ãƒ ãŒã‚れば送信する。*/
     297        /* アドレス解決待ちのデータグラムがあれば送信する。*/
    317298        if (ln->hold) {
    318299
    319                 /* タイムアウトの処理 */
     300                /* タイムアウトの処理 */
    320301                if (ln->tmout != TMO_FEVR) {
    321302
    322303                        /*
    323                          *  タイムアウトの指定が永ä¹
    324 ã§ãªãã€æ™‚間を過ぎていれば、
    325                          *  出力しないで終了する。
     304                         *  タイムアウトの指定が永久でなく、時間を過ぎていれば、
     305                         *  出力しないで終了する。
    326306                         */
    327307                        syscall(get_tim(&now));
     
    341321
    342322/*
    343  *  nd6_lookup -- 近隣探索キャッシュを探索する。
    344  *
    345  *    注意: セマフォ SEM_ND6_CACHE によりロック状æ
    346 ‹ã§å‘¼å‡ºã™ã“と。
     323 *  nd6_lookup -- 近隣探索キャッシュを探索する。
     324 *
     325 *    注意: セマフォ SEM_ND6_CACHE によりロック状態で呼出すこと。
    347326 *
    348327 */
     
    356335        for (ix = NUM_ND6_CACHE_ENTRY; ix -- > 0; ) {
    357336                if (nd6_cache[ix].state == 0) {
    358                         /* 未使用エントリのインデックスを記録する。*/
     337                        /* 未使用エントリのインデックスを記録する。*/
    359338                        if (fix == -1)
    360339                                fix = ix;
     
    364343                        }
    365344                else if ((int32_t)(nd6_cache[ix].expire - min) < 0) {   /* nd6_cache[ix].expire < min */
    366                         /* 有効期限が最短エントリのインデックスを記録する。*/
     345                        /* 有効期限が最短エントリのインデックスを記録する。*/
    367346                        min = nd6_cache[ix].expire;
    368347                        mix = ix;
     
    387366
    388367/*
    389  *  nd6_cache_lladdr -- 近隣探索キャッシュに登録する。
     368 *  nd6_cache_lladdr -- 近隣探索キャッシュに登録する。
    390369 */
    391370
     
    399378        int_t           newstate = ND6_LLINFO_INCOMPLETE;
    400379
    401         /* アドレスが無指定なら何もしない。*/
     380        /* アドレスが無指定なら何もしない。*/
    402381        if (IN6_IS_ADDR_UNSPECIFIED(from))
    403382                return NULL;
    404383
    405         /* 近隣キャッシュに登録する。*/
     384        /* 近隣キャッシュに登録する。*/
    406385        syscall(wai_sem(SEM_ND6_CACHE));
    407386        if ((ln = nd6_lookup(from, false)) == NULL) {
     
    421400
    422401        /*
    423          *  状æ
    424 ‹é·ç§»è¡¨
     402         *  状態遷移表
    425403         *
    426404         *  nd_na_flags
    427          *  newnetry olladdr lladdr llchange 処理 (L: lladdr を登録する)
     405         *  newnetry olladdr lladdr llchange 処理 (L: lladdr を登録する)
    428406         *
    429407         *      F       F       N       -    (1)
     
    436414         */
    437415
    438         /* データリンク層のアドレスが通知されていれば更新する。*/
     416        /* データリンク層のアドレスが通知されていれば更新する。*/
    439417        if (lladdr != NULL) {
    440418                ln->ifaddr = *(T_IF_ADDR *)lladdr;
     
    458436                }
    459437
    460         /* 近隣キャッシュエントリを更新する。*/
     438        /* 近隣キャッシュエントリを更新する。*/
    461439        if (doupdate) {
    462440                ln->state = newstate;
     
    466444                        ln->expire = now + ND6_GCOLLECTION_TIME;
    467445
    468                         /* アドレス解決å¾
    469 ã¡ã®ãƒ‡ãƒ¼ã‚¿ã‚°ãƒ©ãƒ ãŒã‚れば送信する。*/
     446                        /* アドレス解決待ちのデータグラムがあれば送信する。*/
    470447                        nd6_output_hold(ifp, ln);
    471448                        }
     
    476453
    477454
    478         /* ルータ通知の処理 */
     455        /* ルータ通知の処理 */
    479456        switch (type) {
    480457
     
    506483
    507484/*
    508  *  nd6_is_addr_neighbor -- 指定されたアドレスのノードが同一リンクにあるかチェックする。
     485 *  nd6_is_addr_neighbor -- 指定されたアドレスのノードが同一リンクにあるかチェックする。
    509486 */
    510487
     
    525502
    526503/*
    527  *  nd6_output -- 近隣探索の出力関数
    528  *
    529  *    注意: セマフォ SEM_ND6_CACHE によりロック状æ
    530 ‹ã§å‘¼å‡ºã™ã“と。
     504 *  nd6_output -- 近隣探索の出力関数
     505 *
     506 *    注意: セマフォ SEM_ND6_CACHE によりロック状態で呼出すこと。
    531507 */
    532508
     
    538514
    539515        /*
    540          *  あてå
    541 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã‹ã€è¿‘隣キャッシュが
    542          *  不要の場合は直ちに送信する。
     516         *  あて先アドレスがマルチキャストか、近隣キャッシュが
     517         *  不要の場合は直ちに送信する。
    543518         */
    544519        if (!(IN6_IS_ADDR_MULTICAST(dst) || !IF_IN6_NEED_CACHE(ifp))) {
    545520                if (ln == NULL) {
    546                         /* 近隣キャッシュが未定義の場合 */
     521                        /* 近隣キャッシュが未定義の場合 */
    547522                        if (nd6_is_addr_neighbor(ifp, dst)) {
    548523                                /*
    549                                  *  指定されたアドレスのノードが同一リンクにある時は、
    550                                  *  近隣キャッシュを探索し、未定義の場合は登録する。
     524                                 *  指定されたアドレスのノードが同一リンクにある時は、
     525                                 *  近隣キャッシュを探索し、未定義の場合は登録する。
    551526                                 */
    552527                                ln = nd6_lookup(dst, true);
     
    559534
    560535                /*
    561                  *  近隣キャッシュの状æ
    562 ‹ãŒã€ãƒ‡ãƒ¼ã‚¿ãƒªãƒ³ã‚¯å±¤ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒåˆ†ã‹ã£ã¦ã„ても、
    563                  *  到達可能性が確認されていないときは、到達不能通知を開始する。
     536                 *  近隣キャッシュの状態が、データリンク層のアドレスが分かっていても、
     537                 *  到達可能性が確認されていないときは、到達不能通知を開始する。
    564538                 */
    565539                if (ln->state == ND6_LLINFO_STALE) {
     
    571545
    572546                /*
    573                  *  近隣キャッシュの状æ
    574 ‹ãŒã€ãƒ‡ãƒ¼ã‚¿ãƒªãƒ³ã‚¯å±¤ã®ã‚¢ãƒ‰ãƒ¬ã‚¹æœªè§£æ±ºã®å ´åˆã¯
    575                  *  近隣探索を行う。
     547                 *  近隣キャッシュの状態が、データリンク層のアドレス未解決の場合は
     548                 *  近隣探索を行う。
    576549                 */
    577550                if (ln->state <= ND6_LLINFO_INCOMPLETE) {
    578551
    579                         /* タイムアウトの指定がポーリングならタイムアウトで終了する。*/
     552                        /* タイムアウトの指定がポーリングならタイムアウトで終了する。*/
    580553                        if (tmout == TMO_POL) {
    581554                                error = E_TMOUT;
     
    586559                                ln->state = ND6_LLINFO_INCOMPLETE;
    587560
    588                         /* すでに、未解決のネットワークバッファがあれば、開放する。*/
     561                        /* すでに、未解決のネットワークバッファがあれば、開放する。*/
    589562                        if (ln->hold != NULL) {
    590563                                syscall(rel_net_buf(ln->hold));
     
    592565
    593566                        /*
    594                          *  送信をペンディングする。
    595                          *  IF でネットワークバッファを開放しないフラグが設定されているときは、
    596                          *  送信をペンディングしない。
     567                         *  送信をペンディングする。
     568                         *  IF でネットワークバッファを開放しないフラグが設定されているときは、
     569                         *  送信をペンディングしない。
    597570                         */
    598571                        if ((output->flags & NB_FLG_NOREL_IFOUT) == 0) {
    599572                                ln->hold = output;
    600573
    601                                 /* タイムアウトの設定 */
     574                                /* タイムアウトの設定 */
    602575                                if (tmout == TMO_FEVR)
    603576                                        ln->tmout = tmout;
     
    618591                                        if ((int32_t)(ln->expire - now) < 0) {
    619592                                                   /* ln->expire < now */
    620                                                 ln->expire += ND6_RETRANS_TIME; /* 近隣探索送信間隔 */
     593                                                ln->expire += ND6_RETRANS_TIME; /* 近隣探索送信間隔 */
    621594                                                ln->asked ++;
    622595                                                nd6_ns_output(ifp, &in6_addr_unspecified, dst, ln, false);
     
    629602
    630603        /*
    631          *  重複が検出されたインタフェースには出力しない。
     604         *  重複が検出されたインタフェースには出力しない。
    632605         */
    633606        if ((ifp->flags & ND6_IFF_IFDISABLED) != 0) {
     
    645618
    646619/*
    647  *  nd6_storelladdr -- 出力するネットワークインタフェースのアドレスを返す。
     620 *  nd6_storelladdr -- 出力するネットワークインタフェースのアドレスを返す。
    648621 */
    649622
     
    662635
    663636/*
    664  *  nd6_option -- 近隣探索オプションの処理
    665  *
    666  *    注意: オプションオフセットé
    667 åˆ—には、オフセット + 8 が設定されている。
     637 *  nd6_option -- 近隣探索オプションの処理
     638 *
     639 *    注意: オプションオフセット配列には、オフセット + 8 が設定されている。
    668640 */
    669641
     
    673645        T_ND_OPT_HDR    *opth;
    674646        ER              error = E_OK;
    675         int_t           pi_count = 0;   /* プレフィックスæƒ
    676 å ±ã®å€‹æ•° */
     647        int_t           pi_count = 0;   /* プレフィックス情報の個数 */
    677648
    678649        opth = (T_ND_OPT_HDR *)nh;
     
    681652        while (error == E_OK && ((uint8_t *)opth - (uint8_t *)nh) < (256 - 8) && len > 0) {
    682653
    683                 /* オプション長が 0 の時は、不正なオプションとして処理する。*/
     654                /* オプション長が 0 の時は、不正なオプションとして処理する。*/
    684655                if (opth->len == 0) {
    685656                        error = E_PAR;
     
    687658                        }
    688659
    689                 /* オプションのタイプにより分岐する。*/
     660                /* オプションのタイプにより分岐する。*/
    690661                switch (opth->type) {
    691                 case ND_OPT_SOURCE_LINKADDR:            /* 送信å
    692 ˆãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ */
    693                 case ND_OPT_TARGET_LINKADDR:            /* 対象ネットワークインタフェースのアドレス */
    694                 case ND_OPT_REDIRECTED_HEADER:          /* リダイレクト・ヘッダ                               */
     662                case ND_OPT_SOURCE_LINKADDR:            /* 送信先ネットワークインタフェースのアドレス        */
     663                case ND_OPT_TARGET_LINKADDR:            /* 対象ネットワークインタフェースのアドレス */
     664                case ND_OPT_REDIRECTED_HEADER:          /* リダイレクト・ヘッダ                           */
    695665                case ND_OPT_MTU:                        /* MTU                                          */
    696666                        if (opt[ND_OPT_OFF_ARRAY_IX(opth->type)]) {
    697                                 /* プレフィックスæƒ
    698 å ±ä»¥å¤–の同じオプションが複数指定されている。*/
     667                                /* プレフィックス情報以外の同じオプションが複数指定されている。*/
    699668                                error = E_PAR;
    700669                                }
     
    703672                                }
    704673                        break;
    705                 case ND_OPT_PREFIX_INFORMATION:         /* プレフィックスæƒ
    706 å ±                             */
     674                case ND_OPT_PREFIX_INFORMATION:         /* プレフィックス情報                            */
    707675                        if (!opt[ND_OPT_OFF_ARRAY_IX(ND_OPT_PREFIX_INFORMATION)]) {
    708676                                /*
    709                                  *  プレフィックスæƒ
    710 å ±ã¯æœ€åˆã«ç¾ã‚ŒãŸã‚ªãƒ•ã‚»ãƒƒãƒˆã®ã¿è¨˜éŒ²ã™ã‚‹ã€‚
     677                                 *  プレフィックス情報は最初に現れたオフセットのみ記録する。
    711678                                 */
    712679                                opt[ND_OPT_OFF_ARRAY_IX(opth->type)] = (uint8_t *)opth - (uint8_t *)nh + 8;
     
    716683                default:
    717684                        /*
    718                          *  将来定義されるプロトコルへの拡張に対応するため、
    719                          *  認識できないオプションは単に無視し、処理を続行する。
     685                         *  将来定義されるプロトコルへの拡張に対応するため、
     686                         *  認識できないオプションは単に無視し、処理を続行する。
    720687                         */
    721688                        break;
    722689                        }
    723                 len -= opth->len << 3;          /* オプション長の単位は 8 バイト */
     690                len -= opth->len << 3;          /* オプション長の単位は 8 バイト */
    724691                opth = (T_ND_OPT_HDR *)((uint8_t *)opth + (opth->len << 3));
    725692                }
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/nd6.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;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$
     
    8270
    8371/*
    84  *  ネットワークインタフェース構造体(T_IFNET)のフラグ
    85  */
    86 
    87 #define ND6_IFF_IFDISABLED      UINT_C(0x01)    /* インタフェースを無効にする。*/
    88 
    89 /*
    90  *  近隣キャッシュ
     72 *  ネットワークインタフェース構造体(T_IFNET)のフラグ
     73 */
     74
     75#define ND6_IFF_IFDISABLED      UINT_C(0x01)    /* インタフェースを無効にする。*/
     76
     77/*
     78 *  近隣キャッシュ
    9179 */
    9280
     
    9583        T_NET_BUF       *hold;
    9684        TMO             tmout;
    97         SYSTIM          expire;         /* [ms] 有効時間が切れる時刻  */
     85        SYSTIM          expire;         /* [ms] 有効時間が切れる時刻      */
    9886        T_IF_ADDR       ifaddr;
    9987        uint8_t         state;
     
    10290        } T_LLINFO_ND6;
    10391
    104 /* 近隣キャッシュの状æ
    105 ‹ */
    106 
    107 #define ND6_LLINFO_FREE                 0       /* 未使用            */
    108 #define ND6_LLINFO_NO_STATE             1       /* 状æ
    109 ‹æœªå®šç¾©              */
    110 #define ND6_LLINFO_INCOMPLETE           2       /* 未解決            */
    111 #define ND6_LLINFO_REACHABLE            3       /* 到達可能         */
    112 #define ND6_LLINFO_STALE                4       /* 到達可能性は未確認  */
    113 #define ND6_LLINFO_DELAY                5       /* 到達可能性の確認å¾
    114 æ©Ÿ     */
    115 #define ND6_LLINFO_PROBE                6       /* 到達可能性を確認中  */
     92/* 近隣キャッシュの状態 */
     93
     94#define ND6_LLINFO_FREE                 0       /* 未使用          */
     95#define ND6_LLINFO_NO_STATE             1       /* 状態未定義                */
     96#define ND6_LLINFO_INCOMPLETE           2       /* 未解決          */
     97#define ND6_LLINFO_REACHABLE            3       /* 到達可能         */
     98#define ND6_LLINFO_STALE                4       /* 到達可能性は未確認    */
     99#define ND6_LLINFO_DELAY                5       /* 到達可能性の確認待機   */
     100#define ND6_LLINFO_PROBE                6       /* 到達可能性を確認中    */
    116101
    117102#define ND6_IS_LLINFO_PROBREACH(n)      ((n)->state > ND6_LLINFO_INCOMPLETE)
    118103
    119 /* 近隣キャッシュの制御ビット */
    120 
    121 #define ND6_LLIF_ROUTER                 UINT_C(0x80)    /* ルータ            */
    122 #define ND6_LLIF_ASKED                  UINT_C(0x40)    /* 通知済み         */
    123 #define ND6_LLIF_STATE_MASK             UINT_C(0x07)    /* 状æ
    124 ‹ãƒžã‚¹ã‚¯              */
    125 
    126 /* 近隣探索キャッシュ、有効時間の定義 */
     104/* 近隣キャッシュの制御ビット */
     105
     106#define ND6_LLIF_ROUTER                 UINT_C(0x80)    /* ルータ          */
     107#define ND6_LLIF_ASKED                  UINT_C(0x40)    /* 通知済み         */
     108#define ND6_LLIF_STATE_MASK             UINT_C(0x07)    /* 状態マスク                */
     109
     110/* 近隣探索キャッシュ、有効時間の定義 */
    127111
    128112#define ND6_SLOW_TMO                    ((60*60*1000)/NET_TIMER_HZ)
    129                                                         /* 1 [時間]                           */
    130                                                         /* 近隣探索キャッシュ更新タイムアウト  */
    131 
    132 #define ND6_MAX_DAD_TRY                 15              /* 重複アドレス検出の再送回数              */
    133 #define ND6_MAX_MCAST_QUERY             3               /* マルチキャストアドレス要請の再送回数       */
    134 #define ND6_MAX_UCAST_QUERY             3               /* ユニキャストアドレス要請の再送回数  */
     113                                                        /* 1 [時間]                               */
     114                                                        /* 近隣探索キャッシュ更新タイムアウト    */
     115
     116#define ND6_MAX_DAD_TRY                 15              /* 重複アドレス検出の再送回数                */
     117#define ND6_MAX_MCAST_QUERY             3               /* マルチキャストアドレス要請の再送回数   */
     118#define ND6_MAX_UCAST_QUERY             3               /* ユニキャストアドレス要請の再送回数    */
    135119
    136120#define ND6_INFINITE_LIFETIME           0xffffffff
    137121
    138122#define ND6_GCOLLECTION_TIME            (60*60*24*SYSTIM_HZ)
    139                                                         /* ゴミ拾い周期、1 日                   */
    140 #define ND6_DELAY_TIME                  (5*SYSTIM_HZ)   /* 確認å¾
    141 æ©Ÿé
    142 å»¶                             */
    143 #define ND6_FIRST_DAD_DELAY_TIME        (1*SYSTIM_HZ)   /* 最初の重複アドレス検出送信é
    144 å»¶     */
     123                                                        /* ゴミ拾い周期、1 日                   */
     124#define ND6_DELAY_TIME                  (5*SYSTIM_HZ)   /* 確認待機遅延                               */
     125#define ND6_FIRST_DAD_DELAY_TIME        (1*SYSTIM_HZ)   /* 最初の重複アドレス検出送信遅延      */
    145126#define ND6_DAD_DELAY_TIME              (5*SYSTIM_HZ/10)
    146                                                         /* 重複アドレス検出送信é
    147 å»¶             */
    148 
    149 /* 近隣探索用タイマの設定 */
    150 
    151 #define ND6_TIMER_TMO                   ((SYSTIM_HZ/NET_TIMER_CYCLE)/5) /* 0.2[s] 間隔                */
    152 
    153 /*
    154  *  到達可能状æ
    155 ‹ã®æœ‰åŠ¹æ™‚é–“
    156  */
    157 
    158 #define ND6_DEF_REACHABLE_TIME          (30*SYSTIM_HZ)  /* 到達可能状æ
    159 ‹ã®æœ‰åŠ¹æ™‚間の既定値            */
     127                                                        /* 重複アドレス検出送信遅延         */
     128
     129/* 近隣探索用タイマの設定 */
     130
     131#define ND6_TIMER_TMO                   ((SYSTIM_HZ/NET_TIMER_CYCLE)/5) /* 0.2[s] 間隔            */
     132
     133/*
     134 *  到達可能状態の有効時間
     135 */
     136
     137#define ND6_DEF_REACHABLE_TIME          (30*SYSTIM_HZ)  /* 到達可能状態の有効時間の既定値              */
    160138#define ND6_MAX_REACHABLE_TIME          (60*60*SYSTIM_HZ)
    161                                                         /* 到達可能状æ
    162 ‹ã®æœ‰åŠ¹æ™‚間の既定値            */
     139                                                        /* 到達可能状態の有効時間の既定値              */
    163140#define ND6_RECALC_REACHTM_INTERVAL     (60*60*2*SYSTIM_HZ)
    164                                                         /* 到達可能状æ
    165 ‹ã®æœ‰åŠ¹æ™‚間再計算間隔 */
    166 
    167 #define ND6_MIN_REACHTM_RAND_FACTOR     512             /* 最小乱数補正値、1,024 * 0.5          */
    168 
    169 #if 1                                                   /* タイマーの起動間隔を考æ
    170 ®ã—、規定より短く設定 */
    171 #define ND6_MAX_REACHTM_RAND_FACTOR     1484            /* 最小乱数補正値、1,024 * 1.45                 */
     141                                                        /* 到達可能状態の有効時間再計算間隔     */
     142
     143#define ND6_MIN_REACHTM_RAND_FACTOR     512             /* 最小乱数補正値、1,024 * 0.5          */
     144
     145#if 1                                                   /* タイマーの起動間隔を考慮し、規定より短く設定       */
     146#define ND6_MAX_REACHTM_RAND_FACTOR     1484            /* 最小乱数補正値、1,024 * 1.45                 */
    172147#else
    173 #define ND6_MAX_REACHTM_RAND_FACTOR     1536            /* 最小乱数補正値、1,024 * 1.5                  */
     148#define ND6_MAX_REACHTM_RAND_FACTOR     1536            /* 最小乱数補正値、1,024 * 1.5                  */
    174149#endif
    175150
    176 /* 到達可能状æ
    177 ‹ã®æœ‰åŠ¹æ™‚間の計算マクロ */
     151/* 到達可能状態の有効時間の計算マクロ */
    178152
    179153#define ND6_CALC_REACH_TIME(b)          \
     
    182156
    183157/*
    184  *  近隣探索の送信間隔
     158 *  近隣探索の送信間隔
    185159 */
    186160
     
    188162
    189163/*
    190  *  ルータ通知により変更されることがある値
     164 *  ルータ通知により変更されることがある値
    191165 */
    192166
    193167#if NUM_ND6_DEF_RTR_ENTRY > 0
    194168
    195 /* ルータ通知を受信する場合は、通知された値 */
     169/* ルータ通知を受信する場合は、通知された値 */
    196170
    197171#define ND6_REACHABLE_TIME              nd6_reachable_time
     
    200174#else   /* #if NUM_ND6_DEF_RTR_ENTRY > 0 */
    201175
    202 /* ルータ通知を受信しない場合の値は既定値 */
     176/* ルータ通知を受信しない場合の値は既定値 */
    203177
    204178#define ND6_REACHABLE_TIME              ND6_DEF_REACHABLE_TIME
     
    208182
    209183/*
    210  *  ディフォルトルータ・リスト
     184 *  ディフォルトルータ・リスト
    211185 */
    212186
    213187typedef struct t_def_router {
    214188        T_IN6_ADDR      addr;
    215         SYSTIM          expire;         /* [ms] 有効時間が切れる時刻  */
    216         uint32_t        lifetime;       /* [ms] 有効時間                    */
    217         uint16_t        plistmap;       /* プレフィックスマップ               */
    218         uint8_t         flags;          /* ルータ通知のフラグ          */
     189        SYSTIM          expire;         /* [ms] 有効時間が切れる時刻      */
     190        uint32_t        lifetime;       /* [ms] 有効時間                    */
     191        uint16_t        plistmap;       /* プレフィックスマップ           */
     192        uint8_t         flags;          /* ルータ通知のフラグ            */
    219193        uint8_t         state;
    220194        } T_DEF_ROUTER;
    221195
    222 /* ディフォルトルータ・リストの状æ
    223 ‹ */
    224 
    225 #define ND6_DEF_RTR_BUSY                0xff    /* 使用中            */
    226 
    227 /* プレフィックスのインデックス */
     196/* ディフォルトルータ・リストの状態 */
     197
     198#define ND6_DEF_RTR_BUSY                0xff    /* 使用中          */
     199
     200/* プレフィックスのインデックス */
    228201
    229202#define ND6_PREFIX_IX_INVALID           0xff
    230203
    231204/*
    232  *  プレフィックス・リスト
     205 *  プレフィックス・リスト
    233206 */
    234207
    235208typedef struct t_nd6_prefix {
    236         T_IN6_ADDR      prefix;         /* プレフィックス                */
    237         uint32_t        expire;         /* [s] 有効時間が切れる時刻   */
    238         uint32_t        preferred;      /* [s] 推奨有効時間が切れる時刻     */
    239         uint32_t        vltime;         /* [s] 有効時間                     */
    240         uint32_t        pltime;         /* [s] 推奨有効時間               */
    241         uint16_t        routermap;      /* ルータマップ                   */
    242         uint8_t         flags;          /* フラグ                    */
    243         uint8_t         prefix_len;     /* プレフィックス長             */
     209        T_IN6_ADDR      prefix;         /* プレフィックス              */
     210        uint32_t        expire;         /* [s] 有効時間が切れる時刻       */
     211        uint32_t        preferred;      /* [s] 推奨有効時間が切れる時刻     */
     212        uint32_t        vltime;         /* [s] 有効時間                     */
     213        uint32_t        pltime;         /* [s] 推奨有効時間           */
     214        uint16_t        routermap;      /* ルータマップ                       */
     215        uint8_t         flags;          /* フラグ                  */
     216        uint8_t         prefix_len;     /* プレフィックス長             */
    244217        } T_ND6_PREFIX;
    245218
    246 /* フラグ */
    247 
    248 #define ND6_PREFIX_FLAG_ONLINK          UINT_C(0x80)    /* オンリンクプレフィックス */
    249 #define ND6_PREFIX_FLAG_AUTO            UINT_C(0x40)    /* ステートレス・アドレス自動設定*/
    250 
    251 #define ND6_PREFIX_STATE_BUSY           UINT_C(0x01)    /* 使用中            */
    252 #define ND6_PREFIX_STATE_ONLINK         UINT_C(0x02)    /* オンリンク状æ
    253 ‹       */
    254 #define ND6_PREFIX_STATE_DETACHED       UINT_C(0x04)    /* 非使用状æ
    255 ‹       */
    256 
    257 /*
    258  *  変数
     219/* フラグ */
     220
     221#define ND6_PREFIX_FLAG_ONLINK          UINT_C(0x80)    /* オンリンクプレフィックス */
     222#define ND6_PREFIX_FLAG_AUTO            UINT_C(0x40)    /* ステートレス・アドレス自動設定*/
     223
     224#define ND6_PREFIX_STATE_BUSY           UINT_C(0x01)    /* 使用中          */
     225#define ND6_PREFIX_STATE_ONLINK         UINT_C(0x02)    /* オンリンク状態      */
     226#define ND6_PREFIX_STATE_DETACHED       UINT_C(0x04)    /* 非使用状態        */
     227
     228/*
     229 *  変数
    259230 */
    260231
     
    266237
    267238/*
    268  *  関数
     239 *  関数
    269240 */
    270241
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/nd6_nbr.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$
     
    126114
    127115/*
    128  *  局所関数
     116 *  局所関数
    129117 */
    130118
     
    136124
    137125/*
    138  *  nd6_dad_duplicated -- 重複アドレスを検出した時の処理
     126 *  nd6_dad_duplicated -- 重複アドレスを検出した時の処理
    139127 */
    140128
     
    149137                ifa->flags |=  IN6_IFF_DUPLICATED;
    150138
    151                 /* タイマーを停止する。*/
     139                /* タイマーを停止する。*/
    152140                untimeout((callout_func)nd6_dad_timer, ifa);
    153141
    154142                /*
    155                  *  もし IPv6 アドレスが、ユニークに割り当てらた
    156                  * (イーサネット用の EUI-64)ハードウェアアドレスをベースとした
    157                  *  インタフェース ID で生成されたのであれば、
    158                  *  このインタフェースでの IPv6 の動作は無効にすべきである
    159                  * (RFC2462bis-03 セクション 5.4.5)。
     143                 *  もし IPv6 アドレスが、ユニークに割り当てらた
     144                 * (イーサネット用の EUI-64)ハードウェアアドレスをベースとした
     145                 *  インタフェース ID で生成されたのであれば、
     146                 *  このインタフェースでの IPv6 の動作は無効にすべきである
     147                 * (RFC2462bis-03 セクション 5.4.5)。
    160148                 */
    161149                if (IN6_IS_ADDR_LINKLOCAL(&ifa->addr))
     
    165153
    166154/*
    167  *  nd6_dad_ns_output -- 重複アドレス検出 (DAD) 要請を出力する。
     155 *  nd6_dad_ns_output -- 重複アドレス検出 (DAD) 要請を出力する。
    168156 */
    169157
     
    178166
    179167/*
    180  *  nd6_dad_ns_input -- 重複アドレス検出 (DAD) 要請å
    181 ¥åŠ›
     168 *  nd6_dad_ns_input -- 重複アドレス検出 (DAD) 要請入力
    182169 */
    183170
     
    188175
    189176        /*
    190          *  まだ、重複アドレス検出要請を出力していない場合
     177         *  まだ、重複アドレス検出要請を出力していない場合
    191178         */
    192179        if (ifa->ns_ocount == 0)
     
    197184
    198185/*
    199  *  nd6_dad_na_input -- 重複アドレス検出 (DAD) 通知å
    200 ¥åŠ›
     186 *  nd6_dad_na_input -- 重複アドレス検出 (DAD) 通知入力
    201187 */
    202188
     
    210196
    211197/*
    212  *  nd6_dad_timer -- 重複アドレス検出 (DAD) タイマー
     198 *  nd6_dad_timer -- 重複アドレス検出 (DAD) タイマー
    213199 */
    214200
     
    231217                nd6_dad_ns_output(ifp, ifa);
    232218
    233                 /* タイムアウトを近隣探索の送信間隔に設定する。*/
     219                /* タイムアウトを近隣探索の送信間隔に設定する。*/
    234220                timeout((callout_func)nd6_dad_timer, ifa, ND6_RETRANS_TIME * NET_TIMER_HZ / SYSTIM_HZ);
    235221                }
     
    243229
    244230/*
    245  *  nd6_ns_input -- 近隣要請のå
    246 ¥åŠ›å‡¦ç†ã€‚
     231 *  nd6_ns_input -- 近隣要請の入力処理。
    247232 */
    248233
     
    266251
    267252        /*
    268          *  ヘッダのチェック、以下の場合は破棄する。
    269          *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
    270          *    ・ヘッダ長が短い
     253         *  ヘッダのチェック、以下の場合は破棄する。
     254         *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
     255         *    ・ヘッダ長が短い
    271256         */
    272257        if (ip6h->hlim != IPV6_MAXHLIM || input->len - off < NEIGHBOR_SOLICIT_HDR_SIZE)
     
    277262        if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src)) {
    278263                /*
    279                  *  始点アドレスが無指定なら、重複アドレス検出
    280                  *  あてå
    281 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ã€è¦è«‹ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã§ãªã‘ればならない。
     264                 *  始点アドレスが無指定なら、重複アドレス検出
     265                 *  あて先アドレスは、要請マルチキャストでなければならない。
    282266                 */
    283267                if (!IN6_IS_ADDR_NS_MULTICAST(&ip6h->dst))
     
    285269                }
    286270
    287         /* 目的アドレスがマルチキャストならエラー */
     271        /* 目的アドレスがマルチキャストならエラー */
    288272        if (IN6_IS_ADDR_MULTICAST(&nsh->target))
    289273                goto err_ret;
    290274
    291         /* 近隣探索オプションのオフセットを記録する。*/
     275        /* 近隣探索オプションのオフセットを記録する。*/
    292276        if (nd6_options(nd_opt_off, input->buf + (off + NEIGHBOR_SOLICIT_HDR_SIZE),
    293277                                    input->len - (off + NEIGHBOR_SOLICIT_HDR_SIZE)) != E_OK)
    294278                goto err_ret;
    295279
    296         /* 近隣探索オプション (始点リンクアドレス) */
     280        /* 近隣探索オプション (始点リンクアドレス) */
    297281        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_SOURCE_LINKADDR)]) {
    298282                opth = (T_ND_OPT_HDR *)((uint8_t *)(input->buf + off + NEIGHBOR_SOLICIT_HDR_SIZE) +
    299283                                        nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_SOURCE_LINKADDR)] - 8);
    300                 /* 注意: オプションオフセットé
    301 åˆ—には、オフセット + 8 が設定されている。*/
     284                /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/
    302285                lladdr     = (uint8_t *)(opth + 1);
    303286                lladdr_len = (opth->len << 3);
     
    307290                goto err_ret;
    308291
    309         /* 宛å
    310 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆãªã‚‰è¿‘隣通知にデータリンク層のアドレスを付ける。*/
     292        /* 宛先アドレスがマルチキャストなら近隣通知にデータリンク層のアドレスを付ける。*/
    311293        if (IN6_IS_ADDR_MULTICAST(&ip6h->dst))
    312294                tlladdr = true;
     
    315297
    316298        /*
    317          *  目的アドレスが、自分のネットワークインタフェースに
    318          *  割り当てられているアドレスか調べる。
    319          *  なお、代理サービスは実è£
    320 ã—ていない。
     299         *  目的アドレスが、自分のネットワークインタフェースに
     300         *  割り当てられているアドレスか調べる。
     301         *  なお、代理サービスは実装していない。
    321302         */
    322303        ifa = in6_lookup_ifaddr(ifp, &nsh->target);
     
    325306                goto free_ret;
    326307
    327         /* 探索結果アドレスが重複していれば応答しないで終了する。*/
     308        /* 探索結果アドレスが重複していれば応答しないで終了する。*/
    328309        if (ifa->flags & IN6_IFF_DUPLICATED)
    329310                goto err_ret;
    330311
    331312        /*
    332          *  ネットワークインタフェースのアドレス長が一致しなければエラー
     313         *  ネットワークインタフェースのアドレス長が一致しなければエラー
    333314         */
    334315        if (lladdr && lladdr_len != ((sizeof(T_IF_ADDR) + sizeof(T_ND_OPT_HDR) + 7) & ~7))
     
    336317
    337318        /*
    338          *  始点アドレスが自分のアドレスと一致すれば重複している。
     319         *  始点アドレスが自分のアドレスと一致すれば重複している。
    339320         */
    340321        if (IN6_ARE_ADDR_EQUAL(&ifa->addr, &ip6h->src))
    341322                goto free_ret;
    342323
    343         /* 重複検出中に、近隣要請を受信したときの処理 */
     324        /* 重複検出中に、近隣要請を受信したときの処理 */
    344325        if (ifa->flags & IN6_IFF_TENTATIVE) {
    345326                if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src))
     
    354335
    355336        /*
    356          *  始点アドレスが無指定なら、送信相手は重複アドレス検出中で、
    357          *  直接送信することはできないので、å
    358 ¨ãƒŽãƒ¼ãƒ‰ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆ
    359          *  アドレスに送信する。
     337         *  始点アドレスが無指定なら、送信相手は重複アドレス検出中で、
     338         *  直接送信することはできないので、全ノードマルチキャスト
     339         *  アドレスに送信する。
    360340         */
    361341        if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src)) {
     
    364344                }
    365345
    366         /* 近隣キャッシュに登録する。*/
     346        /* 近隣キャッシュに登録する。*/
    367347        nd6_cache_lladdr(ifp, &ip6h->src, (T_IF_ADDR *)lladdr, ND_NEIGHBOR_SOLICIT, 0);
    368348
     
    379359
    380360/*
    381  *  nd6_ns_output -- 近隣要請を出力する。
     361 *  nd6_ns_output -- 近隣要請を出力する。
    382362 */
    383363
     
    398378                return;
    399379
    400         /* 近隣要請ペイロード長を計算する。*/
     380        /* 近隣要請ペイロード長を計算する。*/
    401381        if (!dad && IF_SOFTC_TO_IFADDR(ifp->ic))
    402382                len = (NEIGHBOR_SOLICIT_HDR_SIZE + ND_OPT_HDR_SIZE + sizeof(T_IF_ADDR) + 7) >> 3 << 3;
     
    405385
    406386        /*
    407          *  要請マルチキャスト・アドレス宛の近隣探索では、
    408          *  他のリンクからの偽造されたデータグラムを
    409          *  排除するため、ホップリミットに IPV6_MAXHLIM (255) を設定する。
     387         *  要請マルチキャスト・アドレス宛の近隣探索では、
     388         *  他のリンクからの偽造されたデータグラムを
     389         *  排除するため、ホップリミットに IPV6_MAXHLIM (255) を設定する。
    410390         */
    411391        if (IN6_IS_ADDR_UNSPECIFIED(daddr) || IN6_IS_ADDR_MULTICAST(daddr))
    412392                ipflags = IPV6_OUT_SET_HOP_LIMIT(IPV6_OUT_FLG_HOP_LIMIT, IPV6_MAXHLIM);
    413393
    414         /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/
     394        /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/
    415395        if (in6_get_datagram(&output, len, 0, daddr, NULL,
    416396                             IPPROTO_ICMPV6, IPV6_MAXHLIM,
     
    422402        if (IN6_IS_ADDR_UNSPECIFIED(daddr)) {
    423403
    424                 /* 宛å
    425 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒç„¡æŒ‡å®šã®å ´åˆã¯ã€è¦è«‹ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’設定する。*/
     404                /* 宛先アドレスが無指定の場合は、要請マルチキャストアドレスを設定する。*/
    426405                ip6h->dst.s6_addr32[0] = IPV6_ADDR_INT32_MLL;
    427406                ip6h->dst.s6_addr32[2] = IPV6_ADDR_INT32_ONE;
     
    430409                }
    431410
    432         /* 送信å
    433 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã®è¨­å®š */
     411        /* 送信元アドレスの設定 */
    434412        if (!dad) {
    435413
    436                 /* 重複アドレス検出ではない時の送信å
    437 ƒã‚¢ãƒ‰ãƒ¬ã‚¹æ±ºå®šå‡¦ç†ã€‚*/
     414                /* 重複アドレス検出ではない時の送信元アドレス決定処理。*/
    438415                T_IN6_ADDR *saddr;
    439416
    440417                if (ln && ln->hold) {
    441418                        /*
    442                          * 送信がペンディングされているデータグラムの
    443                          * 送信å
    444 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’利用する。
     419                         * 送信がペンディングされているデータグラムの
     420                         * 送信元アドレスを利用する。
    445421                         */
    446422                        if (ln->hold->len > IF_IP6_HDR_SIZE)
     
    456432                else {
    457433                        /*
    458                          *  宛å
    459 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    460 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    461                          *  ネットワークインタフェースから探索して利用する。
     434                         *  宛先アドレスにふさわしい送信元アドレスを、
     435                         *  ネットワークインタフェースから探索して利用する。
    462436                         */
    463437                        T_IN6_IFADDR *ifa;
     
    472446        else {
    473447
    474                 /* 重複アドレス検出時の送信å
    475 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ç„¡æŒ‡å®šã€‚*/
     448                /* 重複アドレス検出時の送信元アドレスは無指定。*/
    476449                memset(&ip6h->src, 0, sizeof(T_IN6_ADDR));
    477450                }
    478451
    479         /* 近隣要請ヘッダを設定する。*/
     452        /* 近隣要請ヘッダを設定する。*/
    480453        nsh = GET_NEIGHBOR_SOLICIT_HDR(output, IF_IP6_NEIGHBOR_SOLICIT_HDR_OFFSET);
    481454        nsh->hdr.type        = ND_NEIGHBOR_SOLICIT;
     
    486459        if (!dad && (mac = IF_SOFTC_TO_IFADDR(ifp->ic)) != NULL) {
    487460
    488                 /* 近隣探索オプションとして、探索目標の MAC アドレスを設定する。*/
     461                /* 近隣探索オプションとして、探索目標の MAC アドレスを設定する。*/
    489462                T_ND_OPT_HDR    *opth;
    490463                uint_t          optlen;
     
    498471                }
    499472
    500         /* チェックサムを計算する。*/
     473        /* チェックサムを計算する。*/
    501474        nsh->hdr.sum = 0;
    502475        nsh->hdr.sum = in6_cksum(output, IPPROTO_ICMPV6, (uint8_t*)nsh - output->buf, len);
    503476
    504         /* 送信する。*/
     477        /* 送信する。*/
    505478        NET_COUNT_ICMP6(net_count_nd6[NC_ICMP6_OUT_OCTETS],
    506479                       output->len - GET_IF_IP6_HDR_SIZE(output));
     
    512485
    513486/*
    514  *  nd6_na_input -- 近隣通知のå
    515 ¥åŠ›å‡¦ç†ã€‚
     487 *  nd6_na_input -- 近隣通知の入力処理。
    516488 */
    517489
     
    536508
    537509        /*
    538          *  ヘッダのチェック、以下の場合は破棄する。
    539          *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
    540          *    ・ヘッダ長が短い
     510         *  ヘッダのチェック、以下の場合は破棄する。
     511         *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
     512         *    ・ヘッダ長が短い
    541513         */
    542514        if (ip6h->hlim != IPV6_MAXHLIM || input->len - off < NEIGHBOR_ADVERT_HDR_SIZE)
     
    545517        nah  = (T_NEIGHBOR_ADVERT_HDR *)(input->buf + off);
    546518
    547         /* 目的アドレスがマルチキャストならエラー */
     519        /* 目的アドレスがマルチキャストならエラー */
    548520        if (IN6_IS_ADDR_MULTICAST(&nah->target))
    549521                goto err_ret;
    550522
    551         /* 近隣要請への応答で、宛å
    552 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆãªã‚‰ã‚¨ãƒ©ãƒ¼ */
     523        /* 近隣要請への応答で、宛先アドレスがマルチキャストならエラー */
    553524        if ((nah->nd_na_flags_reserved & ND_NA_FLG_SOLICITED) &&
    554525            IN6_IS_ADDR_MULTICAST(&ip6h->dst))
    555526                goto err_ret;
    556527
    557         /* 近隣探索オプションのオフセットを記録する。*/
     528        /* 近隣探索オプションのオフセットを記録する。*/
    558529        if (nd6_options(nd_opt_off, input->buf + (off + NEIGHBOR_ADVERT_HDR_SIZE),
    559530                                    input->len - (off + NEIGHBOR_ADVERT_HDR_SIZE)) != E_OK)
    560531                goto err_ret;
    561532
    562         /* 近隣探索オプション (目的リンクアドレス) */
     533        /* 近隣探索オプション (目的リンクアドレス) */
    563534        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_TARGET_LINKADDR)]) {
    564535                opth = (T_ND_OPT_HDR *)((uint8_t *)(input->buf + off + NEIGHBOR_ADVERT_HDR_SIZE) +
    565536                                        nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_TARGET_LINKADDR)] - 8);
    566                 /* 注意: オプションオフセットé
    567 åˆ—には、オフセット + 8 が設定されている。*/
     537                /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/
    568538                lladdr     = (uint8_t *)(opth + 1);
    569539                lladdr_len = (opth->len << 3);
     
    573543
    574544        /*
    575          *  目的アドレスが自分のネットワークインタフェースに割り当てられているアドレスの
    576          *  いずれかに一致したときは、重複していることを意味している。
     545         *  目的アドレスが自分のネットワークインタフェースに割り当てられているアドレスの
     546         *  いずれかに一致したときは、重複していることを意味している。
    577547         */
    578548        if (ifa) {
     
    585555
    586556        /*
    587          *  ネットワークインタフェースのアドレス長が一致しなければエラー
     557         *  ネットワークインタフェースのアドレス長が一致しなければエラー
    588558         */
    589559        if (lladdr && lladdr_len != ((sizeof(T_IF_ADDR) + sizeof(T_ND_OPT_HDR) + 7) & ~7))
    590560                goto err_ret;
    591561
    592         /* 近隣キャッシュを探索する。*/
     562        /* 近隣キャッシュを探索する。*/
    593563        syscall(wai_sem(SEM_ND6_CACHE));
    594564        if ((ln = nd6_lookup(&nah->target, false)) == NULL)
    595565                goto free_ret;
    596566
    597         /* 近隣キャッシュの状æ
    598 ‹ãŒã€ãƒ‡ãƒ¼ã‚¿ãƒªãƒ³ã‚¯å±¤ã®ã‚¢ãƒ‰ãƒ¬ã‚¹æœªè§£æ±ºã®å ´åˆ */
     567        /* 近隣キャッシュの状態が、データリンク層のアドレス未解決の場合 */
    599568        if (ln->state == ND6_LLINFO_INCOMPLETE) {
    600                 /* 通知されたデータリンク層のアドレスの長さが 0 の場合 */
     569                /* 通知されたデータリンク層のアドレスの長さが 0 の場合 */
    601570                if (lladdr == NULL)
    602571                        goto free_ret;
     
    633602
    634603                /*
    635                  *  状æ
    636 ‹é·ç§»è¡¨
     604                 *  状態遷移表
    637605                 *
    638606                 *  nd_na_flags_reserved
    639                  *  OVERRIDE    SOLICTED lladdr llchange 処理 (L: lladdr を登録する)
     607                 *  OVERRIDE    SOLICTED lladdr llchange 処理 (L: lladdr を登録する)
    640608                 *
    641609                 *      F           F       N      -    (2c)
     
    653621                 */
    654622                if ((nah->nd_na_flags_reserved & ND_NA_FLG_OVERRIDE) == 0 && (lladdr != NULL && llchange)) {    /* (1) */
    655                         /* 状æ
    656 ‹ãŒ REACHABLE なら STALE に遷移する。*/
     623                        /* 状態が REACHABLE なら STALE に遷移する。*/
    657624                        if (ln->state == ND6_LLINFO_REACHABLE) {
    658625                                syscall(get_tim(&now));
     
    666633                         lladdr == NULL) {                                                                              /* (2c) */
    667634
    668                         /* データリンク層のアドレスが通知されていれば更新する。*/
     635                        /* データリンク層のアドレスが通知されていれば更新する。*/
    669636                        if (lladdr != NULL)
    670637                                ln->ifaddr = *(T_IF_ADDR *)lladdr;
    671638
    672                         /* 近隣要請への応答なら REACHABLE に遷移する。*/
     639                        /* 近隣要請への応答なら REACHABLE に遷移する。*/
    673640                        if (nah->nd_na_flags_reserved & ND_NA_FLG_SOLICITED) {
    674641                                ln->state = ND6_LLINFO_REACHABLE;
     
    680647                                }
    681648                        /*
    682                          *  データリンク層のアドレスが通知され、
    683                          *  異なるアドレスなら更新する。
     649                         *  データリンク層のアドレスが通知され、
     650                         *  異なるアドレスなら更新する。
    684651                         */
    685652                        else if (lladdr != NULL && llchange) {
     
    690657                        }
    691658
    692                 /* ルータ通知フラグの処理 */
     659                /* ルータ通知フラグの処理 */
    693660                if ((ln->flags        & ND6_LLIF_ROUTER ) != 0 &&
    694661                    (nah->nd_na_flags_reserved & ND_NA_FLG_ROUTER) == 0) {
    695662                        /*
    696                          *  送信相手がルータ通知フラグを無効にした場合。
    697                          *  ディフォルト・ルータリストから対象のルータを削除し、
    698                          *  近隣探索キャッシュを更新する。
     663                         *  送信相手がルータ通知フラグを無効にした場合。
     664                         *  ディフォルト・ルータリストから対象のルータを削除し、
     665                         *  近隣探索キャッシュを更新する。
    699666                         */
    700667                        T_DEF_ROUTER    *dr = NULL;
     
    714681        ln->asked = 0;
    715682
    716         /* アドレス解決å¾
    717 ã¡ã®ãƒ‡ãƒ¼ã‚¿ã‚°ãƒ©ãƒ ãŒã‚れば送信する。*/
     683        /* アドレス解決待ちのデータグラムがあれば送信する。*/
    718684        nd6_output_hold(ifp, ln);
    719685
     
    729695
    730696/*
    731  *  nd6_na_output -- 近隣通知を出力する。
     697 *  nd6_na_output -- 近隣通知を出力する。
    732698 */
    733699
     
    747713
    748714        /*
    749          *  近隣通知ペイロード長を計算する。
    750          *  tlladdr が真ならネットワークインタフェースのアドレスを追加する。
     715         *  近隣通知ペイロード長を計算する。
     716         *  tlladdr が真ならネットワークインタフェースのアドレスを追加する。
    751717         */
    752718        if (tlladdr && IF_SOFTC_TO_IFADDR(ifp->ic))
     
    756722
    757723        /*
    758          *  他のリンクからの偽造されたデータグラムを
    759          *  排除するため、ホップリミットに IPV6_MAXHLIM (255) を設定する。
     724         *  他のリンクからの偽造されたデータグラムを
     725         *  排除するため、ホップリミットに IPV6_MAXHLIM (255) を設定する。
    760726         */
    761727        ipflags = IPV6_OUT_SET_HOP_LIMIT(IPV6_OUT_FLG_HOP_LIMIT, IPV6_MAXHLIM);
    762728
    763         /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/
     729        /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/
    764730        if (in6_get_datagram(&output, len, 0, daddr, NULL,
    765731                             IPPROTO_ICMPV6, IPV6_MAXHLIM,
     
    771737        if (IN6_IS_ADDR_UNSPECIFIED(daddr)) {
    772738                /*
    773                  *  宛å
    774 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒç„¡æŒ‡å®šã®å ´åˆã¯ã€
    775                  *  リンクローカルå
    776 ¨ãƒŽãƒ¼ãƒ‰ãƒ»ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’設定する。
     739                 *  宛先アドレスが無指定の場合は、
     740                 *  リンクローカル全ノード・マルチキャストアドレスを設定する。
    777741                 */
    778742                ip6h->dst.s6_addr32[0] = IPV6_ADDR_INT32_MLL;
     
    786750
    787751        /*
    788          *  宛å
    789 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    790 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    791          *  ネットワークインタフェースから探索して利用する。
     752         *  宛先アドレスにふさわしい送信元アドレスを、
     753         *  ネットワークインタフェースから探索して利用する。
    792754         */
    793755        if ((ifa = in6_ifawithifp(ifp, &ip6h->dst)) == NULL) {
     
    797759        ip6h->src = ifa->addr;
    798760
    799         /* 近隣通知ヘッダを設定する。*/
     761        /* 近隣通知ヘッダを設定する。*/
    800762        nah = GET_NEIGHBOR_ADVERT_HDR(output, IF_IP6_NEIGHBOR_ADVERT_HDR_OFFSET);
    801763        nah->hdr.type        = ND_NEIGHBOR_ADVERT;
     
    803765        nah->target          = *taddr;
    804766
    805         /* tlladdr が真ならネットワークインタフェースのアドレスを追加する。*/
     767        /* tlladdr が真ならネットワークインタフェースのアドレスを追加する。*/
    806768        if (tlladdr && (mac = IF_SOFTC_TO_IFADDR(ifp->ic)) != NULL) {
    807769
     
    821783        nah->nd_na_flags_reserved = flags;
    822784
    823         /* チェックサムを計算する。*/
     785        /* チェックサムを計算する。*/
    824786        nah->hdr.sum = 0;
    825787        nah->hdr.sum = in6_cksum(output, IPPROTO_ICMPV6, (uint8_t*)nah - output->buf, len);
    826788
    827         /* 送信する。*/
     789        /* 送信する。*/
    828790        NET_COUNT_ICMP6(net_count_nd6[NC_ICMP6_OUT_OCTETS],
    829791                       output->len - GET_IF_IP6_HDR_SIZE(output));
     
    835797
    836798/*
    837  *  nd6_dad_start -- 重複アドレス検出 (DAD) を開始する。
     799 *  nd6_dad_start -- 重複アドレス検出 (DAD) を開始する。
    838800 *
    839  *    第3引数のtick は、インタフェースが起動されてから、重複検出を
    840  *    送信するまでの最小é
    841 å»¶å€¤ã§ã‚る。
     801 *    第3引数のtick は、インタフェースが起動されてから、重複検出を
     802 *    送信するまでの最小遅延値である。
    842803 */
    843804
     
    845806nd6_dad_start (T_IFNET *ifp, T_IN6_IFADDR *ifa, int_t *tick)
    846807{
    847         /* フラグをチェックする。*/
     808        /* フラグをチェックする。*/
    848809        if (!(ifa->flags & IN6_IFF_TENTATIVE))
    849810                return;
     
    862823                return;
    863824
    864         /* 重複アドレス検出カウンタをリセットする。*/
     825        /* 重複アドレス検出カウンタをリセットする。*/
    865826        ifa->ns_icount = ifa->na_icount = ifa->ns_ocount = 0;
    866827
    867828        /*
    868          *  重複アドレス検出要請を送信する。ただし、インタフェースを
    869          *  初期化した直後に、最初に送信する場合は、ランダムなé
    870 å»¶ã‚’行う。
     829         *  重複アドレス検出要請を送信する。ただし、インタフェースを
     830         *  初期化した直後に、最初に送信する場合は、ランダムな遅延を行う。
    871831         */
    872832        if (tick == NULL) {
    873833                nd6_dad_ns_output(ifp, ifa);
    874834
    875                 /* タイムアウトを近隣探索の送信間隔に設定する。*/
     835                /* タイムアウトを近隣探索の送信間隔に設定する。*/
    876836                timeout((callout_func)nd6_dad_timer, ifa, ND6_RETRANS_TIME * NET_TIMER_HZ / SYSTIM_HZ);
    877837                }
     
    879839                int_t ntick;
    880840
    881                 if (*tick == 0) /* 最初の送信 */
     841                if (*tick == 0) /* 最初の送信 */
    882842                        ntick = net_rand() % (ND6_FIRST_DAD_DELAY_TIME * NET_TIMER_HZ / SYSTIM_HZ);
    883843                else
  • 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];
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/route6.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$
     
    115103#if 0
    116104        /*
    117          *  通信帯域を食いつぶす攻撃への対応のため、
    118          *  タイプ 0 経路制御ヘッダの処理を行わない。
     105         *  通信帯域を食いつぶす攻撃への対応のため、
     106         *  タイプ 0 経路制御ヘッダの処理を行わない。
    119107         */
    120108
    121109/*
    122  *  ip6_rthdr0 -- タイプ 0 経路制御ヘッダのå
    123 ¥åŠ›é–¢æ•°
     110 *  ip6_rthdr0 -- タイプ 0 経路制御ヘッダの入力関数
    124111 */
    125112
     
    128115{
    129116        if (rt0h->segleft == 0) {
    130                 /* 中継ノード数は 0 なので、終点ノード */
     117                /* 中継ノード数は 0 なので、終点ノード */
    131118                return E_OK;
    132119                }
    133120
    134         /* len と segleft の正当性チェック */
     121        /* len と segleft の正当性チェック */
    135122#ifdef IP6_CFG_COMPAT_RFC1883
    136123        if ((rt0h->len % 2) || (rt0h->len > 46)) {
     
    139126#endif
    140127                /*
    141                  *  len は偶数で、(23 * 2) まで。
    142                  *  ただし、(23 * 2) の制限は RFC 2462 で削除されている。
     128                 *  len は偶数で、(23 * 2) まで。
     129                 *  ただし、(23 * 2) の制限は RFC 2462 で削除されている。
    143130                 */
    144131                icmp6_error(input, ICMP6_PARAM_PROB,
     
    148135                }
    149136
    150         /* len が中継ノード数と矛盾していないかチェックする。*/
     137        /* len が中継ノード数と矛盾していないかチェックする。*/
    151138        if ((rt0h->len / 2) < rt0h->segleft) {
    152139                /*
    153                  *  len は 8オクテット単位、segleft は 16オクテット単位なので、
    154                  *  len / 2 == segleft となるはず。
    155                  *  len / 2 <  segleft はエラー。
     140                 *  len は 8オクテット単位、segleft は 16オクテット単位なので、
     141                 *  len / 2 == segleft となるはず。
     142                 *  len / 2 <  segleft はエラー。
    156143                 */
    157144                icmp6_error(input, ICMP6_PARAM_PROB,
     
    162149
    163150        /*
    164          *  残りの中継ノード数が 1 以上であれば、このノードは最終的な
    165          *  終点ノードではない。本実è£
    166 ã§ã¯ã€ä¸­ç¶™ã‚’しないので、
    167          *  å
    168 ¥åŠ›ãƒ‡ãƒ¼ã‚¿ã‚°ãƒ©ãƒ ã®å‡¦ç†ã‚’終了する。
     151         *  残りの中継ノード数が 1 以上であれば、このノードは最終的な
     152         *  終点ノードではない。本実装では、中継をしないので、
     153         *  入力データグラムの処理を終了する。
    169154         */
    170155        syscall(rel_net_buf(input));
     
    175160
    176161/*
    177  *  route6_input -- 経路制御ヘッダのå
    178 ¥åŠ›é–¢æ•°
     162 *  route6_input -- 経路制御ヘッダの入力関数
    179163 */
    180164
     
    186170        uint_t          len, off = *offp;
    187171
    188         /* ネットワークバッファの残りの長さをチェックする。*/
     172        /* ネットワークバッファの残りの長さをチェックする。*/
    189173        if (input->len - off < sizeof(T_IP6_RT_HDR))
    190174                goto buf_rel;
     
    193177        len = (rth->len + 1) << 3;
    194178
    195         /* 経路制御ヘッダの長さをチェックする。*/
     179        /* 経路制御ヘッダの長さをチェックする。*/
    196180        if (input->len < off + len)
    197181                goto buf_rel;
     
    199183#if 0
    200184        /*
    201          *  通信帯域を食いつぶす攻撃への対応のため、
    202          *  タイプ 0 経路制御ヘッダの処理を行わない。
     185         *  通信帯域を食いつぶす攻撃への対応のため、
     186         *  タイプ 0 経路制御ヘッダの処理を行わない。
    203187         */
    204188        if (rth->type == IPV6_RTHDR_TYPE_0) {
    205189                if (ip6_rthdr0(input, (T_IP6_RT0_HDR*)rth) != E_OK) {
    206190
    207                         /* エラーの場合は、ip6_rthdr0 でバッファを開放している。*/
     191                        /* エラーの場合は、ip6_rthdr0 でバッファを開放している。*/
    208192                        return IPPROTO_DONE;
    209193                        }
     
    212196
    213197                /*
    214                  *  残りの中継ノード数が 1 以上であれば、このノードは最終的な
    215                  *  終点ノードではない。本実è£
    216 ã§ã¯ã€ä¸­ç¶™ã‚’しないので、
    217                  *  ICMP6 エラーを返送して処理を終了する。
     198                 *  残りの中継ノード数が 1 以上であれば、このノードは最終的な
     199                 *  終点ノードではない。本実装では、中継をしないので、
     200                 *  ICMP6 エラーを返送して処理を終了する。
    218201                 */
    219202                icmp6_error(input, ICMP6_PARAM_PROB,
     
    226209
    227210                /*
    228                  *  残りの中継ノード数が 1 以上であれば、このノードは最終的な
    229                  *  終点ノードではない。本実è£
    230 ã§ã¯ã€ä¸­ç¶™ã‚’しないので、
    231                  *  ICMP6 エラーを返送して処理を終了する。
     211                 *  残りの中継ノード数が 1 以上であれば、このノードは最終的な
     212                 *  終点ノードではない。本実装では、中継をしないので、
     213                 *  ICMP6 エラーを返送して処理を終了する。
    232214                 */
    233215                icmp6_error(input, ICMP6_PARAM_PROB,
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/scope6.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$
     
    143131
    144132/*
    145  *  in6_addrscope -- アドレスのスコープ ID を返す。
     133 *  in6_addrscope -- アドレスのスコープ ID を返す。
    146134 */
    147135
Note: See TracChangeset for help on using the changeset viewer.