Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

Location:
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6
Files:
31 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8068
    8169/*
    82  *  RFC2402 認証ヘッダ
     70 *  RFC2402 認証ヘッダ
    8371 */
    8472
     
    8674        uint8_t         next;   /* Next Header                          */
    8775        uint8_t         len;   
    88         /* 4 オクテット単位の長さ。ただし、データ長 + 1 がå
    89 ¥ã‚‹ã€‚ */
     76        /* 4 オクテット単位の長さ。ただし、データ長 + 1 が入る。       */
    9077        uint16_t        reserved;
    9178        uint32_t        spi;    /* Security Parameter Index (SPI)       */
    92         uint32_t        seq;    /* シーケンス番号                        */
     79        uint32_t        seq;    /* シーケンス番号                      */
    9380        } __attribute__((packed, aligned(2))) T_IP6_AH_HDR;
    9481
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8068
    8169/*
    82  *  関数
     70 *  関数
    8371 */
    8472
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    116104
    117105/*
    118  *  ah6_input -- 認証ヘッダのå
    119 ¥åŠ›é–¢æ•°
     106 *  ah6_input -- 認証ヘッダの入力関数
    120107 *
    121  *    本実è£
    122 ã§ã¯ã€ãƒ‡ãƒ¼ã‚¿ã‚°ãƒ©ãƒ ã‚’破棄する。
     108 *    本実装では、データグラムを破棄する。
    123109 */
    124110
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    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;
  • azure_iot_hub/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
    r388 r389  
    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$
     
    8169
    8270/*
    83  *  RFC2406 暗号化ヘッダ
     71 *  RFC2406 暗号化ヘッダ
    8472 */
    8573
    8674typedef struct t_esp_hdr {
    8775        int32_t spi;    /* Security Parameter Index (SPI)       */
    88         int32_t seq;    /* シーケンス番号                        */
     76        int32_t seq;    /* シーケンス番号                      */
    8977        } __attribute__((packed, aligned(2)))T_ESP_HDR;
    9078
    9179typedef struct t_esp_tail {
    92         int8_t  padlen; /* パディング長                           */     
     80        int8_t  padlen; /* パディング長                               */     
    9381        int8_t  next;   /* Next Header                          */
    9482        } __attribute__((packed, aligned(2)))T_ESP_TAIL;
     
    125113
    126114/*
    127  * 関数
     115 * 関数
    128116 */
    129117
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8068
    8169/*
    82  *  関数
     70 *  関数
    8371 */
    8472
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    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));
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    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                        memcpy(&ip6h->dst, &ip6_frag_dest[ip6fq - ip6_frag_queue], sizeof(T_IN6_ADDR));
    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) {
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    157145
    158146/*
    159  *  変数
     147 *  変数
    160148 */
    161149
     
    163151
    164152/*
    165  *  SNMP の 管理æƒ
    166 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     153 *  SNMP の 管理情報ベース (MIB)
    167154 */
    168155
     
    172159
    173160/*
    174  *  icmp6_output -- ICMP6 パケットを送信する。
     161 *  icmp6_output -- ICMP6 パケットを送信する。
    175162 */
    176163
     
    184171
    185172        /*
    186          *  宛å
    187 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    188 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    189          *  ネットワークインタフェースから探索して利用する。
     173         *  宛先アドレスにふさわしい送信元アドレスを、
     174         *  ネットワークインタフェースから探索して利用する。
    190175         */
    191176        ip6h = GET_IP6_HDR(output);
     
    199184        icmp6h = GET_ICMP6_HDR(output, off);
    200185
    201         /* チェックサムを計算する。*/
     186        /* チェックサムを計算する。*/
    202187        icmp6h->sum = 0;
    203188        icmp6h->sum = in6_cksum(output, IPPROTO_ICMPV6, (uint8_t*)icmp6h - output->buf,
    204189                                ntohs(ip6h->plen) - (off - IF_IP6_HDR_SIZE));
    205190
    206         /* 送信する。*/
     191        /* 送信する。*/
    207192        NET_COUNT_ICMP6(net_count_icmp6[NC_ICMP6_OUT_OCTETS],
    208193                       output->len - GET_IF_IP6_HDR_SIZE(output));
     
    213198
    214199/*
    215  *  icmp6_echo_request -- エコー要求を受信したときの処理
     200 *  icmp6_echo_request -- エコー要求を受信したときの処理
    216201 */
    217202
     
    231216
    232217        /*
    233          *  IPv6 ヘッダと ICMPv6 ヘッダ間の拡張ヘッダを除去する。
     218         *  IPv6 ヘッダと ICMPv6 ヘッダ間の拡張ヘッダを除去する。
    234219         */
    235220        diff = off - IF_IP6_HDR_SIZE;
    236221        if (diff > 0) {
    237                 /* ICMPv6 ヘッダを前に詰める。*/
     222                /* ICMPv6 ヘッダを前に詰める。*/
    238223                memmove(input->buf + IF_IP6_HDR_SIZE, input->buf + off, input->len - off);
    239224                off = IF_IP6_HDR_SIZE;
    240225
    241                 /* ペイロード長を調整する。*/
     226                /* ペイロード長を調整する。*/
    242227                ip6h->plen  = htons(ntohs(ip6h->plen) - diff);
    243228                input->len -= diff;
     
    252237
    253238        /*
    254          *  メッセージの型をエコー要求 (128) から
    255          *  エコー応答 (129) に変更して送り返す。
     239         *  メッセージの型をエコー要求 (128) から
     240         *  エコー応答 (129) に変更して送り返す。
    256241         */
    257242        icmp6h->type = ICMP6_ECHO_REPLY;
    258243
    259         /* IPv6 ヘッダの発信å
    260 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã¨å®›å
    261 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å
    262 ¥æ›¿ãˆã‚‹ã€‚*/
     244        /* IPv6 ヘッダの発信元アドレスと宛先アドレスを入替える。*/
    263245        memcpy(&dst, &ip6h->dst, sizeof(T_IN6_ADDR));
    264246        memcpy(&ip6h->dst, &ip6h->src, sizeof(T_IN6_ADDR));
     
    266248
    267249        /*
    268          *  å
    269 ƒã®å®›å
    270 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã®å ´åˆã¯ã€
    271          *  宛å
    272 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    273 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    274          *  ネットワークインタフェースから探索して利用する。
     250         *  元の宛先アドレスがマルチキャストの場合は、
     251         *  宛先アドレスにふさわしい送信元アドレスを、
     252         *  ネットワークインタフェースから探索して利用する。
    275253         */
    276254        if (IN6_IS_ADDR_MULTICAST(&dst)) {
     
    283261                }
    284262
    285         /* 次ヘッダとホップリミットを設定する。*/
     263        /* 次ヘッダとホップリミットを設定する。*/
    286264        ip6h->next = IPPROTO_ICMPV6;
    287265        ip6h->hlim = IP6_DEFTTL;
    288266
    289         /* チェックサムを計算する。*/
     267        /* チェックサムを計算する。*/
    290268        icmp6h->sum = 0;
    291269        icmp6h->sum = in6_cksum(input, IPPROTO_ICMPV6, (uint8_t*)icmp6h - input->buf,
    292270                                ntohs(ip6h->plen) - (off - IF_IP6_HDR_SIZE));
    293271
    294         /* 送信する。*/
     272        /* 送信する。*/
    295273        NET_COUNT_ICMP6(net_count_icmp6[NC_ICMP6_OUT_OCTETS],
    296274                       input->len - GET_IF_IP6_HDR_SIZE(input));
     
    302280
    303281/*
    304  *  icmp6_notify_error -- エラーを通知する。
     282 *  icmp6_notify_error -- エラーを通知する。
    305283 */
    306284
     
    314292        len  = input->len - poff;
    315293
    316         /* データグラム長が ICMP6 ヘッダ長 + IP6 ヘッダ長以下なら何もしない。*/
     294        /* データグラム長が ICMP6 ヘッダ長 + IP6 ヘッダ長以下なら何もしない。*/
    317295        if (len < ICMP6_HDR_SIZE + IP6_HDR_SIZE)
    318296                return;
     
    320298        icmp6h = GET_ICMP6_HDR(input, poff);
    321299
    322         /* 最終ヘッダを探索する。*/
     300        /* 最終ヘッダを探索する。*/
    323301        loff = ip6_lasthdr(input, poff + ICMP6_HDR_SIZE, IPPROTO_IPV6, &next);
    324302
    325         /* 最終ヘッダが TCP/UDP のみ対応する。*/
     303        /* 最終ヘッダが TCP/UDP のみ対応する。*/
    326304        if (loff >= 0 && (next == IPPROTO_TCP || next == IPPROTO_UDP)) {
    327305
     
    354332
    355333/*
    356  *  icmp6_mtudisc_update -- Path MTU を更新する。
     334 *  icmp6_mtudisc_update -- Path MTU を更新する。
    357335 */
    358336
     
    379357
    380358/*
    381  *  icmp6_redirect_input -- 向け直しメッセージの処理
     359 *  icmp6_redirect_input -- 向け直しメッセージの処理
    382360 */
    383361
     
    398376
    399377        /*
    400          *  IP ヘッダのチェック、以下の場合は破棄する。
    401          *    ・リンクローカル以外から送られてきたメッセージ
    402          *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
     378         *  IP ヘッダのチェック、以下の場合は破棄する。
     379         *    ・リンクローカル以外から送られてきたメッセージ
     380         *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
    403381         */
    404382        if (!IN6_IS_ADDR_LINKLOCAL(&ip6h->src) || ip6h->hlim != IPV6_MAXHLIM)
     
    407385        rdh  = (T_ND_REDIRECT_HDR *)(input->buf + off);
    408386
    409         /* 向け直しの終点アドレスがマルチキャストアドレスの場合は破棄する。*/
     387        /* 向け直しの終点アドレスがマルチキャストアドレスの場合は破棄する。*/
    410388        if (IN6_IS_ADDR_MULTICAST(&rdh->dst))
    411389                goto err_ret;
    412390
    413         /* ターゲットアドレスが経路表に登録されているかチェックする。*/
     391        /* ターゲットアドレスが経路表に登録されているかチェックする。*/
    414392        if ((gw = in6_rtalloc(ifp, &rdh->dst)) != NULL) {
    415                 /* GW アドレスと送信å
    416 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ãŒç•°ãªã£ã¦ã„れば破棄する。*/
     393                /* GW アドレスと送信元アドレスが異なっていれば破棄する。*/
    417394                if (!IN6_ARE_ADDR_EQUAL(gw, &ip6h->src))
    418395                        goto err_ret;
    419396                }
    420         else    /* 経路表になければ破棄する。*/
     397        else    /* 経路表になければ破棄する。*/
    421398                goto err_ret;
    422399
     
    424401
    425402        /*
    426          *  ターゲットアドレスがリンクローカルアドレスであれば、
    427          *  ターゲットはルータ
     403         *  ターゲットアドレスがリンクローカルアドレスであれば、
     404         *  ターゲットはルータ
    428405         */
    429406        if (IN6_IS_ADDR_LINKLOCAL(&rdh->target))
     
    431408
    432409        /*
    433          *  ターゲットアドレスと終点アドレスが同一であれば、オンリンク
     410         *  ターゲットアドレスと終点アドレスが同一であれば、オンリンク
    434411         */
    435412        if (IN6_ARE_ADDR_EQUAL(&rdh->target, &rdh->dst))
     
    437414               
    438415        /*
    439          *  ルータでも、オンリンクでもなければエラー
     416         *  ルータでも、オンリンクでもなければエラー
    440417         */
    441418        if (!router && !onlink)
    442419                goto err_ret;
    443420
    444         /* 近隣探索オプションのオフセットを記録する。*/
     421        /* 近隣探索オプションのオフセットを記録する。*/
    445422        if (nd6_options(nd_opt_off, input->buf +  off + ND_REDIRECT_HDR_SIZE,
    446423                                    input->len - (off + ND_REDIRECT_HDR_SIZE)) != E_OK)
    447424                goto err_ret;
    448425
    449         /* 近隣探索オプション (向け直しのルータのリンクアドレス) */
     426        /* 近隣探索オプション (向け直しのルータのリンクアドレス) */
    450427        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_TARGET_LINKADDR)]) {
    451428                opth = (T_ND_OPT_HDR *)((uint8_t *)(input->buf + off + ND_REDIRECT_HDR_SIZE) +
    452429                                        nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_TARGET_LINKADDR)] - 8);
    453                 /* 注意: オプションオフセットé
    454 åˆ—には、オフセット + 8 が設定されている。*/
     430                /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/
    455431                lladdr     = (uint8_t *)(opth + 1);
    456432                lladdr_len = (opth->len << 3);
     
    458434
    459435        /*
    460          *  ネットワークインタフェースのアドレス長が一致しなければエラー
     436         *  ネットワークインタフェースのアドレス長が一致しなければエラー
    461437         */
    462438        if (lladdr && lladdr_len != ((sizeof(T_IF_ADDR) + sizeof(T_ND_OPT_HDR) + 7) & ~7))
    463439                goto err_ret;
    464440
    465         /* 向け直しのルータのリンクアドレスを近隣キャッシュに登録する。*/
     441        /* 向け直しのルータのリンクアドレスを近隣キャッシュに登録する。*/
    466442        nd6_cache_lladdr(ifp, &rdh->target, (T_IF_ADDR *)lladdr, ND_REDIRECT,
    467443                         onlink ? ND_REDIRECT_ONLINK : ND_REDIRECT_ROUTER);
    468444
    469         /* ルーティング表に登録する。*/
     445        /* ルーティング表に登録する。*/
    470446        in6_rtredirect(&rdh->target, &rdh->dst, 128, IN_RTF_REDIRECT, TMO_IN_REDIRECT);
    471447
     
    482458
    483459/*
    484  *  icmp6_input -- ICMP6 のå
    485 ¥åŠ›é–¢æ•°
     460 *  icmp6_input -- ICMP6 の入力関数
    486461 */
    487462
     
    500475        NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInMsgs, 1);
    501476
    502         /* ICMP6 ヘッダの長さをチェックする。*/
     477        /* ICMP6 ヘッダの長さをチェックする。*/
    503478        len  = input->len - off;
    504479        if (len < ICMP6_HDR_SIZE) {
     
    511486        icmp6h = GET_ICMP6_HDR(input, off);
    512487
    513         /* チェックサムを計算する。*/
     488        /* チェックサムを計算する。*/
    514489        if ((in6_cksum(input, IPPROTO_ICMPV6, off, ntohs(ip6h->plen) - (off - IF_IP6_HDR_SIZE)) & 0xffff) != 0) {
    515490                NET_COUNT_ICMP6(net_count_icmp6[NC_ICMP6_IN_ERR_PACKETS], 1);
     
    520495        code = icmp6h->code;
    521496
    522         /* メッセージの型により分岐する。*/
     497        /* メッセージの型により分岐する。*/
    523498        switch (icmp6h->type) {
    524499
    525         case ICMP6_DST_UNREACH:                 /* 宛å
    526 ˆåˆ°é”不可能                */
     500        case ICMP6_DST_UNREACH:                 /* 宛先到達不可能              */
    527501                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInDestUnreachs, 1);
    528502                icmp6_notify_error(input, off);
    529503                break;
    530504
    531         case ICMP6_ECHO_REQUEST:                /* エコー要求                      */
     505        case ICMP6_ECHO_REQUEST:                /* エコー要求                        */
    532506                icmp6_echo_request(input, off);
    533507                return IPPROTO_DONE;
    534508                break;
    535509
    536         case ICMP6_ECHO_REPLY:                  /* エコー応答                      */
     510        case ICMP6_ECHO_REPLY:                  /* エコー応答                        */
    537511
    538512#ifdef ICMP_CFG_CALLBACK_ECHO_REPLY
     
    544518                break;
    545519
    546         case ND_ROUTER_ADVERT:                  /* ルータ通知                      */
     520        case ND_ROUTER_ADVERT:                  /* ルータ通知                        */
    547521                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInRouterAdvertisements, 1);
    548522                if (code != 0 || len < ROUTER_ADVERT_HDR_SIZE)
     
    552526                break;
    553527
    554         case ND_NEIGHBOR_SOLICIT:               /* 近隣要請                 */
     528        case ND_NEIGHBOR_SOLICIT:               /* 近隣要請                 */
    555529                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInNeighborSolicits, 1);
    556530                if (code != 0 || len < NEIGHBOR_SOLICIT_HDR_SIZE)
     
    560534                break;
    561535
    562         case ND_NEIGHBOR_ADVERT:                /* 近隣通知                 */
     536        case ND_NEIGHBOR_ADVERT:                /* 近隣通知                 */
    563537                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInNeighborAdvertisements, 1);
    564538                if (code != 0 || len < NEIGHBOR_ADVERT_HDR_SIZE)
     
    568542                break;
    569543
    570         case ND_REDIRECT:                       /* 向け直し                 */
     544        case ND_REDIRECT:                       /* 向け直し                 */
    571545                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInRedirects, 1);
    572546
     
    592566                break;
    593567
    594         case ICMP6_PACKET_TOO_BIG:              /* パケットが大きすぎる。    */
     568        case ICMP6_PACKET_TOO_BIG:              /* パケットが大きすぎる。  */
    595569
    596570#if NUM_IN6_HOSTCACHE_ENTRY > 0
     
    603577                break;
    604578
    605         case ICMP6_TIME_EXCEEDED:               /* TTL をè¶
    606 éŽã—た。            */
     579        case ICMP6_TIME_EXCEEDED:               /* TTL を超過した。           */
    607580                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInTimeExcds, 1);
    608581                break;
    609582
    610         case ICMP6_PARAM_PROB:                  /* IPv6 ヘッダが不正。           */
     583        case ICMP6_PARAM_PROB:                  /* IPv6 ヘッダが不正。         */
    611584                NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInParmProblems, 1);
    612585                break;
    613586
    614         case MLD_LISTENER_QUERY:                /* マルチキャスト受信è€
    615 ç
    616 §ä¼š    */
    617         case MLD_LISTENER_REPORT:               /* マルチキャスト受信è€
    618 å ±å‘Š  */
    619         case MLD_LISTENER_DONE:                 /* マルチキャスト受信è€
    620 çµ‚了  */
    621         case ND_ROUTER_SOLICIT:                 /* ルータ要請                      */
    622         case ICMP6_ROUTER_RENUMBERING:          /* ルータ番号再設定             */
    623         case ICMP6_FQDN_QUERY:                  /* FQDN ç
    624 §ä¼š                    */
    625         case ICMP6_FQDN_REPLY:                  /* FQDN 応答                  */
     587        case MLD_LISTENER_QUERY:                /* マルチキャスト受信者照会 */
     588        case MLD_LISTENER_REPORT:               /* マルチキャスト受信者報告 */
     589        case MLD_LISTENER_DONE:                 /* マルチキャスト受信者終了 */
     590        case ND_ROUTER_SOLICIT:                 /* ルータ要請                        */
     591        case ICMP6_ROUTER_RENUMBERING:          /* ルータ番号再設定             */
     592        case ICMP6_FQDN_QUERY:                  /* FQDN 照会                      */
     593        case ICMP6_FQDN_REPLY:                  /* FQDN 応答                      */
    626594                syslog(LOG_INFO, "[ICMP6] unsupported type: %d.", icmp6h->type);
    627595                break;
     
    640608
    641609/*
    642  *  icmp6_error -- ICMP6 エラー送信関数
     610 *  icmp6_error -- ICMP6 エラー送信関数
    643611 */
    644612
     
    655623
    656624        /*
    657          *  宛å
    658 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã€ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã®å ´åˆã¯ã€
    659          *  以下の条件以外のときは処理を行わない。
     625         *  宛先アドレスが、マルチキャストの場合は、
     626         *  以下の条件以外のときは処理を行わない。
    660627         *
    661          *    ・データグラムが大きすぎる。
    662          *    ・IPv6 ヘッダの不正で、オプションが認識できない。
     628         *    ・データグラムが大きすぎる。
     629         *    ・IPv6 ヘッダの不正で、オプションが認識できない。
    663630         */
    664631        if (IN6_IS_ADDR_MULTICAST(&ip6h->dst) &&
     
    668635
    669636        /*
    670          *  始点アドレスが、以下の場合は処理を行わない。
     637         *  始点アドレスが、以下の場合は処理を行わない。
    671638         *
    672          *    ・無指定
    673          *    ・マルチキャスト
     639         *    ・無指定
     640         *    ・マルチキャスト
    674641         */
    675642        if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src) ||
     
    677644                goto buf_rel;
    678645
    679         /* 最後のヘッダを探索する。*/
     646        /* 最後のヘッダを探索する。*/
    680647        off = ip6_lasthdr(input, 0, IPPROTO_IPV6, &next);
    681648
    682649        /*
    683          *  タイプが、エラーか向け直しの ICMP6 パケットのエラーには返答しない。
     650         *  タイプが、エラーか向け直しの ICMP6 パケットのエラーには返答しない。
    684651         */
    685652        if (off >= 0 && next == IPPROTO_ICMPV6) {
     
    695662                }
    696663
    697         /* DoS 攻撃に対する防御は未実è£
    698  */
    699 
    700         /*
    701          *  送り返すメッセージ長を、ICMPv6 の最大ペイロード長に調整する。
     664        /* DoS 攻撃に対する防御は未実装 */
     665
     666        /*
     667         *  送り返すメッセージ長を、ICMPv6 の最大ペイロード長に調整する。
    702668         *  IPV6_MMTU - (IP6_HDR_SIZE + ICMP6_HDR_SIZE)
    703669         */
     
    707673                len = input->len - IF_HDR_SIZE;
    708674
    709         /* 送信用のネットワークバッファを獲得する。*/
     675        /* 送信用のネットワークバッファを獲得する。*/
    710676        if (in6_get_datagram(&output, len + ICMP6_HDR_SIZE, 0,
    711677                             &ip6h->src, &in6_addr_unspecified,
     
    714680                goto buf_rel;
    715681
    716         /* ICMP6 ヘッダを設定する。*/
     682        /* ICMP6 ヘッダを設定する。*/
    717683        icmp6h = GET_ICMP6_HDR(output, IF_IP6_ICMP6_HDR_OFFSET);
    718684        icmp6h->type       = type;
     
    720686        icmp6h->icmp6_pptr = htonl(param);
    721687 
    722         /* エラーデータを設定する。*/
     688        /* エラーデータを設定する。*/
    723689        memcpy(GET_ICMP6_SDU(output, IF_IP6_ICMP6_HDR_OFFSET), (uint8_t *)ip6h, len);
    724690
     
    741707#endif  /* of #ifdef SUPPORT_MIB */
    742708
    743         /* 送信する。*/
     709        /* 送信する。*/
    744710        icmp6_output(output, IF_IP6_HDR_SIZE);
    745711
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    117105
    118106/*
    119  *  ether_map_ipv6_multicast -- IPv6 マルチキャストアドレスからイーサネット・マルチキャストアドレスへの変換
     107 *  ether_map_ipv6_multicast -- IPv6 マルチキャストアドレスからイーサネット・マルチキャストアドレスへの変換
    120108 */
    121109
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8169
    8270/*
    83  *  関数
     71 *  関数
    8472 */
    8573
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
    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$
     
    156144
    157145/*
    158  *  å
    159 ¨åŸŸå¤‰æ•°
     146 *  全域変数
    160147 */
    161148
     
    170157
    171158/*
    172  *  in6_addmulti -- マルチキャストアドレスを登録する。
     159 *  in6_addmulti -- マルチキャストアドレスを登録する。
    173160 */
    174161
     
    185172
    186173/*
    187  *  in6_ifinit -- インタフェースにアドレスæƒ
    188 å ±ã‚’設定し、初期化する。
     174 *  in6_ifinit -- インタフェースにアドレス情報を設定し、初期化する。
    189175 */
    190176
     
    192178in6_ifinit (T_IFNET *ifp, T_IN6_IFADDR *ia, const T_IN6_ADDR *addr, uint_t prefix_len)
    193179{
    194         /* アドレスとプレフィックス長を設定する。*/
     180        /* アドレスとプレフィックス長を設定する。*/
    195181        ia->addr       = *addr;
    196182        ia->prefix_len = prefix_len;
    197183
    198         /* フラグを初期化する。*/
     184        /* フラグを初期化する。*/
    199185        ia->flags = 0;
    200186
    201187        /*
    202          *  初めてアドレスが設定されたとき、インタフェース独自の初期化を行う。
     188         *  初めてアドレスが設定されたとき、インタフェース独自の初期化を行う。
    203189         */
    204190
     
    207193
    208194/*
    209  *  in6_ifainit -- インタフェースアドレス構造体の初期化
     195 *  in6_ifainit -- インタフェースアドレス構造体の初期化
    210196 */
    211197
     
    226212
    227213/*
    228  *  in6_if2idlen -- インタフェース ID 長を返す。
     214 *  in6_if2idlen -- インタフェース ID 長を返す。
    229215 */
    230216
     
    240226
    241227/*
    242  *  in6_addr2ifaix -- アドレスからインタフェースアドレスæƒ
    243 å ±ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã«å¤‰æ›ã™ã‚‹ã€‚
     228 *  in6_addr2ifaix -- アドレスからインタフェースアドレス情報のインデックスに変換する。
    244229 */
    245230
     
    262247
    263248/*
    264  *  in6_addr2maix -- アドレスからマルチキャストアドレスのインデックスに変換する。
     249 *  in6_addr2maix -- アドレスからマルチキャストアドレスのインデックスに変換する。
    265250 */
    266251
     
    283268
    284269/*
    285  *  in6_update_ifa -- インタフェースのアドレスæƒ
    286 å ±ã‚’更新する。
     270 *  in6_update_ifa -- インタフェースのアドレス情報を更新する。
    287271 */
    288272
     
    296280        SYSTIM          now;
    297281
    298         /* 引数をチェックする。*/
     282        /* 引数をチェックする。*/
    299283        if (addr == NULL)
    300284                return E_PAR;
    301285
    302286        /*
    303          *  有効時間をチェックする。
    304          *  vltime (有効時間) と pltime (推奨有効時間) の単位は [s]。
     287         *  有効時間をチェックする。
     288         *  vltime (有効時間) と pltime (推奨有効時間) の単位は [s]。
    305289         */
    306290        syscall(get_tim(&now));
     
    313297                return E_PAR;
    314298
    315         /* インタフェースを初期化する。*/
     299        /* インタフェースを初期化する。*/
    316300        if ((error = in6_ifinit(ifp, ia, addr, prefix_len)) != E_OK)
    317301                return error;
     
    319303        if (IN6_IS_ADDR_LINKLOCAL(addr)) {
    320304
    321                 /* 要請マルチキャストアドレスを登録する。*/
     305                /* 要請マルチキャストアドレスを登録する。*/
    322306                llsol.s6_addr32[0] = IPV6_ADDR_INT32_MLL;
    323307                llsol.s6_addr32[1] = 0x00000000;
     
    328312                        return error;
    329313
    330                 /* å
    331 ¨ãƒŽãƒ¼ãƒ‰ãƒ»ãƒªãƒ³ã‚¯ãƒ­ãƒ¼ã‚«ãƒ«ãƒ»ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’登録する。*/
     314                /* 全ノード・リンクローカル・マルチキャストアドレスを登録する。*/
    332315                llsol.s6_addr32[2] = 0x00000000;
    333316                llsol.s6_addr32[3] = IPV6_ADDR_INT32_ONE;
     
    337320                }
    338321
    339         /* ルータインデックスを設定する。*/
     322        /* ルータインデックスを設定する。*/
    340323        ia->router_index = router_index;
    341324
    342         /* プレフィックスインデックスを設定する。*/
     325        /* プレフィックスインデックスを設定する。*/
    343326        ia->prefix_index = prefix_index;
    344327
    345         /* フラグを設定する。*/
     328        /* フラグを設定する。*/
    346329        ia->flags  = flags & ~(IN6_IFF_DUPLICATED | IN6_IFF_NODAD);
    347330        ia->flags |= IN6_IFF_DEFINED;
    348331
    349332        /*
    350          *  アドレス有効時間を設定する。
    351          *  vltime (有効時間) と pltime (推奨有効時間) の単位は [s]。
     333         *  アドレス有効時間を設定する。
     334         *  vltime (有効時間) と pltime (推奨有効時間) の単位は [s]。
    352335         */
    353336        syscall(get_tim(&now));
     
    366349                ia->lifetime.preferred = 0;
    367350
    368         /* 近隣探索の初期設定を行う。*/
     351        /* 近隣探索の初期設定を行う。*/
    369352        nd6_ifattach(ifp);
    370353
    371         /* 重複アドレス検出を行う。*/
     354        /* 重複アドレス検出を行う。*/
    372355        if ((flags & IN6_IFF_NODAD) == 0) {
    373356                ia->flags |= IN6_IFF_TENTATIVE;
     
    379362
    380363/*
    381  * in6ifa_ifpwithix -- インデックス番号から、ネットワークインタフェースに
    382  *                     å‰²ã‚Šå½“てられているアドレスを探索する。
     364 * in6ifa_ifpwithix -- インデックス番号から、ネットワークインタフェースに
     365 *                     割り当てられているアドレスを探索する。
    383366 */
    384367
     
    390373
    391374/*
    392  * in6ifa_ifpwithrtrix -- ルータのインデックス番号から、ネットワークインタフェースに
    393  *                        割り当てられているアドレスを探索する。
     375 * in6ifa_ifpwithrtrix -- ルータのインデックス番号から、ネットワークインタフェースに
     376 *                        割り当てられているアドレスを探索する。
    394377 */
    395378
     
    406389
    407390/*
    408  * in6_ifawithifp -- 宛å
    409 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    410 ƒã‚¢ãƒ‰ãƒ¬ã‚¹æƒ
    411 å ±ã‚’、
    412  *                   ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã‹ã‚‰æŽ¢ç´¢ã™ã‚‹ã€‚
     391 * in6_ifawithifp -- 宛先アドレスにふさわしい送信元アドレス情報を、
     392 *                   ネットワークインタフェースから探索する。
    413393 */
    414394
     
    419399        int_t   ix;
    420400
    421         /* 宛å
    422 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¨åŒã˜ã‚¹ã‚³ãƒ¼ãƒ—のアドレスを返す。*/
     401        /* 宛先アドレスと同じスコープのアドレスを返す。*/
    423402        if ((ix = in6_addr2ifaix(dst)) != IPV6_IFADDR_IX_INVALID)
    424403                return &ifp->in6_ifaddrs[ix];
     
    440419
    441420/*
    442  * in6_addrwithifp -- 宛å
    443 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    444 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    445  *                    ネットワークインタフェースから探索する。
     421 * in6_addrwithifp -- 宛先アドレスにふさわしい送信元アドレスを、
     422 *                    ネットワークインタフェースから探索する。
    446423 */
    447424
     
    460437
    461438/*
    462  * in6_if_up -- インタフェース起動後の重複アドレス検出を行う。
     439 * in6_if_up -- インタフェース起動後の重複アドレス検出を行う。
    463440 */
    464441
     
    466443in6_if_up (T_IFNET *ifp)
    467444{
    468 #if 0                                           /* 保留 */
     445#if 0                                           /* 保留 */
    469446        int_t dad_delay, ix;
    470447#endif  /* of #if 0 */
     
    472449        in6_ifattach(ifp);
    473450
    474 #if 0                                           /* 保留 */
    475         /* 重複アドレス検出を行う。*/
     451#if 0                                           /* 保留 */
     452        /* 重複アドレス検出を行う。*/
    476453        dad_delay = 0;
    477454        for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; )
     
    483460#if NUM_ND6_RTR_SOL_RETRY > 0
    484461
    485         /* ルータ要請を出力する。*/
     462        /* ルータ要請を出力する。*/
    486463        nd6_rtrsol_ctl();
    487464
     
    490467
    491468/*
    492  *  in6_are_prefix_equal -- プレフィックスが同一か調べる。
     469 *  in6_are_prefix_equal -- プレフィックスが同一か調べる。
    493470 */
    494471
     
    511488
    512489/*
    513  *  in6_ifaddr_timer -- ネットワークインタフェースのアドレスの管理タイマー
     490 *  in6_ifaddr_timer -- ネットワークインタフェースのアドレスの管理タイマー
    514491 */
    515492
     
    530507
    531508                        /*
    532                          *  有効時間を過ぎたので削除する。
     509                         *  有効時間を過ぎたので削除する。
    533510                         */
    534511                        ia->flags &= ~IN6_IFF_DEFINED;
     
    538515
    539516                        /*
    540                          *  推奨有効時間を過ぎたので非推奨にする。
     517                         *  推奨有効時間を過ぎたので非推奨にする。
    541518                         */
    542519                        ia->flags |= IN6_IFF_DEPRECATED;
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
    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 アドレス構造
    118  *
    119  *    RFC4291(RFC1884、RFC2373、RFC3513 のアップデート)
    120  */
    121 
    122 /*
    123  *  IPv6 アドレス
     105 *  IPv6 アドレス構造
     106 *
     107 *    RFC4291(RFC1884、RFC2373、RFC3513 のアップデート)
     108 */
     109
     110/*
     111 *  IPv6 アドレス
    124112 */
    125113
     
    146134
    147135/*
    148  *  IPv6 アドレスの初期化データ
     136 *  IPv6 アドレスの初期化データ
    149137 */
    150138
     
    168156
    169157/*
    170  *  特別なアドレスのチェック
    171  */
    172 
    173 /* 無指定 */
     158 *  特別なアドレスのチェック
     159 */
     160
     161/* 無指定 */
    174162
    175163#define IN6_IS_ADDR_UNSPECIFIED(a)      \
    176164        (memcmp((void *)(a), (void *)&in6_addr_unspecified, sizeof(T_IN6_ADDR)) == 0)
    177165
    178 /* ループバック */
     166/* ループバック */
    179167
    180168#define IN6_IS_ADDR_LOOPBACK(a)         \
     
    183171
    184172/*
    185  *  スコープ ID
     173 *  スコープ ID
    186174 */
    187175
     
    193181
    194182/*
    195  *  ユニキャスト・スコープ
    196  *
    197  *  注意: 上位 10 ビットのみチェックしなければならない。RFC2373 参ç
    198 §
    199  */
    200 
    201 /* リンクローカル */
     183 *  ユニキャスト・スコープ
     184 *
     185 *  注意: 上位 10 ビットのみチェックしなければならない。RFC2373 参照
     186 */
     187
     188/* リンクローカル */
    202189
    203190#define IN6_IS_ADDR_LINKLOCAL(a)        \
    204191        (((a)->s6_addr8[0] == UINT_C(0xfe)) && (((a)->s6_addr8[1] & UINT_C(0xc0)) == UINT_C(0x80)))
    205192
    206 /* サイトローカル */
     193/* サイトローカル */
    207194
    208195#define IN6_IS_ADDR_SITELOCAL(a)        \
    209196        (((a)->s6_addr8[0] == UINT_C(0xfe)) && (((a)->s6_addr8[1] & UINT_C(0xc0)) == UINT_C(0xc0)))
    210197
    211 /* 集約可能ユニキャスト (グローバル) */
     198/* 集約可能ユニキャスト (グローバル) */
    212199
    213200#define IN6_IS_ADDR_AGGREGATE_UNICAST(a)        \
     
    215202
    216203/*
    217  *  マルチキャスト
     204 *  マルチキャスト
    218205 */
    219206
     
    221208
    222209/*
    223  *  同一のチェック
     210 *  同一のチェック
    224211 */
    225212
     
    227214
    228215/*
    229  *  経路制御用定義
    230  */
    231 
    232 #define IPV6_RTHDR_TYPE_0               UINT_C(0)       /* IPv6 経路制御ヘッダタイプ 0        */
    233 
    234 /*
    235  *  規定値と制限値
    236  */
    237 
    238 #define IPV6_DEFAULT_MULTICAST_HOPS     1       /* マルチキャスト時のホップリミットの規定値 */
    239 #define ND6_INFINITE_LIFETIME           0xffffffff      /* アドレスの無制限有効時間         */
    240 
    241 /*
    242  *  ITRON TCP/IPv6 アドレス/ポート番号の定義
     216 *  経路制御用定義
     217 */
     218
     219#define IPV6_RTHDR_TYPE_0               UINT_C(0)       /* IPv6 経路制御ヘッダタイプ 0    */
     220
     221/*
     222 *  規定値と制限値
     223 */
     224
     225#define IPV6_DEFAULT_MULTICAST_HOPS     1       /* マルチキャスト時のホップリミットの規定値 */
     226#define ND6_INFINITE_LIFETIME           0xffffffff      /* アドレスの無制限有効時間         */
     227
     228/*
     229 *  ITRON TCP/IPv6 アドレス/ポート番号の定義
    243230 */
    244231
    245232typedef struct t_ipv6ep {
    246         T_IN6_ADDR      ipaddr;         /* IPv6 アドレス    */
    247         uint16_t        portno;         /* ポート番号      */
     233        T_IN6_ADDR      ipaddr;         /* IPv6 アドレス    */
     234        uint16_t        portno;         /* ポート番号        */
    248235        } T_IPV6EP;
    249236
     
    251238
    252239/*
    253  *  ITRON/TCP/IP 用 IP アドレスの定義
     240 *  ITRON/TCP/IP 用 IP アドレスの定義
    254241 */
    255242
     
    257244
    258245/*
    259  *  動的生成用 IPv6 TCP 受付口
     246 *  動的生成用 IPv6 TCP 受付口
    260247 */
    261248
    262249typedef struct t_tcp6_crep {
    263         /* 標準 */
    264         ATR             repatr;         /* 受付口属性              */
    265         T_IPV6EP        myaddr;         /* 自分のアドレス        */
    266         /* 実è£
    267 ä¾å­˜ */
     250        /* 標準 */
     251        ATR             repatr;         /* 受付口属性                */
     252        T_IPV6EP        myaddr;         /* 自分のアドレス      */
     253        /* 実装依存 */
    268254        } T_TCP6_CREP;
    269255
    270256/*
    271  *  動的生成用 IPv6 UDP 通信端点
     257 *  動的生成用 IPv6 UDP 通信端点
    272258 */
    273259
    274260typedef struct t_udp6_ccep {
    275         /* 標準 */
    276         ATR             cepatr;         /* UDP 通信端点属性               */
    277         T_IPV6EP        myaddr;         /* 自分のアドレス                */
    278         FP              callback;       /* コールバック関数             */
    279         /* 実è£
    280 ä¾å­˜ */
     261        /* 標準 */
     262        ATR             cepatr;         /* UDP 通信端点属性           */
     263        T_IPV6EP        myaddr;         /* 自分のアドレス              */
     264        FP              callback;       /* コールバック関数             */
     265        /* 実装依存 */
    281266        } T_UDP6_CCEP;
    282267
    283268/*
    284  *  前方参ç
    285 §
     269 *  前方参照
    286270 */
    287271
     
    295279
    296280/*
    297  *  å
    298 ¨åŸŸå¤‰æ•°
     281 *  全域変数
    299282 */
    300283
     
    306289
    307290/*
    308  *  TINET 独自 API
     291 *  TINET 独自 API
    309292 */
    310293
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
    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$
     
    114102
    115103/*
    116  * EUI64 の定義
     104 * EUI64 の定義
    117105 */
    118106
     
    122110
    123111/*
    124  * get_mac6_ifid -- MAC (6 オクテット) アドレスで、インタフェース識別子を設定する。
     112 * get_mac6_ifid -- MAC (6 オクテット) アドレスで、インタフェース識別子を設定する。
    125113 */
    126114
     
    145133
    146134/*
    147  * get_rand_ifid -- 乱数により、インタフェース識別子を設定する。
     135 * get_rand_ifid -- 乱数により、インタフェース識別子を設定する。
    148136 */
    149137
     
    159147
    160148/*
    161  *  in6_ifattach_linklocal -- インタフェースにリンクローカル・アドレスを割り当てる。
     149 *  in6_ifattach_linklocal -- インタフェースにリンクローカル・アドレスを割り当てる。
    162150 */
    163151
     
    169157
    170158        /*
    171          *  リンクローカル・プレフィックス fe80::/64 を設定する。
     159         *  リンクローカル・プレフィックス fe80::/64 を設定する。
    172160         */
    173161        addr.s6_addr32[0] = IPV6_ADDR_INT32_ULL;
    174162        addr.s6_addr32[1] = ULONG_C(0);
    175163
    176         /* インタフェース識別子を設定する。*/
     164        /* インタフェース識別子を設定する。*/
    177165        if ((error = IF_IN6_IFID(ifp, &addr)) != E_OK)
    178166                return error;
    179167
    180         /* インタフェースのアドレスæƒ
    181 å ±ã‚’更新する。*/
     168        /* インタフェースのアドレス情報を更新する。*/
    182169        if ((error = in6_update_ifa(ifp, &ifp->in6_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL],
    183170                                    &addr, 64, ND6_INFINITE_LIFETIME,
     
    192179
    193180/*
    194  *  in6_ifattach -- インタフェースにアドレスを割り当てる。
     181 *  in6_ifattach -- インタフェースにアドレスを割り当てる。
    195182 */
    196183
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8068
    8169/*
    82  *  関数
     70 *  関数
    8371 */
    8472
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    4836
    4937/*
    50  *  TCP/IPv6 プロトコルスタックå†
    51 éƒ¨åã®ãƒªãƒãƒ¼ãƒ 
     38 *  TCP/IPv6 プロトコルスタック内部名のリネーム
    5239 */
    5340
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
    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$
     
    150138
    151139/*
    152  *  in6_make_ipv4mapped -- IPv4 射影アドレスを生成する。
    153  *
    154  *  注意:
    155  *    src はホストバイトオーダー
     140 *  in6_make_ipv4mapped -- IPv4 射影アドレスを生成する。
     141 *
     142 *  注意:
     143 *    src はホストバイトオーダー
    156144 *
    157145 */
     
    173161
    174162/*
    175  *  in6_rtinit -- ルーティング表を初期化する。
     163 *  in6_rtinit -- ルーティング表を初期化する。
    176164 */
    177165
     
    189177
    190178/*
    191  *  in6_rtnewentry -- 新しいエントリを獲得する。
     179 *  in6_rtnewentry -- 新しいエントリを獲得する。
    192180 */
    193181
     
    199187        int_t           ix;
    200188
    201         /* 空きエントリを探す。*/
     189        /* 空きエントリを探す。*/
    202190        for (ix = NUM_IN6_STATIC_ROUTE_ENTRY; ix < NUM_IN6_ROUTE_ENTRY; ix ++) {
    203191                rt = &routing6_tbl[ix];
     
    208196                }
    209197
    210         /* expire の単位は [s]。*/
     198        /* expire の単位は [s]。*/
    211199        syscall(get_tim(&now));
    212200        now /= SYSTIM_HZ;
    213201
    214202        if (frt == NULL) {
    215                 /* 空きがなければ、有効時間がもっとも短いエントリを空きにする。*/
     203                /* 空きがなければ、有効時間がもっとも短いエントリを空きにする。*/
    216204                T_IN6_RTENTRY   *srt = NULL;
    217205                int_t           diff, sdiff = INT_MAX;
     
    222210                        diff = (int_t)(rt->expire - now);
    223211                        if (diff <= 0) {        /* rt->expire <= now */
    224                                 /* 既に、有効時間が過ぎている。*/
     212                                /* 既に、有効時間が過ぎている。*/
    225213                                frt = rt;
    226214                                break;
     
    243231
    244232/*
    245  *  in6_rttimer -- ルーティング表の管理タイマー
     233 *  in6_rttimer -- ルーティング表の管理タイマー
    246234 */
    247235
     
    252240        int_t   ix;
    253241
    254         /* expire の単位は [s]。*/
     242        /* expire の単位は [s]。*/
    255243        syscall(get_tim(&now));
    256244        now /= SYSTIM_HZ;
     
    269257
    270258/*
    271  *  ホストキャッシュ
     259 *  ホストキャッシュ
    272260 */
    273261
     
    277265
    278266/*
    279  *  in6_lookup_ifaddr -- ネットワークインタフェースに割り当てられているアドレスを探索する。
     267 *  in6_lookup_ifaddr -- ネットワークインタフェースに割り当てられているアドレスを探索する。
    280268 */
    281269
     
    294282
    295283/*
    296  *  in6_lookup_multi -- ネットワークインタフェースのマルチキャストアドレスを検索する。
     284 *  in6_lookup_multi -- ネットワークインタフェースのマルチキャストアドレスを検索する。
    297285 */
    298286
     
    309297
    310298/*
    311  *  in6_set_header -- IPv6 ヘッダを設定する。
     299 *  in6_set_header -- IPv6 ヘッダを設定する。
    312300 */
    313301
     
    322310
    323311        /*
    324          *  宛å
    325 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    326 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    327          *  ネットワークインタフェースから探索して利用する。
     312         *  宛先アドレスにふさわしい送信元アドレスを、
     313         *  ネットワークインタフェースから探索して利用する。
    328314         */
    329315        if (srcaddr == NULL || !IN6_IS_ADDR_UNSPECIFIED(srcaddr))
     
    334320                srcaddr = &ia->addr;
    335321
    336         /* IPv6 ヘッダを設定する。*/
     322        /* IPv6 ヘッダを設定する。*/
    337323        ip6h            = GET_IP6_HDR(nbuf);
    338324        ip6h->vcf       = htonl(IP6_MAKE_VCF(IPV6_VERSION, 0));
     
    355341
    356342/*
    357  *  in6_get_datagram -- IPv6 データグラムを獲得し、ヘッダを設定する。
     343 *  in6_get_datagram -- IPv6 データグラムを獲得し、ヘッダを設定する。
    358344 */
    359345
     
    366352        uint_t          align;
    367353
    368         /* データ長は 4 オクテット境界に調整する。    */
     354        /* データ長は 4 オクテット境界に調整する。        */
    369355        align = (len + 3) >> 2 << 2;
    370356
    371         /* ネットワークバッファを獲得する。     */
     357        /* ネットワークバッファを獲得する。     */
    372358        if ((error = tget_net_buf_ex(nbuf, IF_IP6_HDR_SIZE + align,
    373359                                           IF_IP6_HDR_SIZE + maxlen, nbatr, tmout)) != E_OK)
     
    375361
    376362        /*
    377          *  より大きなサイズのネットワークバッファを獲得する場合のみ長さを調整する。
    378          *  より小さなサイズのネットワークバッファの獲得は、送信ウィンドバッファの
    379          *  省コピー機能で使用され、実際に送信するまで、データサイズは決定できない。
     363         *  より大きなサイズのネットワークバッファを獲得する場合のみ長さを調整する。
     364         *  より小さなサイズのネットワークバッファの獲得は、送信ウィンドバッファの
     365         *  省コピー機能で使用され、実際に送信するまで、データサイズは決定できない。
    380366         */
    381367        if ((nbatr & NBA_SEARCH_ASCENT) != 0)
    382368                (*nbuf)->len = IF_IP6_HDR_SIZE + len;
    383369
    384         /* IPv6 ヘッダを設定する。*/
     370        /* IPv6 ヘッダを設定する。*/
    385371        if ((error = in6_set_header(*nbuf, len, dstaddr, srcaddr, next, hlim)) != E_OK) {
    386372                syscall(rel_net_buf(*nbuf));
     
    389375                }
    390376
    391         /* 4 オクテット境界までパディングで埋める。*/
     377        /* 4 オクテット境界までパディングで埋める。*/
    392378        if (align > len)
    393379                memset(GET_IP6_SDU(*nbuf) + len, 0, align - len);
     
    397383
    398384/*
    399  *  in6_get_maxnum_ifaddr -- インタフェースに設定可能な最大アドレス数を返す。
     385 *  in6_get_maxnum_ifaddr -- インタフェースに設定可能な最大アドレス数を返す。
    400386 */
    401387
     
    407393
    408394/*
    409  *  in6_get_ifaddr -- インタフェースに設定されているアドレスを返す。
     395 *  in6_get_ifaddr -- インタフェースに設定されているアドレスを返す。
    410396 */
    411397
     
    423409
    424410/*
    425  *  ipv62str -- IPv6 アドレスを文字列に変換する。
     411 *  ipv62str -- IPv6 アドレスを文字列に変換する。
    426412 */
    427413
     
    493479
    494480/*
    495  *  in6_cksum -- IPv6 のトランスポート層ヘッダのチェックサムを計算する。
    496  *
    497  *  注意: 戻り値はネットワークバイトオーダ
     481 *  in6_cksum -- IPv6 のトランスポート層ヘッダのチェックサムを計算する。
     482 *
     483 *  注意: 戻り値はネットワークバイトオーダ
    498484 */
    499485
     
    504490        uint_t          align;
    505491
    506         /* 4 オクテット境界のデータ長 */
     492        /* 4 オクテット境界のデータ長 */
    507493        align = (len + 3) >> 2 << 2;
    508494
    509         /* 4 オクテット境界までパディングで埋める。*/
     495        /* 4 オクテット境界までパディングで埋める。*/
    510496        if (align > len)
    511497                memset((uint8_t*)nbuf->buf + off + len, 0, align - len);
     
    520506
    521507/*
    522  *  get_ip6_hdr_size -- 拡張ヘッダも含めた IPv6 ヘッダ長を返す。
     508 *  get_ip6_hdr_size -- 拡張ヘッダも含めた IPv6 ヘッダ長を返す。
    523509 */
    524510
     
    533519        while (1) {
    534520                next = *hdr;
    535                 if (curr ==IPPROTO_NONE)                /* 次ヘッダ無し                   */
     521                if (curr ==IPPROTO_NONE)                /* 次ヘッダ無し                       */
    536522                        break;
    537                 else if (curr == IPPROTO_FRAGMENT)      /* 断片化                    */
     523                else if (curr == IPPROTO_FRAGMENT)      /* 断片化                  */
    538524                        hsize = sizeof(T_IP6_FRAG_HDR);
    539                 else if (curr == IPPROTO_AH)            /* IPv6 認証                  */
     525                else if (curr == IPPROTO_AH)            /* IPv6 認証                      */
    540526                        hsize = (((T_IP6_AH_HDR *)hdr)->len + 2) * 4;
    541                 else if (curr == IPPROTO_HOPOPTS ||     /* 中継点 (Hop-by-Hop) オプション       */
    542                          curr == IPPROTO_DSTOPTS ||     /* IPv6 終点オプション           */
    543                          curr == IPPROTO_ROUTING)       /* 経路制御                 */
     527                else if (curr == IPPROTO_HOPOPTS ||     /* 中継点 (Hop-by-Hop) オプション       */
     528                         curr == IPPROTO_DSTOPTS ||     /* IPv6 終点オプション         */
     529                         curr == IPPROTO_ROUTING)       /* 経路制御                 */
    544530                        hsize = (((T_IP6_EXT_HDR *)hdr)->len + 1) * 8;
    545531                else
     
    553539
    554540/*
    555  *  in6_plen2pmask -- プレフィックス長からマスクを生成する。
     541 *  in6_plen2pmask -- プレフィックス長からマスクを生成する。
    556542 */
    557543
     
    571557
    572558/*
    573  *  in6_rtalloc -- ルーティング表を探索する。
     559 *  in6_rtalloc -- ルーティング表を探索する。
    574560 */
    575561
     
    585571
    586572                /*
    587                  *  サイトローカルアドレスか集約可能(グローバル)アドレスの場合は、
    588                  *  同一リンクå†
    589 ã®ãƒŽãƒ¼ãƒ‰ã§ã‚るかをチェックする。
     573                 *  サイトローカルアドレスか集約可能(グローバル)アドレスの場合は、
     574                 *  同一リンク内のノードであるかをチェックする。
    590575                 */
    591576
     
    593578                now /= SYSTIM_HZ;
    594579
    595                 /* 推奨有効時間å†
    596 ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’探索する。*/
     580                /* 推奨有効時間内のアドレスを探索する。*/
    597581                for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
    598582                        ia = &ifp->in6_ifaddrs[ix];
     
    605589                        }
    606590
    607                 /* 有効時間å†
    608 ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’探索する。*/
     591                /* 有効時間内のアドレスを探索する。*/
    609592                for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
    610593                        ia = &ifp->in6_ifaddrs[ix];
     
    617600
    618601                /*
    619                  *  プレフィックスを探索する。
     602                 *  プレフィックスを探索する。
    620603                 */
    621604                if (nd6_onlink_prefix_lookup (dst) != NULL)
     
    623606
    624607                /*
    625                  *  静的経路表を探索する。
     608                 *  静的経路表を探索する。
    626609                 */
    627610
     
    635618
    636619                                /*
    637                                  *  向け直しによるエントリは、有効時間が切れる時刻を延長する。
    638                                  *  expire の単位は [s]。
    639                                  *  TMO_IN_REDIRECT の単位は [ms]。
     620                                 *  向け直しによるエントリは、有効時間が切れる時刻を延長する。
     621                                 *  expire の単位は [s]。
     622                                 *  TMO_IN_REDIRECT の単位は [ms]。
    640623                                 */
    641624                                if (ix > NUM_IN6_STATIC_ROUTE_ENTRY) {
     
    655638
    656639                /*
    657                  *  ディフォルトルータ・リストを探索する。
     640                 *  ディフォルトルータ・リストを探索する。
    658641                 */
    659642                return nd6_router_lookup();
     
    664647
    665648/*
    666  *  in6_gateway_lookup -- ルーティング表のルータを探索する。
     649 *  in6_gateway_lookup -- ルーティング表のルータを探索する。
    667650 */
    668651
     
    680663
    681664/*
    682  *  in6_rtredirect -- ルーティング表にエントリを登録する。
    683  *
    684  *    注意: 引数 tmo の単位は [us]。
     665 *  in6_rtredirect -- ルーティング表にエントリを登録する。
     666 *
     667 *    注意: 引数 tmo の単位は [us]。
    685668 */
    686669
     
    701684
    702685/*
    703  *  in6_hostcache_lookup -- IPv6 ホストキャッシュを探索する。
     686 *  in6_hostcache_lookup -- IPv6 ホストキャッシュを探索する。
    704687 */
    705688
     
    717700
    718701/*
    719  *  in6_hostcache_update -- IPv6 ホストキャッシュを更新する。
     702 *  in6_hostcache_update -- IPv6 ホストキャッシュを更新する。
    720703 */
    721704
     
    729712        syscall(get_tim(&now));
    730713
    731         /* 既に登録されているか探索する。*/
     714        /* 既に登録されているか探索する。*/
    732715        if ((hc = in6_hostcache_lookup (dst)) == NULL) {
    733716
    734                 /* 空きのホストキャッシュを探す。*/
     717                /* 空きのホストキャッシュを探す。*/
    735718                for (ix = NUM_IN6_HOSTCACHE_ENTRY; ix -- > 0; ) {
    736719                        if (IN6_IS_HOSTCACHE_FREE(&in6_hostcache[ix]))
     
    740723                if (ix < 0) {
    741724                        /*
    742                          *  空きが無い時は、有効時間の切れる時間が、
    743                          *  最も短いホストキャッシュを置換する。
     725                         *  空きが無い時は、有効時間の切れる時間が、
     726                         *  最も短いホストキャッシュを置換する。
    744727                         */
    745728                        old = now - 1;
     
    761744
    762745                /*
    763                  *  既に登録されていて、新しい MTU が、登録されている MTU より大きいとき、
    764                  *  IN6_HOSTCACHE_INCREASE(推奨 10 分)間は更新しない。
     746                 *  既に登録されていて、新しい MTU が、登録されている MTU より大きいとき、
     747                 *  IN6_HOSTCACHE_INCREASE(推奨 10 分)間は更新しない。
    765748                 */
    766749                return;
     
    772755
    773756/*
    774  *  in6_hostcache_getmtu -- IPv6 ホストキャッシュをから MTU を取得する。
    775  *
    776  *    戻り値が 0 であれば、ホストキャッシュに登録されていない。
     757 *  in6_hostcache_getmtu -- IPv6 ホストキャッシュをから MTU を取得する。
     758 *
     759 *    戻り値が 0 であれば、ホストキャッシュに登録されていない。
    777760 */
    778761
     
    782765        T_IN6_HOSTCACHE_ENTRY   *hc;
    783766
    784         /* 既に登録されているか探索する。*/
     767        /* 既に登録されているか探索する。*/
    785768        if ((hc = in6_hostcache_lookup(dst)) == NULL)
    786769                return 0;
     
    790773
    791774/*
    792  *  in6_hostcache_timer -- IPv6 ホストキャッシュ更新タイマー
    793  *
    794  *    1秒周期で起動される。
     775 *  in6_hostcache_timer -- IPv6 ホストキャッシュ更新タイマー
     776 *
     777 *    1秒周期で起動される。
    795778 */
    796779
     
    812795
    813796/*
    814  *  in6_timer -- IPv6 å
    815 ±é€šã‚¿ã‚¤ãƒžãƒ¼
    816  *
    817  *    1秒周期で起動される。
     797 *  in6_timer -- IPv6 共通タイマー
     798 *
     799 *    1秒周期で起動される。
    818800 */
    819801
     
    843825
    844826/*
    845  *  in6_init -- IPv6 å
    846 ±é€šæ©Ÿèƒ½ã‚’初期化する。
     827 *  in6_init -- IPv6 共通機能を初期化する。
    847828 */
    848829
     
    861842
    862843/*
    863  *  in6_is_dstaddr_accept -- 宛å
    864 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—て正しいかチェックする。
     844 *  in6_is_dstaddr_accept -- 宛先アドレスとして正しいかチェックする。
    865845 */
    866846
     
    877857
    878858/*
    879  *  in6_add_ifaddr -- インタフェースに IPv6 アドレスを設定する。
    880  *
    881  *    vltime と pltime の単位は[s]
     859 *  in6_add_ifaddr -- インタフェースに IPv6 アドレスを設定する。
     860 *
     861 *    vltime と pltime の単位は[s]
    882862 */
    883863
     
    890870        int_t           ix;
    891871
    892         /* 空きのエントリーを探す。*/
     872        /* 空きのエントリーを探す。*/
    893873        ix = 0;
    894874        while (true) {
    895875                ia = in6ifa_ifpwithix(ifp, ix ++);
    896876
    897                 /* 空きが無ければエラー */
     877                /* 空きが無ければエラー */
    898878                if (ia == NULL)
    899879                        return E_OBJ;
     
    903883                }
    904884
    905         /* 登録する。*/
     885        /* 登録する。*/
    906886        return in6_update_ifa(ifp, ia, addr, prefix_len, vltime, pltime,
    907887                              IN6_RTR_IX_UNREACH, ND6_PREFIX_IX_INVALID, 0);
     
    909889
    910890/*
    911  *  in6_upd_ifaddr -- インタフェースに設定されている IPv6 アドレスを更新する。
    912  *
    913  *    登録されていなければ、追加する。
    914  *    vltime と pltime の単位は[s]
     891 *  in6_upd_ifaddr -- インタフェースに設定されている IPv6 アドレスを更新する。
     892 *
     893 *    登録されていなければ、追加する。
     894 *    vltime と pltime の単位は[s]
    915895 */
    916896
     
    924904
    925905        /*
    926          *  アドレスが一致するエントリーを探す。
    927          *  無ければ登録する。
     906         *  アドレスが一致するエントリーを探す。
     907         *  無ければ登録する。
    928908         */
    929909        if ((ix = in6_addr2ifaix(addr)) == IPV6_IFADDR_IX_INVALID)
     
    931911
    932912        /*
    933          *  インデックス番号から、エントリーに変換する。
    934          *  エラーにならないはずであるが、確認する。
     913         *  インデックス番号から、エントリーに変換する。
     914         *  エラーにならないはずであるが、確認する。
    935915         */
    936916        if ((ia = in6ifa_ifpwithix (ifp, ix)) == NULL)
    937917                return E_OBJ;
    938918
    939         /* 更新する。*/
     919        /* 更新する。*/
    940920        return in6_update_ifa(ifp, ia, addr, prefix_len, vltime, pltime,
    941921                              IN6_RTR_IX_UNREACH, ND6_PREFIX_IX_INVALID, 0);
     
    943923
    944924/*
    945  *  in6_del_ifaddr -- インタフェースに設定されている IPv6 アドレスを削除する。
     925 *  in6_del_ifaddr -- インタフェースに設定されている IPv6 アドレスを削除する。
    946926 */
    947927
     
    952932        int_t           ix;
    953933
    954         /* アドレスが一致するエントリーを探す。*/
     934        /* アドレスが一致するエントリーを探す。*/
    955935        if ((ix = in6_addr2ifaix(addr)) != IPV6_IFADDR_IX_INVALID) {
    956936
    957                 /* エントリーを無効にする。*/
     937                /* エントリーを無効にする。*/
    958938                ifp->in6_ifaddrs[ix].flags &= ~IN6_IFF_DEFINED;
    959939                return E_OK;
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
    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  *  アドレスの定義
     105 *  アドレスの定義
    118106 */
    119107
     
    149137
    150138/*
    151  *  特別なアドレスのチェック
    152  */
    153 
    154 /* IPv4 互換 */
     139 *  特別なアドレスのチェック
     140 */
     141
     142/* IPv4 互換 */
    155143
    156144#ifdef _NET_CFG_BYTE_ORDER
     
    160148#endif
    161149
    162 /* IPv4 射影 */
     150/* IPv4 射影 */
    163151
    164152#ifdef _NET_CFG_BYTE_ORDER
     
    169157#endif
    170158
    171 /* 要請マルチキャスト */
     159/* 要請マルチキャスト */
    172160
    173161#ifdef _NET_CFG_BYTE_ORDER
     
    182170
    183171/*
    184  *  アドレス有効時間構造体
     172 *  アドレス有効時間構造体
    185173 */
    186174
     
    188176
    189177        /*
    190          * expire と perferred は、システムが起動してからの経過時間
     178         * expire と perferred は、システムが起動してからの経過時間
    191179         */
    192         uint32_t        expire;         /* 有効時間が切れる時刻 [s]   */
    193         uint32_t        preferred;      /* 推奨有効時間が切れる時刻 [s]     */
     180        uint32_t        expire;         /* 有効時間が切れる時刻 [s]       */
     181        uint32_t        preferred;      /* 推奨有効時間が切れる時刻 [s]     */
    194182
    195183        /*
    196          * vltime と pltime は、追加/変更してからの相対時間
     184         * vltime と pltime は、追加/変更してからの相対時間
    197185         */
    198         uint32_t        vltime;         /* 有効時間 [us]                    */
    199         uint32_t        pltime;         /* 推奨有効時間 [us]              */
     186        uint32_t        vltime;         /* 有効時間 [us]                    */
     187        uint32_t        pltime;         /* 推奨有効時間 [us]          */
    200188        } __attribute__((packed, aligned(2)))T_IN6_ADDR_LIFETIME;
    201189
    202190/*
    203  *  インタフェースアドレス構造体
     191 *  インタフェースアドレス構造体
    204192 */
    205193
    206194typedef struct t_in6_ifaddr {
    207         T_IN6_ADDR              addr;           /* IPv6 アドレス            */
    208         T_IN6_ADDR_LIFETIME     lifetime;       /* 有効時間         */
    209         uint8_t                 flags;          /* フラグ            */
    210         uint8_t                 prefix_len;     /* プレフィックス長     */
    211         uint8_t                 router_index;   /* ルータインデックス  */
    212         uint8_t                 prefix_index;   /* プレフィックスインデックス      */
    213         uint8_t                 na_icount;      /* 重複アドレス検出 (DAD) 通知のå
    214 ¥åŠ›å›žæ•°      */
    215         uint8_t                 ns_icount;      /* 重複アドレス検出 (DAD) 要請のå
    216 ¥åŠ›å›žæ•°      */
    217         uint8_t                 ns_ocount;      /* 重複アドレス検出 (DAD) 要請の出力回数 */
     195        T_IN6_ADDR              addr;           /* IPv6 アドレス            */
     196        T_IN6_ADDR_LIFETIME     lifetime;       /* 有効時間         */
     197        uint8_t                 flags;          /* フラグ          */
     198        uint8_t                 prefix_len;     /* プレフィックス長     */
     199        uint8_t                 router_index;   /* ルータインデックス    */
     200        uint8_t                 prefix_index;   /* プレフィックスインデックス        */
     201        uint8_t                 na_icount;      /* 重複アドレス検出 (DAD) 通知の入力回数       */
     202        uint8_t                 ns_icount;      /* 重複アドレス検出 (DAD) 要請の入力回数       */
     203        uint8_t                 ns_ocount;      /* 重複アドレス検出 (DAD) 要請の出力回数       */
    218204        } __attribute__((packed, aligned(2)))T_IN6_IFADDR;
    219205
    220206/*
    221  *  アドレス状æ
    222 ‹ãƒ•ãƒ©ã‚°
    223  */
    224 
    225 #define IN6_IFF_ANYCAST         UINT_C(0x01)    /* エニーキャスト        */
    226 #define IN6_IFF_DEFINED         UINT_C(0x02)    /* 定義済み         */
    227 #define IN6_IFF_TENTATIVE       UINT_C(0x04)    /* 重複検出中              */
    228 #define IN6_IFF_DUPLICATED      UINT_C(0x08)    /* 重複を検出した        */
    229 #define IN6_IFF_DEPRECATED      UINT_C(0x10)    /* 非推奨            */
    230 #define IN6_IFF_NODAD           UINT_C(0x20)    /* 重複検出不要           */
    231 #define IN6_IFF_AUTOCONF        UINT_C(0x40)    /* 自動設定された        */
    232 #define IN6_IFF_DETACHED        UINT_C(0x80)    /* 非使用            */
    233 
    234 /*
    235  *  アドレスの有効性チェック
     207 *  アドレス状態フラグ
     208 */
     209
     210#define IN6_IFF_ANYCAST         UINT_C(0x01)    /* エニーキャスト      */
     211#define IN6_IFF_DEFINED         UINT_C(0x02)    /* 定義済み         */
     212#define IN6_IFF_TENTATIVE       UINT_C(0x04)    /* 重複検出中                */
     213#define IN6_IFF_DUPLICATED      UINT_C(0x08)    /* 重複を検出した      */
     214#define IN6_IFF_DEPRECATED      UINT_C(0x10)    /* 非推奨          */
     215#define IN6_IFF_NODAD           UINT_C(0x20)    /* 重複検出不要               */
     216#define IN6_IFF_AUTOCONF        UINT_C(0x40)    /* 自動設定された      */
     217#define IN6_IFF_DETACHED        UINT_C(0x80)    /* 非使用          */
     218
     219/*
     220 *  アドレスの有効性チェック
    236221 */
    237222
     
    248233
    249234/*
    250  *  ルータのインデックス
     235 *  ルータのインデックス
    251236 */
    252237
     
    254239
    255240/*
    256  *  制限値
    257  */
    258 
    259 #define IP6_HDR_NEST_LIMIT      50      /* IPv6 ヘッダのネスト制限値  */
    260 
    261 /*
    262  *  アドレスæƒ
    263 å ±é
    264 åˆ—のインデックス
     241 *  制限値
     242 */
     243
     244#define IP6_HDR_NEST_LIMIT      50      /* IPv6 ヘッダのネスト制限値      */
     245
     246/*
     247 *  アドレス情報配列のインデックス
    265248 */
    266249
     
    269252
    270253/*
    271  *  IPv6 マルチキャストアドレスé
    272 åˆ—のインデックス
    273  */
    274 
    275 #define IPV6_MADDR_IX_SOL_NODE          0       /* 要請マルチキャスト・アドレス                   */
    276 #define IPV6_MADDR_IX_LL_ALL_NODE       1       /* å
    277 ¨ãƒŽãƒ¼ãƒ‰ãƒ»ãƒªãƒ³ã‚¯ãƒ­ãƒ¼ã‚«ãƒ«ãƒ»ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹  */
     254 *  IPv6 マルチキャストアドレス配列のインデックス
     255 */
     256
     257#define IPV6_MADDR_IX_SOL_NODE          0       /* 要請マルチキャスト・アドレス                       */
     258#define IPV6_MADDR_IX_LL_ALL_NODE       1       /* 全ノード・リンクローカル・マルチキャストアドレス     */
    278259#define IPV6_MADDR_IX_EXTRA             2
    279260
    280261#define MAX_IN6_MADDR_CNT               MAX_IF_MADDR_CNT
    281                                                 /* IPv6 マルチキャストアドレスé
    282 åˆ—の最大サイズ  */
    283 
    284 /* ルーティング表エントリ構造体 */
     262                                                /* IPv6 マルチキャストアドレス配列の最大サイズ     */
     263
     264/* ルーティング表エントリ構造体 */
    285265
    286266typedef struct t_in6_rtentry {
    287         T_IN6_ADDR      target;         /* 目標ネットワークアドレス */
    288         T_IN6_ADDR      gateway;        /* ゲートウェイの IP アドレス        */
    289         uint32_t        expire;         /* 有効時間が切れる時刻 [s]   */
    290         uint8_t         flags;          /* フラグ                    */
    291         uint8_t         prefix_len;     /* プレフィックス長             */
     267        T_IN6_ADDR      target;         /* 目標ネットワークアドレス */
     268        T_IN6_ADDR      gateway;        /* ゲートウェイの IP アドレス      */
     269        uint32_t        expire;         /* 有効時間が切れる時刻 [s]       */
     270        uint8_t         flags;          /* フラグ                  */
     271        uint8_t         prefix_len;     /* プレフィックス長             */
    292272        } __attribute__((packed, aligned(2)))T_IN6_RTENTRY;
    293273
    294274/*
    295  *  ホストキャッシュ
    296  */
    297 
    298 /* ホストキャッシュ構造体 */
     275 *  ホストキャッシュ
     276 */
     277
     278/* ホストキャッシュ構造体 */
    299279
    300280typedef struct t_in6_hostcache_entry {
    301         T_IN6_ADDR      dst;            /* 目標ネットワークアドレス */
    302         uint32_t        expire;         /* 有効時間が切れる時刻 [s]   */
     281        T_IN6_ADDR      dst;            /* 目標ネットワークアドレス */
     282        uint32_t        expire;         /* 有効時間が切れる時刻 [s]       */
    303283        uint32_t        mtu;            /* Path MTU                     */
    304284        } __attribute__((packed, aligned(2)))T_IN6_HOSTCACHE_ENTRY;
    305285
    306 #define IN6_HOSTCACHE_EXPIRE    (60*60*SYSTIM_HZ)       /* 有効時間 */
    307 #define IN6_HOSTCACHE_PRUNE     (5*60*SYSTIM_HZ)        /* 更新間隔 */
    308 #define IN6_HOSTCACHE_INCREASE  (10*60*SYSTIM_HZ)       /* 増加する場合の保護時間    */
     286#define IN6_HOSTCACHE_EXPIRE    (60*60*SYSTIM_HZ)       /* 有効時間 */
     287#define IN6_HOSTCACHE_PRUNE     (5*60*SYSTIM_HZ)        /* 更新間隔 */
     288#define IN6_HOSTCACHE_INCREASE  (10*60*SYSTIM_HZ)       /* 増加する場合の保護時間  */
    309289
    310290#define IN6_IS_HOSTCACHE_FREE(e)        IN6_IS_ADDR_UNSPECIFIED(&((e)->dst))
     
    312292
    313293/*
    314  *  ルーティング表
     294 *  ルーティング表
    315295 */
    316296
     
    318298
    319299/*
    320  *  前方参ç
    321 §
     300 *  前方参照
    322301 */
    323302
     
    331310
    332311/*
    333  *  変数
     312 *  変数
    334313 */
    335314
     
    337316
    338317/*
    339  *  関数シミュレーションマクロ
     318 *  関数シミュレーションマクロ
    340319 */
    341320
     
    345324
    346325/*
    347  *  関数
     326 *  関数
    348327 */
    349328
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    4533
    4634/*
    47  *  IPv6 で使用するカーネルオブジェクト
     35 *  IPv6 で使用するカーネルオブジェクト
    4836 */
    4937
    5038#ifdef _IP6_CFG
    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_IN6_ROUTE_ENTRY > 0
    7361
    74 /* ルーティング表 */
     62/* ルーティング表 */
    7563
    7664CRE_SEM(SEM_IN6_ROUTING_TBL, { TA_TPRI, 1, 1 });
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
    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$
     
    161149
    162150/*
    163  *  関数
     151 *  関数
    164152 */
    165153
     
    167155
    168156/*
    169  *  上位プロトコル選択構造体
     157 *  上位プロトコル選択構造体
    170158 */
    171159
    172160typedef struct t_proto_switch {
    173         uint_t (*func)(T_NET_BUF **, uint_t *, uint_t *);       /* å
    174 ¥åŠ›é–¢æ•°              */
    175         uint_t proto;                                           /* プロトコル番号        */
     161        uint_t (*func)(T_NET_BUF **, uint_t *, uint_t *);       /* 入力関数         */
     162        uint_t proto;                                           /* プロトコル番号      */
    176163        } T_PROTO_SWITCH;
    177164
    178165static const T_PROTO_SWITCH proto_switch[] = {
    179         { esp6_input,   IPPROTO_ESP             },      /* IPv6 暗号化ヘッダ      */
    180         { ah6_input,    IPPROTO_AH              },      /* IPv6 認証ヘッダ */
    181         { frag6_input,  IPPROTO_FRAGMENT        },      /* 断片ヘッダ              */
    182         { route6_input, IPPROTO_ROUTING         },      /* 経路制御ヘッダ        */
    183         { dest6_input,  IPPROTO_DSTOPTS         },      /* IPv6 終点オプション   */
     166        { esp6_input,   IPPROTO_ESP             },      /* IPv6 暗号化ヘッダ  */
     167        { ah6_input,    IPPROTO_AH              },      /* IPv6 認証ヘッダ   */
     168        { frag6_input,  IPPROTO_FRAGMENT        },      /* 断片ヘッダ                */
     169        { route6_input, IPPROTO_ROUTING         },      /* 経路制御ヘッダ      */
     170        { dest6_input,  IPPROTO_DSTOPTS         },      /* IPv6 終点オプション */
    184171        { ip6_no_header_input,
    185                         IPPROTO_NONE            },      /* 次ヘッダ無し           */
     172                        IPPROTO_NONE            },      /* 次ヘッダ無し               */
    186173        { icmp6_input,  IPPROTO_ICMPV6          },
    187174
     
    207194
    208195/*
    209  *  get_upper_proto -- 上位プロトコル処理関数を返す。
     196 *  get_upper_proto -- 上位プロトコル処理関数を返す。
    210197 */
    211198
     
    222209
    223210/*
    224  *  ip6_no_header_input -- 次ヘッダが無しの場合のå
    225 ¥åŠ›å‡¦ç†
     211 *  ip6_no_header_input -- 次ヘッダが無しの場合の入力処理
    226212 */
    227213
     
    234220
    235221/*
    236  *  ip6_hopopts_input -- 中継点オプションå
    237 ¥åŠ›å‡¦ç†
    238  *
    239  *    本実è£
    240 ã§ã¯ã€ãƒ‘ディング以外のオプションをå
    241 ¨ã¦æœªçŸ¥ã‚ªãƒ—ションとして処理する。
    242  *
    243  *    戻り値:
    244  *
    245  *      0 以上                正常
    246  *      IP6_OPT_RET_ERR (-1)    エラー、呼出側でネットワークバッファを開放する。
    247  *      IP6_OPT_RET_REL (-2)    エラー、ネットワークバッファは開放されている。
     222 *  ip6_hopopts_input -- 中継点オプション入力処理
     223 *
     224 *    本実装では、パディング以外のオプションを全て未知オプションとして処理する。
     225 *
     226 *    戻り値:
     227 *
     228 *      0 以上            正常
     229 *      IP6_OPT_RET_ERR (-1)    エラー、呼出側でネットワークバッファを開放する。
     230 *      IP6_OPT_RET_REL (-2)    エラー、ネットワークバッファは開放されている。
    248231 */
    249232
     
    293276
    294277/*
    295  *  ip6_get_prev_hdr -- 直前の拡張ヘッダの next フィールドのアドレスを返す。
    296  *
    297  *    注意: off には IF_HDR_SIZE も含まれている。
     278 *  ip6_get_prev_hdr -- 直前の拡張ヘッダの next フィールドのアドレスを返す。
     279 *
     280 *    注意: off には IF_HDR_SIZE も含まれている。
    298281 */
    299282
     
    339322
    340323/*
    341  *  ip6_init -- IPv6 の初期化関数
     324 *  ip6_init -- IPv6 の初期化関数
    342325 */
    343326
     
    350333
    351334/*
    352  *  ip6_input -- IPv6 のå
    353 ¥åŠ›é–¢æ•°
     335 *  ip6_input -- IPv6 の入力関数
    354336 */
    355337
     
    368350        NET_COUNT_MIB(in6_ifstat.ipv6IfStatsInReceives, 1);
    369351
    370         /* IP ヘッダの長さをチェックする。*/
     352        /* IP ヘッダの長さをチェックする。*/
    371353        if (input->len < IF_IP6_HDR_SIZE) {
    372354                NET_COUNT_IP6(net_count_ip6[NC_IP6_IN_ERR_SHORT], 1);
     
    377359        ip6h = GET_IP6_HDR(input);
    378360
    379         /* バージョンをチェックする。*/
     361        /* バージョンをチェックする。*/
    380362        if (IP6_VCF_V(ntohl(ip6h->vcf)) != IPV6_VERSION) {
    381363                NET_COUNT_IP6(net_count_ip6[NC_IP6_IN_ERR_VER], 1);
     
    385367
    386368        /*
    387          *  次のデータグラムは破棄する。
     369         *  次のデータグラムは破棄する。
    388370         *
    389          *    ・始点アドレスがマルチキャスト
    390          *    ・終点アドレスが未定義
     371         *    ・始点アドレスがマルチキャスト
     372         *    ・終点アドレスが未定義
    391373         *
    392          *  ネットワークインタフェースがループバックでないとき、
    393          *  次のデータグラムも破棄する。
     374         *  ネットワークインタフェースがループバックでないとき、
     375         *  次のデータグラムも破棄する。
    394376         *
    395          *    ・始点アドレスがループバック
    396          *    ・終点アドレスがループバック
     377         *    ・始点アドレスがループバック
     378         *    ・終点アドレスがループバック
    397379         *
    398          *  悪意のあるユーザが TCP/UDP スタックの混乱や
    399          *  セキュリティチェックをバイパスするため、IPv4
    400          *  マップアドレスを悪用することを防ぐため
    401          *  以下のデータグラムは破棄する。 
     380         *  悪意のあるユーザが TCP/UDP スタックの混乱や
     381         *  セキュリティチェックをバイパスするため、IPv4
     382         *  マップアドレスを悪用することを防ぐため
     383         *  以下のデータグラムは破棄する。 
    402384         *
    403          *    ・始点アドレスが ::ffff:127.0.0.1
    404          *    ・終点アドレスが ::ffff:127.0.0.1
     385         *    ・始点アドレスが ::ffff:127.0.0.1
     386         *    ・終点アドレスが ::ffff:127.0.0.1
    405387         */
    406388
     
    435417
    436418        if (IN6_IS_ADDR_MULTICAST(&ip6h->dst)) {
    437                 /* 宛å
    438 ˆãŒãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã®å ´åˆã®å‡¦ç† */
     419                /* 宛先がマルチキャストの場合の処理 */
    439420                NET_COUNT_MIB(in6_ifstat.ipv6IfStatsInMcastPkts, 1);
    440421                if (!in6_lookup_multi(ifp, &ip6h->dst)) {
     
    451432                        }
    452433
    453                 /*  アドレスが未解決の場合はデータグラムを破棄する。*/
     434                /*  アドレスが未解決の場合はデータグラムを破棄する。*/
    454435                if (IFA6_IS_NOTREADY(ia6)) {
    455436                        NET_COUNT_IP6(net_count_ip6[NC_IP6_IN_ERR_ADDR], 1);
     
    459440                }
    460441
    461         /* オフセットを設定する。*/
     442        /* オフセットを設定する。*/
    462443        offp  = GET_IP6_NEXT_HDR(input) - input->buf;
    463444
    464         /* ペイロード長を取り出す。*/
     445        /* ペイロード長を取り出す。*/
    465446        plen = ntohs(ip6h->plen);
    466447
    467448
    468         /* 次ヘッダの位置を初期化する。*/
     449        /* 次ヘッダの位置を初期化する。*/
    469450        nextp = offsetof(T_IP6_HDR, next);
    470451
    471452        /*
    472          *  中継点 (Hop-by-Hop) オプションヘッダのチェック
     453         *  中継点 (Hop-by-Hop) オプションヘッダのチェック
    473454         */
    474455        if (ip6h->next == IPPROTO_HOPOPTS) {
    475456
    476                 /* 中継点ヘッダの長さをチェックする。*/
     457                /* 中継点ヘッダの長さをチェックする。*/
    477458                if (plen < sizeof(T_IP6_HBH_HDR)) {
    478459                        NET_COUNT_IP6(net_count_ip6[NC_IP6_IN_ERR_SHORT], 1);
     
    495476
    496477                /*
    497                  *  ペイロード長が 0 で、中継点オプションがあるときは、
    498                  *  巨大ペイロード・オプションが含まれなければならない。
    499                  *  このとき、巨大ペイロード・オプションにある
    500                  *  ペイロード長をチェックするå¿
    501 è¦ãŒã‚るが、本実è£
    502 ã§ã¯ã€
    503                  *  巨大ペイロード・オプションを未知のオプションとして
    504                  *  扱うので、何もしない。
     478                 *  ペイロード長が 0 で、中継点オプションがあるときは、
     479                 *  巨大ペイロード・オプションが含まれなければならない。
     480                 *  このとき、巨大ペイロード・オプションにある
     481                 *  ペイロード長をチェックする必要があるが、本実装では、
     482                 *  巨大ペイロード・オプションを未知のオプションとして
     483                 *  扱うので、何もしない。
    505484                 */
    506485                next = ((T_IP6_HBH_HDR *)(ip6h + 1))->next;
     
    509488                next = ip6h->next;
    510489
    511         /* IPv6 データグラム長をチェックする。*/
     490        /* IPv6 データグラム長をチェックする。*/
    512491        if (input->len - IF_IP6_HDR_SIZE < plen) {
    513492                NET_COUNT_IP6(net_count_ip6[NC_IP6_IN_ERR_SHORT], 1);
     
    518497                input->len = IF_IP6_HDR_SIZE + plen;
    519498
    520         /* 上位プロトコル処理関数を呼び出す。*/
     499        /* 上位プロトコル処理関数を呼び出す。*/
    521500        nest = 0;
    522501        while (next != IPPROTO_DONE) {
     
    531510                        NET_COUNT_MIB(in6_ifstat.ipv6IfStatsInUnknownProtos, 1);
    532511
    533                         /* icmp6_error でネットワークバッファを開放する。*/
     512                        /* icmp6_error でネットワークバッファを開放する。*/
    534513                        icmp6_error(input, ICMP6_PARAM_PROB,
    535514                                           ICMP6_PARAMPROB_NEXT_HEADER, nextp);
     
    548527
    549528/*
    550  *  ip6_nexthdr -- 次のヘッダのオフセットを返す。
    551  *
    552  *    戻り値 == -1 : 最後のヘッダ、またはエラー。
    553  *    戻り値 >   0 : さらにヘッダが続く。
     529 *  ip6_nexthdr -- 次のヘッダのオフセットを返す。
     530 *
     531 *    戻り値 == -1 : 最後のヘッダ、またはエラー。
     532 *    戻り値 >   0 : さらにヘッダが続く。
    554533 */
    555534
     
    569548                break;
    570549
    571         case IPPROTO_FRAGMENT:                  /* 断片ヘッダ */
     550        case IPPROTO_FRAGMENT:                  /* 断片ヘッダ */
    572551                if (nbuf->len < off + sizeof(T_IP6_FRAG_HDR))
    573552                        return (ER_UINT)-1;
    574553
    575                 /* 中間のフラグメントの場合は処理をやめる。*/
     554                /* 中間のフラグメントの場合は処理をやめる。*/
    576555                ip6fh = (T_IP6_FRAG_HDR *)(nbuf->buf + off);
    577556                if (ntohs(ip6fh->off_flag) & IP6F_MORE_FRAG)
     
    582561                break;
    583562
    584         case IPPROTO_AH:                /* IPv6 認証ヘッダ                 */
    585         case IPPROTO_HOPOPTS:           /* IPv6 中継点 (Hop-by-Hop) オプション  */
    586         case IPPROTO_ROUTING:           /* 経路制御ヘッダ                        */
    587         case IPPROTO_DSTOPTS:           /* IPv6 終点オプション                   */
     563        case IPPROTO_AH:                /* IPv6 認証ヘッダ                   */
     564        case IPPROTO_HOPOPTS:           /* IPv6 中継点 (Hop-by-Hop) オプション  */
     565        case IPPROTO_ROUTING:           /* 経路制御ヘッダ                      */
     566        case IPPROTO_DSTOPTS:           /* IPv6 終点オプション                 */
    588567                if (nbuf->len < off + sizeof(T_IP6_EXT_HDR))
    589568                        return (ER_UINT)-1;
     
    602581
    603582/*
    604  *  ip6_lasthdr -- 最後のヘッダのオフセットを返す。
     583 *  ip6_lasthdr -- 最後のヘッダのオフセットを返す。
    605584 */
    606585
     
    621600
    622601/*
    623  *  ip6_unknown_opt -- 未知のオプションの処理
    624  *
    625  *    戻り値:
    626  *
    627  *      0 以上                        正常、オプション長。
    628  *      IP6_OPT_RET_ERR (-1)    エラー、呼出側でネットワークバッファを開放する。
    629  *      IP6_OPT_RET_REL (-2)    エラー、ネットワークバッファは開放されている。
     602 *  ip6_unknown_opt -- 未知のオプションの処理
     603 *
     604 *    戻り値:
     605 *
     606 *      0 以上                    正常、オプション長。
     607 *      IP6_OPT_RET_ERR (-1)    エラー、呼出側でネットワークバッファを開放する。
     608 *      IP6_OPT_RET_REL (-2)    エラー、ネットワークバッファは開放されている。
    630609 */
    631610
     
    634613{
    635614        switch (IP6OPT_TYPE(*opt)) {
    636         case IP6OPT_TYPE_SKIP:          /* 無視する。                      */
     615        case IP6OPT_TYPE_SKIP:          /* 無視する。                        */
    637616                return *(opt + 1);
    638617                break;
    639         case IP6OPT_TYPE_ICMP:          /* 破棄して、マルチキャストでなければ ICMP を返送する。  */
     618        case IP6OPT_TYPE_ICMP:          /* 破棄して、マルチキャストでなければ ICMP を返送する。        */
    640619                if (IN6_IS_ADDR_MULTICAST(&GET_IP6_HDR(input)->dst))
    641620                        return IP6_OPT_RET_ERR;
    642621                /* no break; */
    643         case IP6OPT_TYPE_FORCEICMP:     /* 破棄して、ICMP を返送する。       */
     622        case IP6OPT_TYPE_FORCEICMP:     /* 破棄して、ICMP を返送する。     */
    644623                icmp6_error(input, ICMP6_PARAM_PROB,
    645624                                   ICMP6_PARAMPROB_OPTION,
     
    647626                return IP6_OPT_RET_REL;
    648627                break;
    649         /*case IP6OPT_TYPE_DISCARD:     ãƒ‡ãƒ¼ã‚¿ã‚°ãƒ©ãƒ ã‚’破棄する。    */
     628        /*case IP6OPT_TYPE_DISCARD:     データグラムを破棄する。    */
    650629                }
    651630
     
    654633
    655634/*
    656  *  ip6_remove_exthdrs -- IPv6 拡張ヘッダを削除し、以降を前に詰める。
     635 *  ip6_remove_exthdrs -- IPv6 拡張ヘッダを削除し、以降を前に詰める。
    657636 */
    658637
     
    663642        uint_t  next;
    664643
    665         /* 開始オフセットを IP ヘッダに設定する。*/
     644        /* 開始オフセットを IP ヘッダに設定する。*/
    666645        off = ((uint8_t *)GET_IP6_HDR(nbuf)) - nbuf->buf;
    667646
    668         /* 最終ヘッダを探索する。*/
     647        /* 最終ヘッダを探索する。*/
    669648        off = ip6_lasthdr(nbuf, off, IPPROTO_IPV6, &next);
    670649
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
    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$
     
    154142
    155143/*
    156  *  å
    157 ¨åŸŸå¤‰æ•°
    158  */
    159 
    160 /* リンク MTU */
     144 *  全域変数
     145 */
     146
     147/* リンク MTU */
    161148
    162149uint32_t        linkmtu = IF_MTU;
    163150
    164151/*
    165  *  局所変数
     152 *  局所変数
    166153 */
    167154
     
    173160
    174161/*
    175  *  ip6_output -- IPv6 の出力関数
     162 *  ip6_output -- IPv6 の出力関数
    176163 */
    177164
     
    204191
    205192        /*
    206          *  重複アドレス検出要請以外には、送信å
    207 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã«
    208          *  無指定を指定できない。
     193         *  重複アドレス検出要請以外には、送信元アドレスに
     194         *  無指定を指定できない。
    209195         */
    210196        if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src) && (flags & IPV6_OUT_FLG_DAD) == 0) {
     
    213199                }
    214200
    215         /* 送信å
    216 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã¯ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’指定できない。*/
     201        /* 送信元アドレスにはマルチキャストアドレスを指定できない。*/
    217202        if (IN6_IS_ADDR_MULTICAST(&ip6h->src)) {
    218203                error = E_PAR;
     
    221206
    222207        /*
    223          *  経路選択を行う。
     208         *  経路選択を行う。
    224209         */
    225210        if ((gw = in6_rtalloc(ifp, &ip6h->dst)) == NULL) {
     
    229214
    230215        if (!IN6_IS_ADDR_MULTICAST(&ip6h->dst)) {
    231                 /* ユニキャストアドレスの処理 */
     216                /* ユニキャストアドレスの処理 */
    232217                }
    233218        else {
    234                 /* マルチキャストアドレスの処理 */
     219                /* マルチキャストアドレスの処理 */
    235220                NET_COUNT_MIB(in6_ifstat.ipv6IfStatsOutMcastPkts, 1);
    236221                if (flags & IPV6_OUT_FLG_HOP_LIMIT)
     
    240225                }
    241226
    242         /* Traffic Class と Flow Label をサポートしないので 0 に設定する。*/
     227        /* Traffic Class と Flow Label をサポートしないので 0 に設定する。*/
    243228        ip6h->vcf = htonl(IP6_MAKE_VCF(IPV6_VERSION, 0));
    244229
     
    253238
    254239                /*
    255                  *  Path MTU が登録されている場合、
    256                  *  MTU が IPv6 MMTU(1280 オクテット)以下の場合は、
    257                  *  MTU を IPv6 MMTU に設定し分割して送信する。
     240                 *  Path MTU が登録されている場合、
     241                 *  MTU が IPv6 MMTU(1280 オクテット)以下の場合は、
     242                 *  MTU を IPv6 MMTU に設定し分割して送信する。
    258243                 */
    259244                mtu = IPV6_MMTU;
     
    272257        if (plen + IP6_HDR_SIZE <= mtu && !alwaysfrag) {
    273258
    274                 /* 分割するå¿
    275 è¦ãŒãªã„ときの処理 */
     259                /* 分割する必要がないときの処理 */
    276260                if ((error = nd6_output(ifp, output, gw, NULL, tmout)) != E_OK) {
    277261                        NET_COUNT_IP6(net_count_ip6[NC_IP6_OUT_ERR_PACKETS], 1);
     
    281265        else {
    282266
    283                 /* 断片 ID を設定する。*/
     267                /* 断片 ID を設定する。*/
    284268                id = ip6_id ++;
    285269
    286                 /* MTU が IPv6 の最大パケットサイズをè¶
    287 ãˆãªã„ようにする。*/
     270                /* MTU が IPv6 の最大パケットサイズを超えないようにする。*/
    288271                if (mtu > IPV6_MAXPACKET)
    289272                        mtu = IPV6_MAXPACKET;
    290273
    291274                /*
    292                  *  MTU から、分割不能部分(TINET-1.4 では、分割ヘッダ以外の
    293                  *  拡張ヘッダの出力は未実è£
    294 ã®ãŸã‚ 0 オクテット)
    295                  *  と断片ヘッダのサイズを引いたとき、8 オクテット以上なければ
    296                  *  分割して送信できないためエラーにする。
     275                 *  MTU から、分割不能部分(TINET-1.4 では、分割ヘッダ以外の
     276                 *  拡張ヘッダの出力は未実装のため 0 オクテット)
     277                 *  と断片ヘッダのサイズを引いたとき、8 オクテット以上なければ
     278                 *  分割して送信できないためエラーにする。
    297279                 */
    298280                if (((mtu - sizeof(T_IP6_FRAG_HDR)) & ~7) < 8) {
     
    302284
    303285                /*
    304                  *  IPv6 ヘッダの next フィールドに設定する値は、断片ヘッダ。
    305                  *  断片ヘッダの  next フィールドに設定する値は、
    306                  *  å
    307 ƒã®ãƒ‡ãƒ¼ã‚¿ã‚°ãƒ©ãƒ ã® next フィールドの値。
     286                 *  IPv6 ヘッダの next フィールドに設定する値は、断片ヘッダ。
     287                 *  断片ヘッダの  next フィールドに設定する値は、
     288                 *  元のデータグラムの next フィールドの値。
    308289                 */
    309290                nextproto  = ip6h->next;
    310291                ip6h->next = IPPROTO_FRAGMENT;
    311292
    312                 /* 分割して送信する。*/
     293                /* 分割して送信する。*/
    313294                NET_COUNT_IP6(net_count_ip6[NC_IP6_FRAG_OUT], 1);
    314295                for (foff = 0; foff < plen; foff += flen) {
    315296
    316                         /* 断片の長さを計算し、8 オクテット境界に調整する。*/
     297                        /* 断片の長さを計算し、8 オクテット境界に調整する。*/
    317298                        if (foff + (mtu - (IP6_HDR_SIZE + sizeof(T_IP6_FRAG_HDR))) < plen)
    318299                                flen = (mtu - (IP6_HDR_SIZE + sizeof(T_IP6_FRAG_HDR))) >> 3 << 3;
     
    320301                                flen = plen - foff;
    321302
    322                         /* ネットワークバッファを獲得する。*/
     303                        /* ネットワークバッファを獲得する。*/
    323304                        if (tget_net_buf(&frag, flen + IF_IP6_HDR_SIZE + sizeof(T_IP6_FRAG_HDR), TMO_IP6_FRAG_GET_NET_BUF) == E_OK) {
    324305
    325                                 /* IPv6 ヘッダをコピーする。*/
     306                                /* IPv6 ヘッダをコピーする。*/
    326307                                fip6h = GET_IP6_HDR(frag);
    327308                                *fip6h = *ip6h;
    328309
    329                                 /* IPv6 ヘッダを埋める。*/
     310                                /* IPv6 ヘッダを埋める。*/
    330311                                fip6h->plen     = htons(flen + sizeof(T_IP6_FRAG_HDR));
    331312
    332                                 /* 断片ヘッダを埋める。*/
     313                                /* 断片ヘッダを埋める。*/
    333314                                fip6f = (T_IP6_FRAG_HDR *)GET_IP6_NEXT_HDR(frag);
    334315                                fip6f->off_flag = htons((uint16_t)(foff & ~7));
     
    339320                                fip6f->next     = nextproto;
    340321
    341                                 /* SDU をコピーする。*/
     322                                /* SDU をコピーする。*/
    342323                                memcpy((uint8_t*)(fip6f + 1), GET_IP6_NEXT_HDR(output) + foff, flen);
    343324                                NET_COUNT_IP6(net_count_ip6[NC_IP6_FRAG_OUT_FRAGS], 1);
    344325                                NET_COUNT_MIB(in6_ifstat.ipv6IfStatsOutFragCreates, 1);
    345326
    346                                 /* 送信する。*/
     327                                /* 送信する。*/
    347328                                if ((error = nd6_output(ifp, frag, gw, NULL, tmout)) != E_OK) {
    348329                                        NET_COUNT_MIB(in6_ifstat.ipv6IfStatsOutFragFails, 1);
     
    351332                                }
    352333                        else {
    353                                 /* ネットワークバッファが獲得できなければ、送信をあきらめる。*/
     334                                /* ネットワークバッファが獲得できなければ、送信をあきらめる。*/
    354335                                error = E_NOMEM;
    355336                                goto drop;
     
    357338                        }
    358339
    359                 /* IF でネットワークバッファを開放しないフラグをチェックする。*/
     340                /* IF でネットワークバッファを開放しないフラグをチェックする。*/
    360341                if ((output->flags & NB_FLG_NOREL_IFOUT) == 0) {
    361342                        syscall(rel_net_buf(output));
     
    379360
    380361drop:
    381         /* IF でネットワークバッファを開放しないフラグをチェックする。*/
     362        /* IF でネットワークバッファを開放しないフラグをチェックする。*/
    382363        if ((output->flags & NB_FLG_NOREL_IFOUT) == 0) {
    383364                syscall(rel_net_buf(output));
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
    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
     
    131119#define SET_IP6_SDU_SIZE(nbuf,slen)     (GET_IP6_HDR(nbuf)->plen=htons(slen))
    132120
    133 /* ip6_output のフラグ */
    134 
    135 #define IPV6_OUT_FLG_DAD                0x0100  /* 重複アドレス検出     */
    136 #define IPV6_OUT_FLG_HOP_LIMIT          0x0200  /* ホップリミット指定  */
    137 
    138 /* ホップリミットフラグが付く時、ホップリミット値を操作するマクロ */
     121/* ip6_output のフラグ */
     122
     123#define IPV6_OUT_FLG_DAD                0x0100  /* 重複アドレス検出     */
     124#define IPV6_OUT_FLG_HOP_LIMIT          0x0200  /* ホップリミット指定    */
     125
     126/* ホップリミットフラグが付く時、ホップリミット値を操作するマクロ */
    139127
    140128#define IPV6_OUT_GET_HOP_LIMIT(f)       ((f)&0x00ff)
     
    142130
    143131/*
    144  *  ip6_unknown_opt -- 未知のオプションの処理
    145  *
    146  *    戻り値:
    147  *
    148  *      0 以上                        正常、オプション長。
    149  *      IP6_OPT_RET_ERR (-1)    エラー、呼出側でネットワークバッファを開放する。
    150  *      IP6_OPT_RET_REL (-2)    エラー、ネットワークバッファは開放されている。
     132 *  ip6_unknown_opt -- 未知のオプションの処理
     133 *
     134 *    戻り値:
     135 *
     136 *      0 以上                    正常、オプション長。
     137 *      IP6_OPT_RET_ERR (-1)    エラー、呼出側でネットワークバッファを開放する。
     138 *      IP6_OPT_RET_REL (-2)    エラー、ネットワークバッファは開放されている。
    151139 */
    152140
     
    155143
    156144/*
    157  *  IPv6 の MMTU サイズのネットワークバッファ
     145 *  IPv6 の MMTU サイズのネットワークバッファ
    158146 */
    159147
     
    161149
    162150typedef struct t_net_buf_ipv6_mmtu {
    163         uint16_t        len;    /* データの長さ           */
    164         uint8_t         idix;   /* mpfid のインデックス  */
    165         uint8_t         unit;   /* インタフェース番号  */
     151        uint16_t        len;    /* データの長さ               */
     152        uint8_t         idix;   /* mpfid のインデックス        */
     153        uint8_t         unit;   /* インタフェース番号    */
    166154#ifdef IF_ETHER_NIC_NET_BUF_ALIGN
    167155        uint8_t         nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
     
    171159#endif
    172160        uint8_t         buf[IF_HDR_SIZE + IPV6_MMTU];
    173                                 /* バッファ本体           */
     161                                /* バッファ本体               */
    174162        } T_NET_BUF_IPV6_MMTU;
    175163
     
    177165
    178166/*
    179  *  65536 オクテットサイズのネットワークバッファ
     167 *  65536 オクテットサイズのネットワークバッファ
    180168 */
    181169
    182170typedef struct t_net_buf6_65536 {
    183         uint16_t        len;    /* データの長さ           */
    184         uint8_t         idix;   /* mpfid のインデックス  */
    185         uint8_t         flags;  /* フラグ            */
     171        uint16_t        len;    /* データの長さ               */
     172        uint8_t         idix;   /* mpfid のインデックス        */
     173        uint8_t         flags;  /* フラグ          */
    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_IP6_HDR_SIZE + 65536];
    193                                 /* バッファ本体           */
     181                                /* バッファ本体               */
    194182#if defined(IF_PDU_HDR_PADDING)
    195183        uint8_t         padding[IF_PDU_HDR_PADDING];
    196 #endif                          /* ヘッダの余分           */
     184#endif                          /* ヘッダの余分               */
    197185        } T_NET_BUF6_65536;
    198186
     
    200188
    201189/*
    202  *  再構成キュー用 IPv6 ヘッダの定義
     190 *  再構成キュー用 IPv6 ヘッダの定義
    203191 */
    204192
     
    211199        uint8_t         hlim;           /* Hop Limit                            */
    212200        T_IN6_ADDR      src;            /* Source Address                       */
    213         T_NET_BUF       *next_frag;     /* 次の IPv6 フラグメント       */
    214         uint16_t        foff;           /* 断片ヘッダのオフセット            */
    215         uint16_t        flen;           /* 断片長                            */
    216         uint16_t        ftim;           /* 再構成タイムアウト                  */
     201        T_NET_BUF       *next_frag;     /* 次の IPv6 フラグメント       */
     202        uint16_t        foff;           /* 断片ヘッダのオフセット          */
     203        uint16_t        flen;           /* 断片長                          */
     204        uint16_t        ftim;           /* 再構成タイムアウト                    */
    217205        uint16_t        dummy1;
    218206        uint8_t         dummy2[sizeof(T_IN6_ADDR) - (sizeof(T_NET_BUF*) + sizeof(uint16_t) * 4)];
     
    229217
    230218/*
    231  *  データグラム再構成用ネットワークバッファ
     219 *  データグラム再構成用ネットワークバッファ
    232220 */
    233221
    234222typedef struct t_net_buf6_reassm {
    235         uint16_t        len;    /* データの長さ           */
    236         uint8_t         idix;   /* mpfid のインデックス  */
    237         uint8_t         flags;  /* フラグ            */
     223        uint16_t        len;    /* データの長さ               */
     224        uint8_t         idix;   /* mpfid のインデックス        */
     225        uint8_t         flags;  /* フラグ          */
    238226#ifdef IF_ETHER_NIC_NET_BUF_ALIGN
    239227        uint8_t         nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
     
    243231#endif
    244232        uint8_t         buf[IP6_CFG_FRAG_REASSM_SIZE];
    245                                 /* バッファ本体           */
     233                                /* バッファ本体               */
    246234        } T_NET_BUF6_REASSM;
    247235
     
    249237
    250238/*
    251  *  TCP の再構成キューにおける IPv6 ヘッダの定義
     239 *  TCP の再構成キューにおける IPv6 ヘッダの定義
    252240 */
    253241
     
    256244        uint8_t cf;             /* Traffic Class:  8 bit                */
    257245                        /* Flow Label:     4 bit (20 bit)       */
    258         uint16_t thoff; /* TCP ヘッダのオフセット              */
     246        uint16_t thoff; /* TCP ヘッダのオフセット                */
    259247        uint16_t plen;  /* Payload Length                       */
    260248        uint8_t next;   /* Next Header                          */
     
    267255
    268256/*
    269  *  SNMP の 管理æƒ
    270 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     257 *  SNMP の 管理情報ベース (MIB)
    271258 */
    272259
     
    299286
    300287/*
    301  *  変数
     288 *  変数
    302289 */
    303290
     
    305292
    306293/*
    307  *  関数
     294 *  関数
    308295 */
    309296
  • azure_iot_hub/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
    r388 r389  
    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
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
    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;
     
    388367
    389368/*
    390  *  nd6_cache_lladdr -- 近隣探索キャッシュに登録する。
     369 *  nd6_cache_lladdr -- 近隣探索キャッシュに登録する。
    391370 */
    392371
     
    400379        int_t           newstate = ND6_LLINFO_INCOMPLETE;
    401380
    402         /* アドレスが無指定なら何もしない。*/
     381        /* アドレスが無指定なら何もしない。*/
    403382        if (IN6_IS_ADDR_UNSPECIFIED(from))
    404383                return NULL;
    405384
    406         /* 近隣キャッシュに登録する。*/
     385        /* 近隣キャッシュに登録する。*/
    407386        syscall(wai_sem(SEM_ND6_CACHE));
    408387        if ((ln = nd6_lookup(from, false)) == NULL) {
     
    422401
    423402        /*
    424          *  状æ
    425 ‹é·ç§»è¡¨
     403         *  状態遷移表
    426404         *
    427405         *  nd_na_flags
    428          *  newnetry olladdr lladdr llchange 処理 (L: lladdr を登録する)
     406         *  newnetry olladdr lladdr llchange 処理 (L: lladdr を登録する)
    429407         *
    430408         *      F       F       N       -    (1)
     
    437415         */
    438416
    439         /* データリンク層のアドレスが通知されていれば更新する。*/
     417        /* データリンク層のアドレスが通知されていれば更新する。*/
    440418        if (lladdr != NULL) {
    441419                ln->ifaddr = *(T_IF_ADDR *)lladdr;
     
    459437                }
    460438
    461         /* 近隣キャッシュエントリを更新する。*/
     439        /* 近隣キャッシュエントリを更新する。*/
    462440        if (doupdate) {
    463441                ln->state = newstate;
     
    467445                        ln->expire = now + ND6_GCOLLECTION_TIME;
    468446
    469                         /* アドレス解決å¾
    470 ã¡ã®ãƒ‡ãƒ¼ã‚¿ã‚°ãƒ©ãƒ ãŒã‚れば送信する。*/
     447                        /* アドレス解決待ちのデータグラムがあれば送信する。*/
    471448                        nd6_output_hold(ifp, ln);
    472449                        }
     
    477454
    478455
    479         /* ルータ通知の処理 */
     456        /* ルータ通知の処理 */
    480457        switch (type) {
    481458
     
    507484
    508485/*
    509  *  nd6_is_addr_neighbor -- 指定されたアドレスのノードが同一リンクにあるかチェックする。
     486 *  nd6_is_addr_neighbor -- 指定されたアドレスのノードが同一リンクにあるかチェックする。
    510487 */
    511488
     
    526503
    527504/*
    528  *  nd6_output -- 近隣探索の出力関数
    529  *
    530  *    注意: セマフォ SEM_ND6_CACHE によりロック状æ
    531 ‹ã§å‘¼å‡ºã™ã“と。
     505 *  nd6_output -- 近隣探索の出力関数
     506 *
     507 *    注意: セマフォ SEM_ND6_CACHE によりロック状態で呼出すこと。
    532508 */
    533509
     
    539515
    540516        /*
    541          *  あてå
    542 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã‹ã€è¿‘隣キャッシュが
    543          *  不要の場合は直ちに送信する。
     517         *  あて先アドレスがマルチキャストか、近隣キャッシュが
     518         *  不要の場合は直ちに送信する。
    544519         */
    545520        if (!(IN6_IS_ADDR_MULTICAST(dst) || !IF_IN6_NEED_CACHE(ifp))) {
    546521                if (ln == NULL) {
    547                         /* 近隣キャッシュが未定義の場合 */
     522                        /* 近隣キャッシュが未定義の場合 */
    548523                        if (nd6_is_addr_neighbor(ifp, dst)) {
    549524                                /*
    550                                  *  指定されたアドレスのノードが同一リンクにある時は、
    551                                  *  近隣キャッシュを探索し、未定義の場合は登録する。
     525                                 *  指定されたアドレスのノードが同一リンクにある時は、
     526                                 *  近隣キャッシュを探索し、未定義の場合は登録する。
    552527                                 */
    553528                                ln = nd6_lookup(dst, true);
     
    560535
    561536                /*
    562                  *  近隣キャッシュの状æ
    563 ‹ãŒã€ãƒ‡ãƒ¼ã‚¿ãƒªãƒ³ã‚¯å±¤ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒåˆ†ã‹ã£ã¦ã„ても、
    564                  *  到達可能性が確認されていないときは、到達不能通知を開始する。
     537                 *  近隣キャッシュの状態が、データリンク層のアドレスが分かっていても、
     538                 *  到達可能性が確認されていないときは、到達不能通知を開始する。
    565539                 */
    566540                if (ln->state == ND6_LLINFO_STALE) {
     
    572546
    573547                /*
    574                  *  近隣キャッシュの状æ
    575 ‹ãŒã€ãƒ‡ãƒ¼ã‚¿ãƒªãƒ³ã‚¯å±¤ã®ã‚¢ãƒ‰ãƒ¬ã‚¹æœªè§£æ±ºã®å ´åˆã¯
    576                  *  近隣探索を行う。
     548                 *  近隣キャッシュの状態が、データリンク層のアドレス未解決の場合は
     549                 *  近隣探索を行う。
    577550                 */
    578551                if (ln->state <= ND6_LLINFO_INCOMPLETE) {
    579552
    580                         /* タイムアウトの指定がポーリングならタイムアウトで終了する。*/
     553                        /* タイムアウトの指定がポーリングならタイムアウトで終了する。*/
    581554                        if (tmout == TMO_POL) {
    582555                                error = E_TMOUT;
     
    587560                                ln->state = ND6_LLINFO_INCOMPLETE;
    588561
    589                         /* すでに、未解決のネットワークバッファがあれば、開放する。*/
     562                        /* すでに、未解決のネットワークバッファがあれば、開放する。*/
    590563                        if (ln->hold != NULL) {
    591564                                syscall(rel_net_buf(ln->hold));
     
    594567
    595568                        /*
    596                          *  送信をペンディングする。
    597                          *  IF でネットワークバッファを開放しないフラグが設定されているときは、
    598                          *  送信をペンディングしない。
     569                         *  送信をペンディングする。
     570                         *  IF でネットワークバッファを開放しないフラグが設定されているときは、
     571                         *  送信をペンディングしない。
    599572                         */
    600573                        if ((output->flags & NB_FLG_NOREL_IFOUT) == 0) {
    601574                                ln->hold = output;
    602575
    603                                 /* タイムアウトの設定 */
     576                                /* タイムアウトの設定 */
    604577                                if (tmout == TMO_FEVR)
    605578                                        ln->tmout = tmout;
     
    620593                                        if ((int32_t)(ln->expire - now) < 0) {
    621594                                                   /* ln->expire < now */
    622                                                 ln->expire += ND6_RETRANS_TIME; /* 近隣探索送信間隔 */
     595                                                ln->expire += ND6_RETRANS_TIME; /* 近隣探索送信間隔 */
    623596                                                ln->asked ++;
    624597                                                nd6_ns_output(ifp, &in6_addr_unspecified, dst, ln, false);
     
    631604
    632605        /*
    633          *  重複が検出されたインタフェースには出力しない。
     606         *  重複が検出されたインタフェースには出力しない。
    634607         */
    635608        if ((ifp->flags & ND6_IFF_IFDISABLED) != 0) {
     
    647620
    648621/*
    649  *  nd6_storelladdr -- 出力するネットワークインタフェースのアドレスを返す。
     622 *  nd6_storelladdr -- 出力するネットワークインタフェースのアドレスを返す。
    650623 */
    651624
     
    664637
    665638/*
    666  *  nd6_option -- 近隣探索オプションの処理
    667  *
    668  *    注意: オプションオフセットé
    669 åˆ—には、オフセット + 8 が設定されている。
     639 *  nd6_option -- 近隣探索オプションの処理
     640 *
     641 *    注意: オプションオフセット配列には、オフセット + 8 が設定されている。
    670642 */
    671643
     
    675647        T_ND_OPT_HDR    *opth;
    676648        ER              error = E_OK;
    677         int_t           pi_count = 0;   /* プレフィックスæƒ
    678 å ±ã®å€‹æ•° */
     649        int_t           pi_count = 0;   /* プレフィックス情報の個数 */
    679650
    680651        opth = (T_ND_OPT_HDR *)nh;
     
    683654        while (error == E_OK && ((uint8_t *)opth - (uint8_t *)nh) < (256 - 8) && len > 0) {
    684655
    685                 /* オプション長が 0 の時は、不正なオプションとして処理する。*/
     656                /* オプション長が 0 の時は、不正なオプションとして処理する。*/
    686657                if (opth->len == 0) {
    687658                        error = E_PAR;
     
    689660                        }
    690661
    691                 /* オプションのタイプにより分岐する。*/
     662                /* オプションのタイプにより分岐する。*/
    692663                switch (opth->type) {
    693                 case ND_OPT_SOURCE_LINKADDR:            /* 送信å
    694 ˆãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ */
    695                 case ND_OPT_TARGET_LINKADDR:            /* 対象ネットワークインタフェースのアドレス */
    696                 case ND_OPT_REDIRECTED_HEADER:          /* リダイレクト・ヘッダ                               */
     664                case ND_OPT_SOURCE_LINKADDR:            /* 送信先ネットワークインタフェースのアドレス        */
     665                case ND_OPT_TARGET_LINKADDR:            /* 対象ネットワークインタフェースのアドレス */
     666                case ND_OPT_REDIRECTED_HEADER:          /* リダイレクト・ヘッダ                           */
    697667                case ND_OPT_MTU:                        /* MTU                                          */
    698668                        if (opt[ND_OPT_OFF_ARRAY_IX(opth->type)]) {
    699                                 /* プレフィックスæƒ
    700 å ±ä»¥å¤–の同じオプションが複数指定されている。*/
     669                                /* プレフィックス情報以外の同じオプションが複数指定されている。*/
    701670                                error = E_PAR;
    702671                                }
     
    705674                                }
    706675                        break;
    707                 case ND_OPT_PREFIX_INFORMATION:         /* プレフィックスæƒ
    708 å ±                             */
     676                case ND_OPT_PREFIX_INFORMATION:         /* プレフィックス情報                            */
    709677                        if (!opt[ND_OPT_OFF_ARRAY_IX(ND_OPT_PREFIX_INFORMATION)]) {
    710678                                /*
    711                                  *  プレフィックスæƒ
    712 å ±ã¯æœ€åˆã«ç¾ã‚ŒãŸã‚ªãƒ•ã‚»ãƒƒãƒˆã®ã¿è¨˜éŒ²ã™ã‚‹ã€‚
     679                                 *  プレフィックス情報は最初に現れたオフセットのみ記録する。
    713680                                 */
    714681                                opt[ND_OPT_OFF_ARRAY_IX(opth->type)] = (uint8_t *)opth - (uint8_t *)nh + 8;
     
    718685                default:
    719686                        /*
    720                          *  将来定義されるプロトコルへの拡張に対応するため、
    721                          *  認識できないオプションは単に無視し、処理を続行する。
     687                         *  将来定義されるプロトコルへの拡張に対応するため、
     688                         *  認識できないオプションは単に無視し、処理を続行する。
    722689                         */
    723690                        break;
    724691                        }
    725                 len -= opth->len << 3;          /* オプション長の単位は 8 バイト */
     692                len -= opth->len << 3;          /* オプション長の単位は 8 バイト */
    726693                opth = (T_ND_OPT_HDR *)((uint8_t *)opth + (opth->len << 3));
    727694                }
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
    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$
     
    8068
    8169/*
    82  *  ネットワークインタフェース構造体(T_IFNET)のフラグ
    83  */
    84 
    85 #define ND6_IFF_IFDISABLED      UINT_C(0x01)    /* インタフェースを無効にする。*/
    86 
    87 /*
    88  *  近隣キャッシュ
     70 *  ネットワークインタフェース構造体(T_IFNET)のフラグ
     71 */
     72
     73#define ND6_IFF_IFDISABLED      UINT_C(0x01)    /* インタフェースを無効にする。*/
     74
     75/*
     76 *  近隣キャッシュ
    8977 */
    9078
     
    9381        T_NET_BUF       *hold;
    9482        TMO             tmout;
    95         SYSTIM          expire;         /* [us] 有効時間が切れる時刻  */
     83        SYSTIM          expire;         /* [us] 有効時間が切れる時刻      */
    9684        T_IF_ADDR       ifaddr;
    9785        uint8_t         state;
     
    10088        } T_LLINFO_ND6;
    10189
    102 /* 近隣キャッシュの状æ
    103 ‹ */
    104 
    105 #define ND6_LLINFO_FREE                 0       /* 未使用            */
    106 #define ND6_LLINFO_NO_STATE             1       /* 状æ
    107 ‹æœªå®šç¾©              */
    108 #define ND6_LLINFO_INCOMPLETE           2       /* 未解決            */
    109 #define ND6_LLINFO_REACHABLE            3       /* 到達可能         */
    110 #define ND6_LLINFO_STALE                4       /* 到達可能性は未確認  */
    111 #define ND6_LLINFO_DELAY                5       /* 到達可能性の確認å¾
    112 æ©Ÿ     */
    113 #define ND6_LLINFO_PROBE                6       /* 到達可能性を確認中  */
     90/* 近隣キャッシュの状態 */
     91
     92#define ND6_LLINFO_FREE                 0       /* 未使用          */
     93#define ND6_LLINFO_NO_STATE             1       /* 状態未定義                */
     94#define ND6_LLINFO_INCOMPLETE           2       /* 未解決          */
     95#define ND6_LLINFO_REACHABLE            3       /* 到達可能         */
     96#define ND6_LLINFO_STALE                4       /* 到達可能性は未確認    */
     97#define ND6_LLINFO_DELAY                5       /* 到達可能性の確認待機   */
     98#define ND6_LLINFO_PROBE                6       /* 到達可能性を確認中    */
    11499
    115100#define ND6_IS_LLINFO_PROBREACH(n)      ((n)->state > ND6_LLINFO_INCOMPLETE)
    116101
    117 /* 近隣キャッシュの制御ビット */
    118 
    119 #define ND6_LLIF_ROUTER                 UINT_C(0x80)    /* ルータ            */
    120 #define ND6_LLIF_ASKED                  UINT_C(0x40)    /* 通知済み         */
    121 #define ND6_LLIF_STATE_MASK             UINT_C(0x07)    /* 状æ
    122 ‹ãƒžã‚¹ã‚¯              */
    123 
    124 /* 近隣探索キャッシュ、有効時間の定義 */
     102/* 近隣キャッシュの制御ビット */
     103
     104#define ND6_LLIF_ROUTER                 UINT_C(0x80)    /* ルータ          */
     105#define ND6_LLIF_ASKED                  UINT_C(0x40)    /* 通知済み         */
     106#define ND6_LLIF_STATE_MASK             UINT_C(0x07)    /* 状態マスク                */
     107
     108/* 近隣探索キャッシュ、有効時間の定義 */
    125109
    126110#define ND6_SLOW_TMO                    ((60*60*1000)/NET_TIMER_HZ)
    127                                                         /* 1 [時間]                           */
    128                                                         /* 近隣探索キャッシュ更新タイムアウト  */
    129 
    130 #define ND6_MAX_DAD_TRY                 15              /* 重複アドレス検出の再送回数              */
    131 #define ND6_MAX_MCAST_QUERY             3               /* マルチキャストアドレス要請の再送回数       */
    132 #define ND6_MAX_UCAST_QUERY             3               /* ユニキャストアドレス要請の再送回数  */
     111                                                        /* 1 [時間]                               */
     112                                                        /* 近隣探索キャッシュ更新タイムアウト    */
     113
     114#define ND6_MAX_DAD_TRY                 15              /* 重複アドレス検出の再送回数                */
     115#define ND6_MAX_MCAST_QUERY             3               /* マルチキャストアドレス要請の再送回数   */
     116#define ND6_MAX_UCAST_QUERY             3               /* ユニキャストアドレス要請の再送回数    */
    133117
    134118#define ND6_GCOLLECTION_TIME            (60*60*24*SYSTIM_HZ)
    135                                                         /* ゴミ拾い周期、1 日                   */
    136 #define ND6_DELAY_TIME                  (5*SYSTIM_HZ)   /* 確認å¾
    137 æ©Ÿé
    138 å»¶                             */
    139 #define ND6_FIRST_DAD_DELAY_TIME        (1*SYSTIM_HZ)   /* 最初の重複アドレス検出送信é
    140 å»¶     */
     119                                                        /* ゴミ拾い周期、1 日                   */
     120#define ND6_DELAY_TIME                  (5*SYSTIM_HZ)   /* 確認待機遅延                               */
     121#define ND6_FIRST_DAD_DELAY_TIME        (1*SYSTIM_HZ)   /* 最初の重複アドレス検出送信遅延      */
    141122#define ND6_DAD_DELAY_TIME              (5*SYSTIM_HZ/10)
    142                                                         /* 重複アドレス検出送信é
    143 å»¶             */
    144 
    145 /* 近隣探索用タイマの設定 */
    146 
    147 #define ND6_TIMER_TMO                   ((SYSTIM_HZ/NET_TIMER_CYCLE)/5) /* 0.2[s] 間隔                */
    148 
    149 /*
    150  *  到達可能状æ
    151 ‹ã®æœ‰åŠ¹æ™‚é–“
    152  */
    153 
    154 #define ND6_DEF_REACHABLE_TIME          (30*SYSTIM_HZ)  /* 到達可能状æ
    155 ‹ã®æœ‰åŠ¹æ™‚間の既定値            */
     123                                                        /* 重複アドレス検出送信遅延         */
     124
     125/* 近隣探索用タイマの設定 */
     126
     127#define ND6_TIMER_TMO                   ((SYSTIM_HZ/NET_TIMER_CYCLE)/5) /* 0.2[s] 間隔            */
     128
     129/*
     130 *  到達可能状態の有効時間
     131 */
     132
     133#define ND6_DEF_REACHABLE_TIME          (30*SYSTIM_HZ)  /* 到達可能状態の有効時間の既定値              */
    156134#define ND6_MAX_REACHABLE_TIME          (60*60*SYSTIM_HZ)
    157                                                         /* 到達可能状æ
    158 ‹ã®æœ‰åŠ¹æ™‚間の既定値            */
     135                                                        /* 到達可能状態の有効時間の既定値              */
    159136#define ND6_RECALC_REACHTM_INTERVAL     (60*60*2*SYSTIM_HZ)
    160                                                         /* 到達可能状æ
    161 ‹ã®æœ‰åŠ¹æ™‚間再計算間隔 */
    162 
    163 #define ND6_MIN_REACHTM_RAND_FACTOR     512             /* 最小乱数補正値、1,024 * 0.5          */
    164 
    165 #if 1                                                   /* タイマーの起動間隔を考æ
    166 ®ã—、規定より短く設定 */
    167 #define ND6_MAX_REACHTM_RAND_FACTOR     1484            /* 最小乱数補正値、1,024 * 1.45                 */
     137                                                        /* 到達可能状態の有効時間再計算間隔     */
     138
     139#define ND6_MIN_REACHTM_RAND_FACTOR     512             /* 最小乱数補正値、1,024 * 0.5          */
     140
     141#if 1                                                   /* タイマーの起動間隔を考慮し、規定より短く設定       */
     142#define ND6_MAX_REACHTM_RAND_FACTOR     1484            /* 最小乱数補正値、1,024 * 1.45                 */
    168143#else
    169 #define ND6_MAX_REACHTM_RAND_FACTOR     1536            /* 最小乱数補正値、1,024 * 1.5                  */
     144#define ND6_MAX_REACHTM_RAND_FACTOR     1536            /* 最小乱数補正値、1,024 * 1.5                  */
    170145#endif
    171146
    172 /* 到達可能状æ
    173 ‹ã®æœ‰åŠ¹æ™‚間の計算マクロ */
     147/* 到達可能状態の有効時間の計算マクロ */
    174148
    175149#define ND6_CALC_REACH_TIME(b)          \
     
    178152
    179153/*
    180  *  近隣探索の送信間隔
     154 *  近隣探索の送信間隔
    181155 */
    182156
     
    184158
    185159/*
    186  *  ルータ通知により変更されることがある値
     160 *  ルータ通知により変更されることがある値
    187161 */
    188162
    189163#if NUM_ND6_DEF_RTR_ENTRY > 0
    190164
    191 /* ルータ通知を受信する場合は、通知された値 */
     165/* ルータ通知を受信する場合は、通知された値 */
    192166
    193167#define ND6_REACHABLE_TIME              nd6_reachable_time
     
    196170#else   /* #if NUM_ND6_DEF_RTR_ENTRY > 0 */
    197171
    198 /* ルータ通知を受信しない場合の値は既定値 */
     172/* ルータ通知を受信しない場合の値は既定値 */
    199173
    200174#define ND6_REACHABLE_TIME              ND6_DEF_REACHABLE_TIME
     
    204178
    205179/*
    206  *  ディフォルトルータ・リスト
     180 *  ディフォルトルータ・リスト
    207181 */
    208182
    209183typedef struct t_def_router {
    210184        T_IN6_ADDR      addr;
    211         SYSTIM          expire;         /* [us] 有効時間が切れる時刻  */
    212         uint32_t        lifetime;       /* [us] 有効時間                    */
    213         uint16_t        plistmap;       /* プレフィックスマップ               */
    214         uint8_t         flags;          /* ルータ通知のフラグ          */
     185        SYSTIM          expire;         /* [us] 有効時間が切れる時刻      */
     186        uint32_t        lifetime;       /* [us] 有効時間                    */
     187        uint16_t        plistmap;       /* プレフィックスマップ           */
     188        uint8_t         flags;          /* ルータ通知のフラグ            */
    215189        uint8_t         state;
    216190        } T_DEF_ROUTER;
    217191
    218 /* ディフォルトルータ・リストの状æ
    219 ‹ */
    220 
    221 #define ND6_DEF_RTR_BUSY                0xff    /* 使用中            */
    222 
    223 /* プレフィックスのインデックス */
     192/* ディフォルトルータ・リストの状態 */
     193
     194#define ND6_DEF_RTR_BUSY                0xff    /* 使用中          */
     195
     196/* プレフィックスのインデックス */
    224197
    225198#define ND6_PREFIX_IX_INVALID           0xff
    226199
    227200/*
    228  *  プレフィックス・リスト
     201 *  プレフィックス・リスト
    229202 */
    230203
    231204typedef struct t_nd6_prefix {
    232         T_IN6_ADDR      prefix;         /* プレフィックス                */
    233         uint32_t        expire;         /* [s] 有効時間が切れる時刻   */
    234         uint32_t        preferred;      /* [s] 推奨有効時間が切れる時刻     */
    235         uint32_t        vltime;         /* [s] 有効時間                     */
    236         uint32_t        pltime;         /* [s] 推奨有効時間               */
    237         uint16_t        routermap;      /* ルータマップ                   */
    238         uint8_t         flags;          /* フラグ                    */
    239         uint8_t         prefix_len;     /* プレフィックス長             */
     205        T_IN6_ADDR      prefix;         /* プレフィックス              */
     206        uint32_t        expire;         /* [s] 有効時間が切れる時刻       */
     207        uint32_t        preferred;      /* [s] 推奨有効時間が切れる時刻     */
     208        uint32_t        vltime;         /* [s] 有効時間                     */
     209        uint32_t        pltime;         /* [s] 推奨有効時間           */
     210        uint16_t        routermap;      /* ルータマップ                       */
     211        uint8_t         flags;          /* フラグ                  */
     212        uint8_t         prefix_len;     /* プレフィックス長             */
    240213        } T_ND6_PREFIX;
    241214
    242 /* フラグ */
    243 
    244 #define ND6_PREFIX_FLAG_ONLINK          UINT_C(0x80)    /* オンリンクプレフィックス */
    245 #define ND6_PREFIX_FLAG_AUTO            UINT_C(0x40)    /* ステートレス・アドレス自動設定*/
    246 
    247 #define ND6_PREFIX_STATE_BUSY           UINT_C(0x01)    /* 使用中            */
    248 #define ND6_PREFIX_STATE_ONLINK         UINT_C(0x02)    /* オンリンク状æ
    249 ‹       */
    250 #define ND6_PREFIX_STATE_DETACHED       UINT_C(0x04)    /* 非使用状æ
    251 ‹       */
    252 
    253 /*
    254  *  変数
     215/* フラグ */
     216
     217#define ND6_PREFIX_FLAG_ONLINK          UINT_C(0x80)    /* オンリンクプレフィックス */
     218#define ND6_PREFIX_FLAG_AUTO            UINT_C(0x40)    /* ステートレス・アドレス自動設定*/
     219
     220#define ND6_PREFIX_STATE_BUSY           UINT_C(0x01)    /* 使用中          */
     221#define ND6_PREFIX_STATE_ONLINK         UINT_C(0x02)    /* オンリンク状態      */
     222#define ND6_PREFIX_STATE_DETACHED       UINT_C(0x04)    /* 非使用状態        */
     223
     224/*
     225 *  変数
    255226 */
    256227
     
    261232
    262233/*
    263  *  関数
     234 *  関数
    264235 */
    265236
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    124112
    125113/*
    126  *  局所関数
     114 *  局所関数
    127115 */
    128116
     
    134122
    135123/*
    136  *  nd6_dad_duplicated -- 重複アドレスを検出した時の処理
     124 *  nd6_dad_duplicated -- 重複アドレスを検出した時の処理
    137125 */
    138126
     
    147135                ifa->flags |=  IN6_IFF_DUPLICATED;
    148136
    149                 /* タイマーを停止する。*/
     137                /* タイマーを停止する。*/
    150138                untimeout((callout_func)nd6_dad_timer, ifa);
    151139
    152140                /*
    153                  *  もし IPv6 アドレスが、ユニークに割り当てらた
    154                  * (イーサネット用の EUI-64)ハードウェアアドレスをベースとした
    155                  *  インタフェース ID で生成されたのであれば、
    156                  *  このインタフェースでの IPv6 の動作は無効にすべきである
    157                  * (RFC2462bis-03 セクション 5.4.5)。
     141                 *  もし IPv6 アドレスが、ユニークに割り当てらた
     142                 * (イーサネット用の EUI-64)ハードウェアアドレスをベースとした
     143                 *  インタフェース ID で生成されたのであれば、
     144                 *  このインタフェースでの IPv6 の動作は無効にすべきである
     145                 * (RFC2462bis-03 セクション 5.4.5)。
    158146                 */
    159147                if (IN6_IS_ADDR_LINKLOCAL(&ifa->addr))
     
    163151
    164152/*
    165  *  nd6_dad_ns_output -- 重複アドレス検出 (DAD) 要請を出力する。
     153 *  nd6_dad_ns_output -- 重複アドレス検出 (DAD) 要請を出力する。
    166154 */
    167155
     
    176164
    177165/*
    178  *  nd6_dad_ns_input -- 重複アドレス検出 (DAD) 要請å
    179 ¥åŠ›
     166 *  nd6_dad_ns_input -- 重複アドレス検出 (DAD) 要請入力
    180167 */
    181168
     
    186173
    187174        /*
    188          *  まだ、重複アドレス検出要請を出力していない場合
     175         *  まだ、重複アドレス検出要請を出力していない場合
    189176         */
    190177        if (ifa->ns_ocount == 0)
     
    195182
    196183/*
    197  *  nd6_dad_na_input -- 重複アドレス検出 (DAD) 通知å
    198 ¥åŠ›
     184 *  nd6_dad_na_input -- 重複アドレス検出 (DAD) 通知入力
    199185 */
    200186
     
    208194
    209195/*
    210  *  nd6_dad_timer -- 重複アドレス検出 (DAD) タイマー
     196 *  nd6_dad_timer -- 重複アドレス検出 (DAD) タイマー
    211197 */
    212198
     
    229215                nd6_dad_ns_output(ifp, ifa);
    230216
    231                 /* タイムアウトを近隣探索の送信間隔に設定する。*/
     217                /* タイムアウトを近隣探索の送信間隔に設定する。*/
    232218                timeout((callout_func)nd6_dad_timer, ifa, ND6_RETRANS_TIME * NET_TIMER_HZ / SYSTIM_HZ);
    233219                }
     
    241227
    242228/*
    243  *  nd6_ns_input -- 近隣要請のå
    244 ¥åŠ›å‡¦ç†ã€‚
     229 *  nd6_ns_input -- 近隣要請の入力処理。
    245230 */
    246231
     
    264249
    265250        /*
    266          *  ヘッダのチェック、以下の場合は破棄する。
    267          *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
    268          *    ・ヘッダ長が短い
     251         *  ヘッダのチェック、以下の場合は破棄する。
     252         *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
     253         *    ・ヘッダ長が短い
    269254         */
    270255        if (ip6h->hlim != IPV6_MAXHLIM || input->len - off < NEIGHBOR_SOLICIT_HDR_SIZE)
     
    275260        if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src)) {
    276261                /*
    277                  *  始点アドレスが無指定なら、重複アドレス検出
    278                  *  あてå
    279 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ã€è¦è«‹ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã§ãªã‘ればならない。
     262                 *  始点アドレスが無指定なら、重複アドレス検出
     263                 *  あて先アドレスは、要請マルチキャストでなければならない。
    280264                 */
    281265                if (!IN6_IS_ADDR_NS_MULTICAST(&ip6h->dst))
     
    283267                }
    284268
    285         /* 目的アドレスがマルチキャストならエラー */
     269        /* 目的アドレスがマルチキャストならエラー */
    286270        if (IN6_IS_ADDR_MULTICAST(&nsh->target))
    287271                goto err_ret;
    288272
    289         /* 近隣探索オプションのオフセットを記録する。*/
     273        /* 近隣探索オプションのオフセットを記録する。*/
    290274        if (nd6_options(nd_opt_off, input->buf + (off + NEIGHBOR_SOLICIT_HDR_SIZE),
    291275                                    input->len - (off + NEIGHBOR_SOLICIT_HDR_SIZE)) != E_OK)
    292276                goto err_ret;
    293277
    294         /* 近隣探索オプション (始点リンクアドレス) */
     278        /* 近隣探索オプション (始点リンクアドレス) */
    295279        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_SOURCE_LINKADDR)]) {
    296280                opth = (T_ND_OPT_HDR *)((uint8_t *)(input->buf + off + NEIGHBOR_SOLICIT_HDR_SIZE) +
    297281                                        nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_SOURCE_LINKADDR)] - 8);
    298                 /* 注意: オプションオフセットé
    299 åˆ—には、オフセット + 8 が設定されている。*/
     282                /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/
    300283                lladdr     = (uint8_t *)(opth + 1);
    301284                lladdr_len = (opth->len << 3);
     
    305288                goto err_ret;
    306289
    307         /* 宛å
    308 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆãªã‚‰è¿‘隣通知にデータリンク層のアドレスを付ける。*/
     290        /* 宛先アドレスがマルチキャストなら近隣通知にデータリンク層のアドレスを付ける。*/
    309291        if (IN6_IS_ADDR_MULTICAST(&ip6h->dst))
    310292                tlladdr = true;
     
    313295
    314296        /*
    315          *  目的アドレスが、自分のネットワークインタフェースに
    316          *  割り当てられているアドレスか調べる。
    317          *  なお、代理サービスは実è£
    318 ã—ていない。
     297         *  目的アドレスが、自分のネットワークインタフェースに
     298         *  割り当てられているアドレスか調べる。
     299         *  なお、代理サービスは実装していない。
    319300         */
    320301        ifa = in6_lookup_ifaddr(ifp, &nsh->target);
     
    323304                goto free_ret;
    324305
    325         /* 探索結果アドレスが重複していれば応答しないで終了する。*/
     306        /* 探索結果アドレスが重複していれば応答しないで終了する。*/
    326307        if (ifa->flags & IN6_IFF_DUPLICATED)
    327308                goto err_ret;
    328309
    329310        /*
    330          *  ネットワークインタフェースのアドレス長が一致しなければエラー
     311         *  ネットワークインタフェースのアドレス長が一致しなければエラー
    331312         */
    332313        if (lladdr && lladdr_len != ((sizeof(T_IF_ADDR) + sizeof(T_ND_OPT_HDR) + 7) & ~7))
     
    334315
    335316        /*
    336          *  始点アドレスが自分のアドレスと一致すれば重複している。
     317         *  始点アドレスが自分のアドレスと一致すれば重複している。
    337318         */
    338319        if (IN6_ARE_ADDR_EQUAL(&ifa->addr, &ip6h->src))
    339320                goto free_ret;
    340321
    341         /* 重複検出中に、近隣要請を受信したときの処理 */
     322        /* 重複検出中に、近隣要請を受信したときの処理 */
    342323        if (ifa->flags & IN6_IFF_TENTATIVE) {
    343324                if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src))
     
    352333
    353334        /*
    354          *  始点アドレスが無指定なら、送信相手は重複アドレス検出中で、
    355          *  直接送信することはできないので、å
    356 ¨ãƒŽãƒ¼ãƒ‰ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆ
    357          *  アドレスに送信する。
     335         *  始点アドレスが無指定なら、送信相手は重複アドレス検出中で、
     336         *  直接送信することはできないので、全ノードマルチキャスト
     337         *  アドレスに送信する。
    358338         */
    359339        if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src)) {
     
    362342                }
    363343
    364         /* 近隣キャッシュに登録する。*/
     344        /* 近隣キャッシュに登録する。*/
    365345        nd6_cache_lladdr(ifp, &ip6h->src, (T_IF_ADDR *)lladdr, ND_NEIGHBOR_SOLICIT, 0);
    366346
     
    377357
    378358/*
    379  *  nd6_ns_output -- 近隣要請を出力する。
     359 *  nd6_ns_output -- 近隣要請を出力する。
    380360 */
    381361
     
    396376                return;
    397377
    398         /* 近隣要請ペイロード長を計算する。*/
     378        /* 近隣要請ペイロード長を計算する。*/
    399379        if (!dad && IF_SOFTC_TO_IFADDR(ifp->ic))
    400380                len = (NEIGHBOR_SOLICIT_HDR_SIZE + ND_OPT_HDR_SIZE + sizeof(T_IF_ADDR) + 7) >> 3 << 3;
     
    403383
    404384        /*
    405          *  要請マルチキャスト・アドレス宛の近隣探索では、
    406          *  他のリンクからの偽造されたデータグラムを
    407          *  排除するため、ホップリミットに IPV6_MAXHLIM (255) を設定する。
     385         *  要請マルチキャスト・アドレス宛の近隣探索では、
     386         *  他のリンクからの偽造されたデータグラムを
     387         *  排除するため、ホップリミットに IPV6_MAXHLIM (255) を設定する。
    408388         */
    409389        if (IN6_IS_ADDR_UNSPECIFIED(daddr) || IN6_IS_ADDR_MULTICAST(daddr))
    410390                ipflags = IPV6_OUT_SET_HOP_LIMIT(IPV6_OUT_FLG_HOP_LIMIT, IPV6_MAXHLIM);
    411391
    412         /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/
     392        /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/
    413393        if (in6_get_datagram(&output, len, 0, daddr, NULL,
    414394                             IPPROTO_ICMPV6, IPV6_MAXHLIM,
     
    420400        if (IN6_IS_ADDR_UNSPECIFIED(daddr)) {
    421401
    422                 /* 宛å
    423 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒç„¡æŒ‡å®šã®å ´åˆã¯ã€è¦è«‹ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’設定する。*/
     402                /* 宛先アドレスが無指定の場合は、要請マルチキャストアドレスを設定する。*/
    424403                ip6h->dst.s6_addr32[0] = IPV6_ADDR_INT32_MLL;
    425404                ip6h->dst.s6_addr32[2] = IPV6_ADDR_INT32_ONE;
     
    428407                }
    429408
    430         /* 送信å
    431 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã®è¨­å®š */
     409        /* 送信元アドレスの設定 */
    432410        if (!dad) {
    433411
    434                 /* 重複アドレス検出ではない時の送信å
    435 ƒã‚¢ãƒ‰ãƒ¬ã‚¹æ±ºå®šå‡¦ç†ã€‚*/
     412                /* 重複アドレス検出ではない時の送信元アドレス決定処理。*/
    436413                T_IN6_ADDR *saddr;
    437414
    438415                if (ln && ln->hold) {
    439416                        /*
    440                          * 送信がペンディングされているデータグラムの
    441                          * 送信å
    442 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’利用する。
     417                         * 送信がペンディングされているデータグラムの
     418                         * 送信元アドレスを利用する。
    443419                         */
    444420                        if (ln->hold->len > IF_IP6_HDR_SIZE)
     
    454430                else {
    455431                        /*
    456                          *  宛å
    457 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    458 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    459                          *  ネットワークインタフェースから探索して利用する。
     432                         *  宛先アドレスにふさわしい送信元アドレスを、
     433                         *  ネットワークインタフェースから探索して利用する。
    460434                         */
    461435                        T_IN6_IFADDR *ifa;
     
    470444        else {
    471445
    472                 /* 重複アドレス検出時の送信å
    473 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ç„¡æŒ‡å®šã€‚*/
     446                /* 重複アドレス検出時の送信元アドレスは無指定。*/
    474447                memset(&ip6h->src, 0, sizeof(T_IN6_ADDR));
    475448                }
    476449
    477         /* 近隣要請ヘッダを設定する。*/
     450        /* 近隣要請ヘッダを設定する。*/
    478451        nsh = GET_NEIGHBOR_SOLICIT_HDR(output, IF_IP6_NEIGHBOR_SOLICIT_HDR_OFFSET);
    479452        nsh->hdr.type        = ND_NEIGHBOR_SOLICIT;
     
    484457        if (!dad && (mac = IF_SOFTC_TO_IFADDR(ifp->ic)) != NULL) {
    485458
    486                 /* 近隣探索オプションとして、探索目標の MAC アドレスを設定する。*/
     459                /* 近隣探索オプションとして、探索目標の MAC アドレスを設定する。*/
    487460                T_ND_OPT_HDR    *opth;
    488461                uint_t          optlen;
     
    496469                }
    497470
    498         /* チェックサムを計算する。*/
     471        /* チェックサムを計算する。*/
    499472        nsh->hdr.sum = 0;
    500473        nsh->hdr.sum = in6_cksum(output, IPPROTO_ICMPV6, (uint8_t*)nsh - output->buf, len);
    501474
    502         /* 送信する。*/
     475        /* 送信する。*/
    503476        NET_COUNT_ICMP6(net_count_nd6[NC_ICMP6_OUT_OCTETS],
    504477                       output->len - GET_IF_IP6_HDR_SIZE(output));
     
    510483
    511484/*
    512  *  nd6_na_input -- 近隣通知のå
    513 ¥åŠ›å‡¦ç†ã€‚
     485 *  nd6_na_input -- 近隣通知の入力処理。
    514486 */
    515487
     
    534506
    535507        /*
    536          *  ヘッダのチェック、以下の場合は破棄する。
    537          *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
    538          *    ・ヘッダ長が短い
     508         *  ヘッダのチェック、以下の場合は破棄する。
     509         *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
     510         *    ・ヘッダ長が短い
    539511         */
    540512        if (ip6h->hlim != IPV6_MAXHLIM || input->len - off < NEIGHBOR_ADVERT_HDR_SIZE)
     
    543515        nah  = (T_NEIGHBOR_ADVERT_HDR *)(input->buf + off);
    544516
    545         /* 目的アドレスがマルチキャストならエラー */
     517        /* 目的アドレスがマルチキャストならエラー */
    546518        if (IN6_IS_ADDR_MULTICAST(&nah->target))
    547519                goto err_ret;
    548520
    549         /* 近隣要請への応答で、宛å
    550 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆãªã‚‰ã‚¨ãƒ©ãƒ¼ */
     521        /* 近隣要請への応答で、宛先アドレスがマルチキャストならエラー */
    551522        if ((nah->nd_na_flags_reserved & ND_NA_FLG_SOLICITED) &&
    552523            IN6_IS_ADDR_MULTICAST(&ip6h->dst))
    553524                goto err_ret;
    554525
    555         /* 近隣探索オプションのオフセットを記録する。*/
     526        /* 近隣探索オプションのオフセットを記録する。*/
    556527        if (nd6_options(nd_opt_off, input->buf + (off + NEIGHBOR_ADVERT_HDR_SIZE),
    557528                                    input->len - (off + NEIGHBOR_ADVERT_HDR_SIZE)) != E_OK)
    558529                goto err_ret;
    559530
    560         /* 近隣探索オプション (目的リンクアドレス) */
     531        /* 近隣探索オプション (目的リンクアドレス) */
    561532        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_TARGET_LINKADDR)]) {
    562533                opth = (T_ND_OPT_HDR *)((uint8_t *)(input->buf + off + NEIGHBOR_ADVERT_HDR_SIZE) +
    563534                                        nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_TARGET_LINKADDR)] - 8);
    564                 /* 注意: オプションオフセットé
    565 åˆ—には、オフセット + 8 が設定されている。*/
     535                /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/
    566536                lladdr     = (uint8_t *)(opth + 1);
    567537                lladdr_len = (opth->len << 3);
     
    571541
    572542        /*
    573          *  目的アドレスが自分のネットワークインタフェースに割り当てられているアドレスの
    574          *  いずれかに一致したときは、重複していることを意味している。
     543         *  目的アドレスが自分のネットワークインタフェースに割り当てられているアドレスの
     544         *  いずれかに一致したときは、重複していることを意味している。
    575545         */
    576546        if (ifa) {
     
    583553
    584554        /*
    585          *  ネットワークインタフェースのアドレス長が一致しなければエラー
     555         *  ネットワークインタフェースのアドレス長が一致しなければエラー
    586556         */
    587557        if (lladdr && lladdr_len != ((sizeof(T_IF_ADDR) + sizeof(T_ND_OPT_HDR) + 7) & ~7))
    588558                goto err_ret;
    589559
    590         /* 近隣キャッシュを探索する。*/
     560        /* 近隣キャッシュを探索する。*/
    591561        syscall(wai_sem(SEM_ND6_CACHE));
    592562        if ((ln = nd6_lookup(&nah->target, false)) == NULL)
    593563                goto free_ret;
    594564
    595         /* 近隣キャッシュの状æ
    596 ‹ãŒã€ãƒ‡ãƒ¼ã‚¿ãƒªãƒ³ã‚¯å±¤ã®ã‚¢ãƒ‰ãƒ¬ã‚¹æœªè§£æ±ºã®å ´åˆ */
     565        /* 近隣キャッシュの状態が、データリンク層のアドレス未解決の場合 */
    597566        if (ln->state == ND6_LLINFO_INCOMPLETE) {
    598                 /* 通知されたデータリンク層のアドレスの長さが 0 の場合 */
     567                /* 通知されたデータリンク層のアドレスの長さが 0 の場合 */
    599568                if (lladdr == NULL)
    600569                        goto free_ret;
     
    631600
    632601                /*
    633                  *  状æ
    634 ‹é·ç§»è¡¨
     602                 *  状態遷移表
    635603                 *
    636604                 *  nd_na_flags_reserved
    637                  *  OVERRIDE    SOLICTED lladdr llchange 処理 (L: lladdr を登録する)
     605                 *  OVERRIDE    SOLICTED lladdr llchange 処理 (L: lladdr を登録する)
    638606                 *
    639607                 *      F           F       N      -    (2c)
     
    651619                 */
    652620                if ((nah->nd_na_flags_reserved & ND_NA_FLG_OVERRIDE) == 0 && (lladdr != NULL && llchange)) {    /* (1) */
    653                         /* 状æ
    654 ‹ãŒ REACHABLE なら STALE に遷移する。*/
     621                        /* 状態が REACHABLE なら STALE に遷移する。*/
    655622                        if (ln->state == ND6_LLINFO_REACHABLE) {
    656623                                syscall(get_tim(&now));
     
    664631                         lladdr == NULL) {                                                                              /* (2c) */
    665632
    666                         /* データリンク層のアドレスが通知されていれば更新する。*/
     633                        /* データリンク層のアドレスが通知されていれば更新する。*/
    667634                        if (lladdr != NULL)
    668635                                ln->ifaddr = *(T_IF_ADDR *)lladdr;
    669636
    670                         /* 近隣要請への応答なら REACHABLE に遷移する。*/
     637                        /* 近隣要請への応答なら REACHABLE に遷移する。*/
    671638                        if (nah->nd_na_flags_reserved & ND_NA_FLG_SOLICITED) {
    672639                                ln->state = ND6_LLINFO_REACHABLE;
     
    678645                                }
    679646                        /*
    680                          *  データリンク層のアドレスが通知され、
    681                          *  異なるアドレスなら更新する。
     647                         *  データリンク層のアドレスが通知され、
     648                         *  異なるアドレスなら更新する。
    682649                         */
    683650                        else if (lladdr != NULL && llchange) {
     
    688655                        }
    689656
    690                 /* ルータ通知フラグの処理 */
     657                /* ルータ通知フラグの処理 */
    691658                if ((ln->flags        & ND6_LLIF_ROUTER ) != 0 &&
    692659                    (nah->nd_na_flags_reserved & ND_NA_FLG_ROUTER) == 0) {
    693660                        /*
    694                          *  送信相手がルータ通知フラグを無効にした場合。
    695                          *  ディフォルト・ルータリストから対象のルータを削除し、
    696                          *  近隣探索キャッシュを更新する。
     661                         *  送信相手がルータ通知フラグを無効にした場合。
     662                         *  ディフォルト・ルータリストから対象のルータを削除し、
     663                         *  近隣探索キャッシュを更新する。
    697664                         */
    698665                        T_DEF_ROUTER    *dr = NULL;
     
    712679        ln->asked = 0;
    713680
    714         /* アドレス解決å¾
    715 ã¡ã®ãƒ‡ãƒ¼ã‚¿ã‚°ãƒ©ãƒ ãŒã‚れば送信する。*/
     681        /* アドレス解決待ちのデータグラムがあれば送信する。*/
    716682        nd6_output_hold(ifp, ln);
    717683
     
    727693
    728694/*
    729  *  nd6_na_output -- 近隣通知を出力する。
     695 *  nd6_na_output -- 近隣通知を出力する。
    730696 */
    731697
     
    745711
    746712        /*
    747          *  近隣通知ペイロード長を計算する。
    748          *  tlladdr が真ならネットワークインタフェースのアドレスを追加する。
     713         *  近隣通知ペイロード長を計算する。
     714         *  tlladdr が真ならネットワークインタフェースのアドレスを追加する。
    749715         */
    750716        if (tlladdr && IF_SOFTC_TO_IFADDR(ifp->ic))
     
    754720
    755721        /*
    756          *  他のリンクからの偽造されたデータグラムを
    757          *  排除するため、ホップリミットに IPV6_MAXHLIM (255) を設定する。
     722         *  他のリンクからの偽造されたデータグラムを
     723         *  排除するため、ホップリミットに IPV6_MAXHLIM (255) を設定する。
    758724         */
    759725        ipflags = IPV6_OUT_SET_HOP_LIMIT(IPV6_OUT_FLG_HOP_LIMIT, IPV6_MAXHLIM);
    760726
    761         /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/
     727        /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/
    762728        if (in6_get_datagram(&output, len, 0, daddr, NULL,
    763729                             IPPROTO_ICMPV6, IPV6_MAXHLIM,
     
    769735        if (IN6_IS_ADDR_UNSPECIFIED(daddr)) {
    770736                /*
    771                  *  宛å
    772 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒç„¡æŒ‡å®šã®å ´åˆã¯ã€
    773                  *  リンクローカルå
    774 ¨ãƒŽãƒ¼ãƒ‰ãƒ»ãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’設定する。
     737                 *  宛先アドレスが無指定の場合は、
     738                 *  リンクローカル全ノード・マルチキャストアドレスを設定する。
    775739                 */
    776740                ip6h->dst.s6_addr32[0] = IPV6_ADDR_INT32_MLL;
     
    784748
    785749        /*
    786          *  宛å
    787 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    788 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    789          *  ネットワークインタフェースから探索して利用する。
     750         *  宛先アドレスにふさわしい送信元アドレスを、
     751         *  ネットワークインタフェースから探索して利用する。
    790752         */
    791753        if ((ifa = in6_ifawithifp(ifp, &ip6h->dst)) == NULL) {
     
    795757        memcpy(&ip6h->src, &ifa->addr, sizeof(T_IN6_ADDR));
    796758
    797         /* 近隣通知ヘッダを設定する。*/
     759        /* 近隣通知ヘッダを設定する。*/
    798760        nah = GET_NEIGHBOR_ADVERT_HDR(output, IF_IP6_NEIGHBOR_ADVERT_HDR_OFFSET);
    799761        nah->hdr.type        = ND_NEIGHBOR_ADVERT;
     
    801763        memcpy(&nah->target, taddr, sizeof(T_IN6_ADDR));
    802764
    803         /* tlladdr が真ならネットワークインタフェースのアドレスを追加する。*/
     765        /* tlladdr が真ならネットワークインタフェースのアドレスを追加する。*/
    804766        if (tlladdr && (mac = IF_SOFTC_TO_IFADDR(ifp->ic)) != NULL) {
    805767
     
    819781        nah->nd_na_flags_reserved = flags;
    820782
    821         /* チェックサムを計算する。*/
     783        /* チェックサムを計算する。*/
    822784        nah->hdr.sum = 0;
    823785        nah->hdr.sum = in6_cksum(output, IPPROTO_ICMPV6, (uint8_t*)nah - output->buf, len);
    824786
    825         /* 送信する。*/
     787        /* 送信する。*/
    826788        NET_COUNT_ICMP6(net_count_nd6[NC_ICMP6_OUT_OCTETS],
    827789                       output->len - GET_IF_IP6_HDR_SIZE(output));
     
    833795
    834796/*
    835  *  nd6_dad_start -- 重複アドレス検出 (DAD) を開始する。
     797 *  nd6_dad_start -- 重複アドレス検出 (DAD) を開始する。
    836798 *
    837  *    第3引数のtick は、インタフェースが起動されてから、重複検出を
    838  *    送信するまでの最小é
    839 å»¶å€¤ã§ã‚る。
     799 *    第3引数のtick は、インタフェースが起動されてから、重複検出を
     800 *    送信するまでの最小遅延値である。
    840801 */
    841802
     
    843804nd6_dad_start (T_IFNET *ifp, T_IN6_IFADDR *ifa, int_t *tick)
    844805{
    845         /* フラグをチェックする。*/
     806        /* フラグをチェックする。*/
    846807        if (!(ifa->flags & IN6_IFF_TENTATIVE))
    847808                return;
     
    860821                return;
    861822
    862         /* 重複アドレス検出カウンタをリセットする。*/
     823        /* 重複アドレス検出カウンタをリセットする。*/
    863824        ifa->ns_icount = ifa->na_icount = ifa->ns_ocount = 0;
    864825
    865826        /*
    866          *  重複アドレス検出要請を送信する。ただし、インタフェースを
    867          *  初期化した直後に、最初に送信する場合は、ランダムなé
    868 å»¶ã‚’行う。
     827         *  重複アドレス検出要請を送信する。ただし、インタフェースを
     828         *  初期化した直後に、最初に送信する場合は、ランダムな遅延を行う。
    869829         */
    870830        if (tick == NULL) {
    871831                nd6_dad_ns_output(ifp, ifa);
    872832
    873                 /* タイムアウトを近隣探索の送信間隔に設定する。*/
     833                /* タイムアウトを近隣探索の送信間隔に設定する。*/
    874834                timeout((callout_func)nd6_dad_timer, ifa, ND6_RETRANS_TIME * NET_TIMER_HZ / SYSTIM_HZ);
    875835                }
     
    877837                int_t ntick;
    878838
    879                 if (*tick == 0) /* 最初の送信 */
     839                if (*tick == 0) /* 最初の送信 */
    880840                        ntick = net_rand() % (ND6_FIRST_DAD_DELAY_TIME * NET_TIMER_HZ / SYSTIM_HZ);
    881841                else
  • azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/nd6_rtr.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    123111
    124112/*
    125  *  外部関数の定義
     113 *  外部関数の定義
    126114 */
    127115
     
    133121
    134122/*
    135  *  å
    136 ¨åŸŸå¤‰æ•°
    137  */
    138 
    139 SYSTIM  nd6_base_reachable_time         = ND6_DEF_REACHABLE_TIME;       /* ルータから通知された値            */
    140 SYSTIM  nd6_reachable_time              = ND6_DEF_REACHABLE_TIME;       /* ルータから通知された値の補正値        */
    141 SYSTIM  nd6_recalc_reachtm_interval     = ND6_RECALC_REACHTM_INTERVAL;  /* 到達可能状æ
    142 ‹ã®æœ‰åŠ¹æ™‚間再計算間隔 */
    143 SYSTIM  nd6_retrans_time                = ND6_DEF_RETRANS_TIME;         /* 近隣探索の送信間隔                  */
    144 uint8_t ip6_defhlim                     = IPV6_DEFHLIM;                 /* ホップリミットの規定値            */
    145 
    146 /*
    147  *  局所変数
    148  */
    149 
    150 /*
    151  *  プレフィックス・リスト
     123 *  全域変数
     124 */
     125
     126SYSTIM  nd6_base_reachable_time         = ND6_DEF_REACHABLE_TIME;       /* ルータから通知された値          */
     127SYSTIM  nd6_reachable_time              = ND6_DEF_REACHABLE_TIME;       /* ルータから通知された値の補正値      */
     128SYSTIM  nd6_recalc_reachtm_interval     = ND6_RECALC_REACHTM_INTERVAL;  /* 到達可能状態の有効時間再計算間隔     */
     129SYSTIM  nd6_retrans_time                = ND6_DEF_RETRANS_TIME;         /* 近隣探索の送信間隔                    */
     130uint8_t ip6_defhlim                     = IPV6_DEFHLIM;                 /* ホップリミットの規定値          */
     131
     132/*
     133 *  局所変数
     134 */
     135
     136/*
     137 *  プレフィックス・リスト
    152138 */
    153139
     
    155141
    156142/*
    157  *  ディフォルトルータ・リスト
     143 *  ディフォルトルータ・リスト
    158144 */
    159145
    160146static T_DEF_ROUTER     nd6_def_router[NUM_ND6_DEF_RTR_ENTRY];
    161 static uint_t           def_router_count = 0;                           /* リストにあるルータ数 */
    162 
    163 /*
    164  *  make_mask -- マップ用のマスクを生成する。
     147static uint_t           def_router_count = 0;                           /* リストにあるルータ数 */
     148
     149/*
     150 *  make_mask -- マップ用のマスクを生成する。
    165151 */
    166152
     
    171157        int_t   ix;
    172158
    173         /* マスクを生成する。*/
     159        /* マスクを生成する。*/
    174160        mask = 1;
    175161        for (ix = index; ix -- > 0; )
     
    181167/*
    182168 *  find_pfxlist_reachable_router --
    183  *      指定したプレフィックスを通知したルータがリンク上に存在するかチェックする。
     169 *      指定したプレフィックスを通知したルータがリンク上に存在するかチェックする。
    184170 */
    185171
     
    205191
    206192/*
    207  *  pfxlist_onlink_check -- プレフィックス・リストのオンリンク状æ
    208 ‹ã‚’チェックする。
     193 *  pfxlist_onlink_check -- プレフィックス・リストのオンリンク状態をチェックする。
    209194 *
    210  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    211  *          ロックしてから呼び出すこと。
     195 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     196 *          ロックしてから呼び出すこと。
    212197 */
    213198
     
    230215        if (ix >= 0) {
    231216                /*
    232                  *  オンリンク状æ
    233 ‹ã®ãƒ—レフィックスが最低一つ存在するときの処理。
    234                  *  各プレフィックスのオンリンク状æ
    235 ‹ã‚’、それらを通知してきたルータの
    236                  *  状æ
    237 ‹ã«å¾“って設定する。
     217                 *  オンリンク状態のプレフィックスが最低一つ存在するときの処理。
     218                 *  各プレフィックスのオンリンク状態を、それらを通知してきたルータの
     219                 *  状態に従って設定する。
    238220                 */
    239221
     
    256238        else {
    257239                /*
    258                  *  どのプレフィックスもオンリンクではなく、
    259                  *  ディフォルトルータも存在しないときの処理。
    260                  *  すべてのプレフィックスを使用可能状æ
    261 ‹ã«è¨­å®šã™ã‚‹ã€‚
     240                 *  どのプレフィックスもオンリンクではなく、
     241                 *  ディフォルトルータも存在しないときの処理。
     242                 *  すべてのプレフィックスを使用可能状態に設定する。
    262243                 */
    263244
     
    275256
    276257        /*
    277          *  各プレフィックス毎に、通知してきたルータの状æ
    278 ‹ã¨
    279          *  オンリンクの状æ
    280 ‹ãŒä¸€è‡´ã—なければ、オンリンク状æ
    281 ‹ã‚’更新する。
     258         *  各プレフィックス毎に、通知してきたルータの状態と
     259         *  オンリンクの状態が一致しなければ、オンリンク状態を更新する。
    282260         */
    283261        for (ix = NUM_ND6_PREFIX_ENTRY; ix -- > 0; ) {
     
    302280
    303281        /*
    304          *  リンク上にプレフィックスを通知しているルータが
    305          *  少なくとも 1 台存在するか確認する。
     282         *  リンク上にプレフィックスを通知しているルータが
     283         *  少なくとも 1 台存在するか確認する。
    306284         */
    307285        for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
     
    317295        if (ix >= 0) {
    318296                /*
    319                  *  リンク上にプレフィックスを通知しているルータが
    320                  *  少なくとも 1 台存在する時の処理。
     297                 *  リンク上にプレフィックスを通知しているルータが
     298                 *  少なくとも 1 台存在する時の処理。
    321299                 */
    322300                for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
     
    334312        else {
    335313                /*
    336                  *  リンク上にプレフィックスを通知しているルータが
    337                  *  1 台存在しない時はå
    338 ¨ã¦ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’利用できるようにする。
     314                 *  リンク上にプレフィックスを通知しているルータが
     315                 *  1 台存在しない時は全てのアドレスを利用できるようにする。
    339316                 */
    340317                for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) {
     
    347324
    348325/*
    349  *  pfxrtr_add -- プレフィックスエントリとディフォルトルータ・エントリをリンクする。
     326 *  pfxrtr_add -- プレフィックスエントリとディフォルトルータ・エントリをリンクする。
    350327 *
    351  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    352  *          ロックしてから呼び出すこと。
     328 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     329 *          ロックしてから呼び出すこと。
    353330 */
    354331
     
    356333pfxrtr_add (int_t prefix_index, int_t rtr_index)
    357334{
    358         /*  プレフィックスエントリとディフォルトルータ・エントリをリンクする。*/
     335        /*  プレフィックスエントリとディフォルトルータ・エントリをリンクする。*/
    359336        nd6_prefix[prefix_index].routermap |= make_mask(rtr_index);
    360337        nd6_def_router[rtr_index].plistmap |= make_mask(prefix_index);
     
    364341
    365342/*
    366  *  nd6_pfxrtr_lookup -- プレフィックスエントリからルータを探索する。
     343 *  nd6_pfxrtr_lookup -- プレフィックスエントリからルータを探索する。
    367344 */
    368345
     
    374351
    375352/*
    376  *  defrouter_select -- 優å
    377 ˆãƒ‡ã‚£ãƒ•ã‚©ãƒ«ãƒˆãƒ»ãƒ«ãƒ¼ã‚¿ã‚’選択しなおす。
     353 *  defrouter_select -- 優先ディフォルト・ルータを選択しなおす。
    378354 *
    379  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    380  *          ロックしてから呼び出すこと。
     355 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     356 *          ロックしてから呼び出すこと。
    381357 */
    382358
     
    392368                if ((ln = nd6_lookup(&dr->addr, false)) != NULL && ND6_IS_LLINFO_PROBREACH(ln)) {
    393369               
    394                         /* 選択したルータをå
    395 ˆé ­ã«ç§»ã™ã€‚*/
     370                        /* 選択したルータを先頭に移す。*/
    396371                        router = *dr;
    397372                        for (tix = ix; tix > 0; tix --)
     
    404379
    405380/*
    406  *  defrtrlist_update -- ディフォルトルータ・リストを更新する。
     381 *  defrtrlist_update -- ディフォルトルータ・リストを更新する。
    407382 *
    408  *      戻り値は、ルータのインデックス。
    409  *      ただし、値が -1 なら、プレフィックス・リストは更新しない。
     383 *      戻り値は、ルータのインデックス。
     384 *      ただし、値が -1 なら、プレフィックス・リストは更新しない。
    410385 */
    411386
     
    420395        syscall(wai_sem(SEM_ND6_DEFRTRLIST));
    421396
    422         /* 登録済か調べる。*/
     397        /* 登録済か調べる。*/
    423398        if ((fdr = nd6_defrtrlist_lookup(src)) != NULL) {
    424                 /* 登録済みの場合の処理 */
     399                /* 登録済みの場合の処理 */
    425400                if (lifetime == 0) {
    426401                        nd6_defrtrlist_del(fdr);
     
    429404                        }
    430405                else {
    431                         fdr->lifetime = lifetime * SYSTIM_HZ;           /* lifetime の単位は秒 */
     406                        fdr->lifetime = lifetime * SYSTIM_HZ;           /* lifetime の単位は秒 */
    432407                        fdr->flags    = flags;
    433408                        fdr->expire   = now + fdr->lifetime;
     
    443418        if (fdr == NULL && def_router_count < NUM_ND6_DEF_RTR_ENTRY) {
    444419                /*
    445                  *  def_router_count < NUM_ND6_DEF_RTR_ENTRY であれば、
    446                  *  nd6_def_router[def_router_count]; が空きエントリ
     420                 *  def_router_count < NUM_ND6_DEF_RTR_ENTRY であれば、
     421                 *  nd6_def_router[def_router_count]; が空きエントリ
    447422                 */
    448423                fdr = &nd6_def_router[def_router_count];
    449424                }
    450425
    451         /* 空きエントリがなければ、有効時間が短いエントリを削除する。*/
     426        /* 空きエントリがなければ、有効時間が短いエントリを削除する。*/
    452427        if (fdr == NULL) {
    453428                T_DEF_ROUTER    *sdr = NULL;
     
    458433                        diff = (int32_t)(dr->expire - now);
    459434                        if (diff <= 0) {        /* dr->expire <= now */
    460                                 /* 既に、有効時間が過ぎている。*/
     435                                /* 既に、有効時間が過ぎている。*/
    461436                                sdr = dr;
    462437                                break;
     
    471446                }
    472447
    473         /* 各メンバに値を設定する。*/
     448        /* 各メンバに値を設定する。*/
    474449        fdr->plistmap = 0;
    475450        memcpy(&fdr->addr, src, sizeof(T_IN6_ADDR));
    476         fdr->lifetime = lifetime * SYSTIM_HZ;           /* lifetime の単位は秒 */
     451        fdr->lifetime = lifetime * SYSTIM_HZ;           /* lifetime の単位は秒 */
    477452        fdr->flags    = flags;
    478453        fdr->expire   = now + fdr->lifetime;
     
    481456
    482457        /*
    483          *  ディフォルトルータとして登録するが、
    484          *  既にディフォルトルータがあれば選択しなおさない。
     458         *  ディフォルトルータとして登録するが、
     459         *  既にディフォルトルータがあれば選択しなおさない。
    485460         */
    486461        if (fdr - nd6_def_router != 0)
     
    492467
    493468/*
    494  *  in6_ifadd -- インタフェースにアドレスを追加する。
     469 *  in6_ifadd -- インタフェースにアドレスを追加する。
    495470 */
    496471
     
    506481
    507482        /*
    508          *  リンクローカルアドレスが未登録であれば何もしない。
     483         *  リンクローカルアドレスが未登録であれば何もしない。
    509484         */
    510485        if ((lla->flags & IN6_IFF_DEFINED) == 0)
     
    512487
    513488        /*
    514          *  ルータから通知されたプレフィックス長が、
    515          *  リンクローカルアドレスのプレフィックス長と
    516          *  異なっていればエラー
     489         *  ルータから通知されたプレフィックス長が、
     490         *  リンクローカルアドレスのプレフィックス長と
     491         *  異なっていればエラー
    517492         */
    518493        if (lla->prefix_len != pr->prefix_len)
    519494                return E_PAR;
    520495
    521         /* プレフィックスマスクを生成する。*/
     496        /* プレフィックスマスクを生成する。*/
    522497        in6_plen2pmask(&mask, pr->prefix_len);
    523498
    524         /* アドレスを生成する。*/
     499        /* アドレスを生成する。*/
    525500        for (ix = 0; ix < 4; ix ++)
    526501                addr.s6_addr32[ix] = (pr->prefix.s6_addr32[ix] &  mask.s6_addr32[ix])
    527502                                   | ( lla->addr.s6_addr32[ix] & ~mask.s6_addr32[ix]);
    528503
    529         /* フラグを初期化する。*/
     504        /* フラグを初期化する。*/
    530505        ia->flags = 0;
    531506
     
    536511
    537512/*
    538  *  nd6_prefix_lookup -- プレフィックスを探索する。
     513 *  nd6_prefix_lookup -- プレフィックスを探索する。
    539514 */
    540515
     
    556531
    557532/*
    558  *  prelist_remove -- プレフィックスリストからプレフィックスを削除する。
     533 *  prelist_remove -- プレフィックスリストからプレフィックスを削除する。
    559534 *
    560  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    561  *          ロックしてから呼び出すこと。
     535 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     536 *          ロックしてから呼び出すこと。
    562537 */
    563538
     
    569544        int_t   rix;
    570545
    571         /* 有効時間切れにする。*/
     546        /* 有効時間切れにする。*/
    572547        pr->vltime = 0;
    573548        pr->pltime = 0;
     
    579554                }
    580555
    581         /*  プレフィックスエントリとディフォルトルータ・エントリのリンクを解除する。*/
     556        /*  プレフィックスエントリとディフォルトルータ・エントリのリンクを解除する。*/
    582557        pr->routermap = 0;
    583558        mask = make_mask(pr - nd6_prefix);
     
    585560                nd6_def_router[rix].plistmap &= ~mask;
    586561
    587         /* プレフィックスを無効にする。*/
     562        /* プレフィックスを無効にする。*/
    588563        pr->flags &= ~ND6_PREFIX_STATE_BUSY;
    589564
     
    592567
    593568/*
    594  *  nd6_prefix_onlink -- プレフィックスをオンリンクに設定し、アドレスを使用可能にする。
     569 *  nd6_prefix_onlink -- プレフィックスをオンリンクに設定し、アドレスを使用可能にする。
    595570 *
    596  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    597  *          ロックしてから呼び出すこと。
     571 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     572 *          ロックしてから呼び出すこと。
    598573 */
    599574
     
    605580        int_t           ix;
    606581
    607         /* 既にオンリンク状æ
    608 ‹ã«ãªã£ã¦ã„る場合はエラー。*/
     582        /* 既にオンリンク状態になっている場合はエラー。*/
    609583        if ((pr->flags & ND6_PREFIX_STATE_ONLINK) != 0)
    610584                return E_OBJ;
    611585
    612         /* リンクローカルアドレスが未登録であれば何もしない。*/
     586        /* リンクローカルアドレスが未登録であれば何もしない。*/
    613587        lla = &ifp->in6_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL];
    614588        if ((lla->flags & IN6_IFF_DEFINED) == 0)
     
    616590
    617591        /*
    618          *  指定されたプレフィックスが割り当てられているインタフェースの
    619          *  アドレスæƒ
    620 å ±ã‚’探す。
     592         *  指定されたプレフィックスが割り当てられているインタフェースの
     593         *  アドレス情報を探す。
    621594         */
    622595        for (ix = NUM_IN6_IFADDR_ENTRY; ix --; ) {
     
    628601        if (ix >= 0) {
    629602
    630                 /* アドレスæƒ
    631 å ±ã‚’使用可能にする。*/
     603                /* アドレス情報を使用可能にする。*/
    632604                ia->flags &= ~IN6_IFF_DETACHED;
    633605
    634                 /* プレフィックスをオンリンクに設定する。*/
     606                /* プレフィックスをオンリンクに設定する。*/
    635607                pr->flags |= ND6_PREFIX_STATE_ONLINK;
    636608                }
     
    640612
    641613/*
    642  *  nd6_prefix_offlink -- プレフィックスをオフリンクに設定し、アドレスを使用不可にする。
     614 *  nd6_prefix_offlink -- プレフィックスをオフリンクに設定し、アドレスを使用不可にする。
    643615 *
    644  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    645  *          ロックしてから呼び出すこと。
     616 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     617 *          ロックしてから呼び出すこと。
    646618 */
    647619
     
    653625        int_t           ix;
    654626
    655         /* 既にオフリンク状æ
    656 ‹ã«ãªã£ã¦ã„る場合はエラー。*/
     627        /* 既にオフリンク状態になっている場合はエラー。*/
    657628        if ((pr->flags & ND6_PREFIX_STATE_ONLINK) == 0)
    658629                return E_OBJ;
    659630
    660631        /*
    661          *  指定されたプレフィックスが割り当てられているインタフェースの
    662          *  アドレスæƒ
    663 å ±ã‚’探す。
     632         *  指定されたプレフィックスが割り当てられているインタフェースの
     633         *  アドレス情報を探す。
    664634         */
    665635        for (ix = NUM_IN6_IFADDR_ENTRY; ix --; ) {
     
    671641        if (ix >= 0) {
    672642
    673                 /* アドレスæƒ
    674 å ±ã‚’使用不可にする。*/
     643                /* アドレス情報を使用不可にする。*/
    675644                ia->flags |= IN6_IFF_DETACHED;
    676645
    677                 /* プレフィックスをオフリンクに設定する。*/
     646                /* プレフィックスをオフリンクに設定する。*/
    678647                pr->flags &= ~ND6_PREFIX_STATE_ONLINK;
    679648                }
     
    683652
    684653/*
    685  *  in6_init_prefix_ltimes -- プレフィックスの有効時間を設定する。
     654 *  in6_init_prefix_ltimes -- プレフィックスの有効時間を設定する。
    686655 */
    687656
     
    691660        SYSTIM          now;
    692661
    693         /* 推奨有効時間が有効時間より長いときはエラー */
     662        /* 推奨有効時間が有効時間より長いときはエラー */
    694663        if (pr->pltime > pr->vltime)
    695664                return E_PAR;
     
    712681
    713682/*
    714  *  nd6_prelist_add -- プレフィックスリストにプレフィックスを追加する。
     683 *  nd6_prelist_add -- プレフィックスリストにプレフィックスを追加する。
    715684 *
    716  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    717  *          ロックしてから呼び出すこと。
     685 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     686 *          ロックしてから呼び出すこと。
    718687 */
    719688
     
    724693        int_t           ix;
    725694
    726         /* プレフィックスリストから空きのプレフィックスエントリを探索する。*/
     695        /* プレフィックスリストから空きのプレフィックスエントリを探索する。*/
    727696        for (ix = NUM_ND6_PREFIX_ENTRY; ix --; ) {
    728697                pr = &nd6_prefix[ix];
     
    731700                }
    732701
    733         /* プレフィックスリストに空きがなければエラー */
     702        /* プレフィックスリストに空きがなければエラー */
    734703        if (ix < 0)
    735704                return NULL;
     
    737706        pr->flags |= ND6_PREFIX_STATE_BUSY;
    738707
    739         /* プレフィックスを追加する。*/
     708        /* プレフィックスを追加する。*/
    740709        pr->prefix     = pi->prefix;
    741710        pr->prefix_len = pi->prefix_len;
    742711
    743         /* フラグを設定する。*/
     712        /* フラグを設定する。*/
    744713        if ((pi->flags & ND_OPT_PI_FLAG_ONLINK) != 0)
    745714                pr->flags |= ND6_PREFIX_FLAG_ONLINK;
     
    747716                pr->flags |= ND6_PREFIX_FLAG_AUTO;
    748717
    749         /* プレフィックスの有効時間を設定する。*/
     718        /* プレフィックスの有効時間を設定する。*/
    750719        pr->vltime = ntohl(pi->valid);
    751720        pr->pltime = ntohl(pi->preferred);
     
    757726                }
    758727
    759         /* ルータマップを初期化する。*/
     728        /* ルータマップを初期化する。*/
    760729        pr->routermap = 0;
    761730
    762         /* ルータを追加する。*/
     731        /* ルータを追加する。*/
    763732        pfxrtr_add(pr - nd6_prefix, rtr_index);
    764733
     
    767736
    768737/*
    769  *  prelist_update -- プレフィックス・リストを更新する。
     738 *  prelist_update -- プレフィックス・リストを更新する。
    770739 */
    771740
     
    781750        if ((pr = nd6_prefix_lookup(&pi->prefix, pi->prefix_len)) != NULL) {
    782751                /*
    783                  *  登録済みの場合は、プレフィックスリストを更新する。
     752                 *  登録済みの場合は、プレフィックスリストを更新する。
    784753                 */
    785754
    786755                /*
    787                  *  フラグの更新の注意:
    788                  *    on-link ビットと autonomous ビットは
    789                  *    1 から 0 に変更してはならない。
     756                 *  フラグの更新の注意:
     757                 *    on-link ビットと autonomous ビットは
     758                 *    1 から 0 に変更してはならない。
    790759                 */
    791760
     
    797766                if ((pi->flags & ND_OPT_PI_FLAG_ONLINK) != 0) {
    798767                        /*
    799                          *  通知されたプレフィックスがオンリンクの時は、
    800                          *  有効時間を更新する。
     768                         *  通知されたプレフィックスがオンリンクの時は、
     769                         *  有効時間を更新する。
    801770                         */
    802771                        pr->vltime = ntohl(pi->valid);
     
    808777                    (pr->flags & ND6_PREFIX_STATE_ONLINK) == 0) {
    809778                        /*
    810                          *  オフリンクのプレフィックスがオンリンクになった時の処理を実行する。
     779                         *  オフリンクのプレフィックスがオンリンクになった時の処理を実行する。
    811780                         */
    812781                        if (nd6_prefix_onlink(pr) != E_OK) {
     
    820789                        pfxrtr_add(pr - nd6_prefix, router_index);
    821790                }
    822         else {  /* 未登録の場合 */
    823 
    824                 /* 有効時間 0 のプレフィックスは追加しない。*/
     791        else {  /* 未登録の場合 */
     792
     793                /* 有効時間 0 のプレフィックスは追加しない。*/
    825794                if (pi->valid == 0) {
    826795                        syscall(sig_sem(SEM_ND6_DEFRTRLIST));
     
    828797                        }
    829798
    830                 /* オフリンクでアドレス自動設定に使用しなければ追加しない。*/
     799                /* オフリンクでアドレス自動設定に使用しなければ追加しない。*/
    831800                if ((pi->flags & (ND_OPT_PI_FLAG_ONLINK | ND_OPT_PI_FLAG_AUTO)) !=
    832801                                 (ND_OPT_PI_FLAG_ONLINK | ND_OPT_PI_FLAG_AUTO)) {
     
    835804                        }
    836805
    837                 /* プレフィックスを追加する。*/
     806                /* プレフィックスを追加する。*/
    838807                if ((pr = nd6_prelist_add(pi, router_index)) == NULL) {
    839808                        syslog(LOG_ERROR, "[ND6 RTR] prefix add failed.");
     
    842811                        }
    843812
    844 #if 1           /* プレフィックスが未登録の場合だけ表示する。*/
     813#if 1           /* プレフィックスが未登録の場合だけ表示する。*/
    845814                syslog(LOG_NOTICE, "[ND6 RTR] add prefix: flags[MOH]: %02x, addr: %s\n"
    846815                                   "                                      from: %s.",
     
    851820                if ((pr->flags & ND6_PREFIX_FLAG_ONLINK) == 0) {
    852821                        /*
    853                          *  オフリンク・プレフィックスの場合は、有効時間を 0 に設定する。
    854                          *  あとで有効期限切れとなり、リストから削除される。
     822                         *  オフリンク・プレフィックスの場合は、有効時間を 0 に設定する。
     823                         *  あとで有効期限切れとなり、リストから削除される。
    855824                         */
    856825                        pr->vltime = 0;
     
    861830
    862831        /*
    863          *  ステートレス・アドレス自動設定を行う。
     832         *  ステートレス・アドレス自動設定を行う。
    864833         */
    865834        if ((pr->flags & ND6_PREFIX_FLAG_AUTO) == 0) {
     
    869838
    870839        /*
    871          *  通知されたプレフィックスが割り当てられているインタフェースの
    872          *  アドレスæƒ
    873 å ±ã‚’探す。
     840         *  通知されたプレフィックスが割り当てられているインタフェースの
     841         *  アドレス情報を探す。
    874842         */
    875843        for (ix = NUM_IN6_IFADDR_ENTRY; ix --; ) {
     
    881849                }
    882850
    883         if (ix >= 0) {  /* 登録済みのとき */
     851        if (ix >= 0) {  /* 登録済みのとき */
    884852                if ((ia->flags & IN6_IFF_AUTOCONF) == 0) {
    885853                        /*
    886                          *  ステートレス・アドレス自動設定により
    887                          *  設定されていなければ更新しない。
     854                         *  ステートレス・アドレス自動設定により
     855                         *  設定されていなければ更新しない。
    888856                         */
    889857                        ;
     
    891859                else if (ia->flags & IN6_IFF_TENTATIVE) {
    892860                        /*
    893                          *  重複検出中なら更新しない。
     861                         *  重複検出中なら更新しない。
    894862                         */
    895863                        ;
     
    902870                        int_t           ix;
    903871
    904                         /* 有効時間を設定する。*/
     872                        /* 有効時間を設定する。*/
    905873                        syscall(get_tim(&now));
    906874
     
    914882                        if (pr->vltime > (2 * 60 * 60) || pr->vltime > vltime) {
    915883                                /*
    916                                  *  lifetime.expire、pi->valid (有効時間) と
    917                                  *  pi->preferred (推奨有効時間) の単位は [s]。
    918                                  *  通知された有効時間が 2 時間以上か、現在の残り時間より
    919                                  *  長ければ、新しい有効時間には、通知された有効時間を設定する。
     884                                 *  lifetime.expire、pi->valid (有効時間) と
     885                                 *  pi->preferred (推奨有効時間) の単位は [s]。
     886                                 *  通知された有効時間が 2 時間以上か、現在の残り時間より
     887                                 *  長ければ、新しい有効時間には、通知された有効時間を設定する。
    920888                                 */
    921889                                vltime = pr->vltime;
     
    925893                        else {
    926894                                /*
    927                                  *  IPsec は未実è£
    928 ã®ãŸã‚ã€2 時間を設定する。
     895                                 *  IPsec は未実装のため、2 時間を設定する。
    929896                                 */
    930897                                vltime = 2 * 60 * 60;
     
    933900                        lla = &ifp->in6_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL];
    934901
    935                         /* プレフィックスマスクを生成する。*/
     902                        /* プレフィックスマスクを生成する。*/
    936903                        in6_plen2pmask(&mask, pr->prefix_len);
    937904
    938                         /* アドレスを生成する。*/
     905                        /* アドレスを生成する。*/
    939906                        for (ix = 0; ix < 4; ix ++)
    940907                                addr.s6_addr32[ix] = (pr->prefix.s6_addr32[ix] &  mask.s6_addr32[ix])
     
    947914                }
    948915
    949         else { /* 未登録のとき */
     916        else { /* 未登録のとき */
    950917
    951918                /*
    952                  *  プレフィックス長をチェックする。
    953                  *  もし、プレフィックス長とインタフェース ID の合計が
    954                  *  128 ビットに一致しない時は、プレフィックスæƒ
    955 å ±ã‚’無視する。
     919                 *  プレフィックス長をチェックする。
     920                 *  もし、プレフィックス長とインタフェース ID の合計が
     921                 *  128 ビットに一致しない時は、プレフィックス情報を無視する。
    956922                 */
    957923                if ((ifidlen = in6_if2idlen(ifp)) < 0)
     
    978944
    979945/*
    980  *  nd6_prelist_timer -- プレフィックス・リストの管理タイマー
     946 *  nd6_prelist_timer -- プレフィックス・リストの管理タイマー
    981947 */
    982948
     
    989955
    990956        syscall(get_tim(&now));
    991         now /= SYSTIM_HZ;               /* 有効時間の単位は [s] */
     957        now /= SYSTIM_HZ;               /* 有効時間の単位は [s] */
    992958
    993959        syscall(wai_sem(SEM_ND6_DEFRTRLIST));
     
    1002968
    1003969/*
    1004  *  nd6_rs_output -- ルータ要請を出力する。
     970 *  nd6_rs_output -- ルータ要請を出力する。
    1005971 */
    1006972
     
    1017983
    1018984        /*
    1019          *  送信å
    1020 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã¯ã€ãƒªãƒ³ã‚¯ãƒ­ãƒ¼ã‚«ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’設定するが、
    1021          *  まだ設定されいなければ、無指定を設定する。
     985         *  送信元アドレスには、リンクローカルアドレスを設定するが、
     986         *  まだ設定されいなければ、無指定を設定する。
    1022987         */
    1023988        if ((ifa = in6ifa_ifpwithix(IF_GET_IFNET(), IPV6_IFADDR_IX_LINKLOCAL)) != NULL && !IFA6_IS_NOTREADY(ifa))
     
    1028993        len = (ROUTER_SOLICIT_HDR_SIZE + 7) >> 3 << 3;
    1029994
    1030         /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/
     995        /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/
    1031996        if (in6_get_datagram(&output, len, 0, &in6_addr_linklocal_allrouters,
    1032997                             saddr, IPPROTO_ICMPV6,
     
    1034999                return;
    10351000
    1036         /* ルータ要請ヘッダを設定する。*/
     1001        /* ルータ要請ヘッダを設定する。*/
    10371002        rsh = GET_ROUTER_SOLICIT_HDR(output, IF_IP6_ROUTER_SOLICIT_HDR_OFFSET);
    10381003        rsh->hdr.type       = ND_ROUTER_SOLICIT;
     
    10401005        rsh->nd_rs_reserved = 0;
    10411006
    1042         /* チェックサムを計算する。*/
     1007        /* チェックサムを計算する。*/
    10431008        rsh->hdr.sum = 0;
    10441009        rsh->hdr.sum = in6_cksum(output, IPPROTO_ICMPV6, (uint8_t*)rsh - output->buf, len);
    10451010
    1046         /* 送信する。*/
     1011        /* 送信する。*/
    10471012        NET_COUNT_ICMP6(net_count_nd6[NC_ICMP6_OUT_OCTETS],
    10481013                       output->len - GET_IF_IP6_HDR_SIZE(output));
     
    10541019
    10551020/*
    1056  *  nd6_defrtrlist_lookup -- ディフォルトルータ・リストを探索する。
     1021 *  nd6_defrtrlist_lookup -- ディフォルトルータ・リストを探索する。
    10571022 */
    10581023
     
    10731038
    10741039/*
    1075  *  nd6_router_lookup -- ルータのアドレスを返す。
     1040 *  nd6_router_lookup -- ルータのアドレスを返す。
    10761041 *
    10771042 */
     
    10871052
    10881053/*
    1089  *  nd6_defrtrlist_del -- ディフォルトルータ・リストからルータを削除する。
     1054 *  nd6_defrtrlist_del -- ディフォルトルータ・リストからルータを削除する。
    10901055 *
    1091  *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
    1092  *          ロックしてから呼び出すこと。
     1056 *    注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、
     1057 *          ロックしてから呼び出すこと。
    10931058 */
    10941059
     
    11041069        if ((ia = in6ifa_ifpwithrtrix(ifp, rtrix)) != NULL) {
    11051070                /*
    1106                  *  ネットワークインタフェースのプレフィックスを通知した
    1107                  *  ルータを到達不能にする。
     1071                 *  ネットワークインタフェースのプレフィックスを通知した
     1072                 *  ルータを到達不能にする。
    11081073                 */
    11091074                ia->router_index = IN6_RTR_IX_UNREACH;
    11101075                }
    11111076
    1112         /* プレフィックスリストからルータを削除する。*/
     1077        /* プレフィックスリストからルータを削除する。*/
    11131078        mask = make_mask(rtrix);
    11141079        for (pix = NUM_ND6_PREFIX_ENTRY; pix --; )
    11151080                nd6_prefix[pix].routermap &= ~mask;
    11161081
    1117         /* 削除したルータ以降を前に詰める。*/
     1082        /* 削除したルータ以降を前に詰める。*/
    11181083        for (rix = rtrix + 1; rix < def_router_count; rix ++)
    11191084                nd6_def_router[rix - 1] = nd6_def_router[rix];
    11201085
    1121         /* プレフィックスリストのルータも更新する。*/
     1086        /* プレフィックスリストのルータも更新する。*/
    11221087        if (dr != nd6_def_router) {
    11231088
    1124                 /* マスクを生成する。*/
     1089                /* マスクを生成する。*/
    11251090                mask = 1;
    11261091                for (ix = rtrix - 1; ix -- > 0; )
     
    11341099        def_router_count --;
    11351100
    1136         /* プレフィックスのオンリンク状æ
    1137 ‹ã‚’確認する。*/
     1101        /* プレフィックスのオンリンク状態を確認する。*/
    11381102        pfxlist_onlink_check();
    11391103
    11401104        /*
    1141          *  削除するルータが優å
    1142 ˆãƒ‡ã‚£ãƒ•ã‚©ãƒ«ãƒˆãƒ«ãƒ¼ã‚¿ã®å ´åˆã¯ã€
    1143          *  優å
    1144 ˆãƒ‡ã‚£ãƒ•ã‚©ãƒ«ãƒˆãƒ«ãƒ¼ã‚¿ã‚’選択しなおす。
     1105         *  削除するルータが優先ディフォルトルータの場合は、
     1106         *  優先ディフォルトルータを選択しなおす。
    11451107         */
    11461108        if (rtrix == 0)
     
    11491111
    11501112/*
    1151  *  nd6_defrtrlist_timer -- ディフォルトルータ・リストの管理タイマー
     1113 *  nd6_defrtrlist_timer -- ディフォルトルータ・リストの管理タイマー
    11521114 */
    11531115
     
    11731135
    11741136/*
    1175  *  nd6_get_drl -- ディフォルトルータ・リストを獲得する。
     1137 *  nd6_get_drl -- ディフォルトルータ・リストを獲得する。
    11761138 */
    11771139
     
    11841146
    11851147/*
    1186  *  nd6_get_prl -- プレフィックス・リストを獲得する。
     1148 *  nd6_get_prl -- プレフィックス・リストを獲得する。
    11871149 */
    11881150
     
    11961158
    11971159/*
    1198  *  nd6_ra_input -- ルータ通知のå
    1199 ¥åŠ›å‡¦ç†ã€‚
     1160 *  nd6_ra_input -- ルータ通知の入力処理。
    12001161 */
    12011162
     
    12211182
    12221183        /*
    1223          *  ヘッダのチェック、以下の場合は破棄する。
    1224          *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
    1225          *    ・ヘッダ長が短い
    1226          *    ・始点アドレスが、リンクローカルではない (RFC2461)
     1184         *  ヘッダのチェック、以下の場合は破棄する。
     1185         *    ・ホップリミットが IPV6_MAXHLIM (255) 以外
     1186         *    ・ヘッダ長が短い
     1187         *    ・始点アドレスが、リンクローカルではない (RFC2461)
    12271188         */
    12281189        if (ip6h->hlim != IPV6_MAXHLIM                ||
     
    12331194        rah  = GET_ROUTER_ADVERT_HDR(input, off);
    12341195
    1235         /* 近隣探索オプションのオフセットを記録する。*/
     1196        /* 近隣探索オプションのオフセットを記録する。*/
    12361197        if (nd6_options(nd_opt_off, input->buf + (off + ROUTER_ADVERT_HDR_SIZE),
    12371198                                    input->len - (off + ROUTER_ADVERT_HDR_SIZE)) != E_OK)
    12381199                goto err_ret;
    12391200        /*
    1240          *  到達可能状æ
    1241 ‹ã®æœ‰åŠ¹æ™‚間の更新
     1201         *  到達可能状態の有効時間の更新
    12421202
    12431203         */
    12441204        if (rah->reachable) {
    1245                 advrea = ntohl(rah->reachable) * SYSTIM_HZ / 1000;      /* rah->reachable の単位は ms */
     1205                advrea = ntohl(rah->reachable) * SYSTIM_HZ / 1000;      /* rah->reachable の単位は ms */
    12461206                if (advrea <= ND6_MAX_REACHABLE_TIME &&
    12471207                    advrea != nd6_base_reachable_time) {
     
    12551215                }
    12561216
    1257         /* 近隣探索の送信間隔の更新 */
     1217        /* 近隣探索の送信間隔の更新 */
    12581218        if (rah->retransmit) {
    12591219                nd6_retrans_time = ntohl(rah->retransmit) * SYSTIM_HZ / 1000;
    1260                                                                         /* rah->retransmit の単位は ms */
    1261                 }
    1262 
    1263         /* ホップリミットの規定値の更新 */
     1220                                                                        /* rah->retransmit の単位は ms */
     1221                }
     1222
     1223        /* ホップリミットの規定値の更新 */
    12641224        if (rah->nd_ra_current_hoplimit) {
    12651225                ip6_defhlim = rah->nd_ra_current_hoplimit;
    12661226                }
    12671227
    1268         /* ディフォルトルータリストの更新 */
     1228        /* ディフォルトルータリストの更新 */
    12691229        rix = defrtrlist_update(&ip6h->src,
    12701230                               ntohs(rah->nd_ra_router_lifetime),
    1271                                rah->nd_ra_flags);               /* rah->nd_ra_router_lifetime の単位は秒 */
    1272 
    1273         /* プレフィックスリストの更新 */
     1231                               rah->nd_ra_flags);               /* rah->nd_ra_router_lifetime の単位は秒 */
     1232
     1233        /* プレフィックスリストの更新 */
    12741234        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_PREFIX_INFO_COUNT)]) {
    12751235                T_ND_OPT_PREFIX_INFO    *pi;
     
    12791239                pi_off   = off + ROUTER_ADVERT_HDR_SIZE
    12801240                               + nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_PREFIX_INFORMATION)] - 8;
    1281                 /* 注意: オプションオフセットé
    1282 åˆ—には、オフセット + 8 が設定されている。*/
     1241                /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/
    12831242                while (pi_count -- > 0) {
    12841243                        pi = (T_ND_OPT_PREFIX_INFO*)(input->buf + pi_off);
    12851244                        if (pi->type != ND_OPT_PREFIX_INFORMATION)
    1286                                 /* オプションタイプがプレフィックスæƒ
    1287 å ±ã§ãªã‘れば何もしない。*/
     1245                                /* オプションタイプがプレフィックス情報でなければ何もしない。*/
    12881246                                ;
    12891247                        else if (pi->len != 4)
    1290                                 /* プレフィックスæƒ
    1291 å ±ã®é•·ã•ãŒ 32 (8×4) でなければ不正 */
     1248                                /* プレフィックス情報の長さが 32 (8×4) でなければ不正 */
    12921249                                syslog(LOG_NOTICE, "[ND6 RTR] prefix opt len: %d.", pi->len);
    12931250                        else if (pi->prefix_len > 128)
    1294                                 /* プレフィックス長は 128 ビット以下 */
     1251                                /* プレフィックス長は 128 ビット以下 */
    12951252                                syslog(LOG_NOTICE, "[ND6 RTR] prefix len: %d.", pi->prefix_len);
    12961253                        else if (IN6_IS_ADDR_MULTICAST(&pi->prefix) ||
    12971254                                 IN6_IS_ADDR_LINKLOCAL(&pi->prefix))
    1298                                 /* マルチキャストとリンクローカルは不正 */
     1255                                /* マルチキャストとリンクローカルは不正 */
    12991256                                syslog(LOG_NOTICE, "[ND6 RTR] invalid addr: %s from %s.",
    13001257                                                   ipv62str(NULL, &pi->prefix), ipv62str(NULL, &ip6h->src));
    1301 #if 0   /* FreeBSD 6.3 で削除されている。*/
     1258#if 0   /* FreeBSD 6.3 で削除されている。*/
    13021259                        else if (IN6_IS_ADDR_AGGREGATE_UNICAST(&pi->prefix) &&         
    13031260                                 (pi->prefix_len != 64)                       )
    1304                                 /* 集約可能ユニキャストで、プレフィックス長が 64 ビット以外は不正 */
     1261                                /* 集約可能ユニキャストで、プレフィックス長が 64 ビット以外は不正 */
    13051262                                syslog(LOG_NOTICE, "[ND6 RTR] invalid prefix len for global: %d.", pi->prefix_len);
    13061263#endif
    13071264                        else if (ntohl(pi->preferred) > ntohl(pi->valid))
    1308                                 /* 推奨有効時間が有効時間より長ければ不正 */
     1265                                /* 推奨有効時間が有効時間より長ければ不正 */
    13091266                                syslog(LOG_NOTICE, "[ND6 RTR] preferred(%d) > valid time(%d).", ntohl(pi->preferred), ntohl(pi->valid));
    13101267                        else {
    1311 #if 0   /* プレフィックスが未登録の場合だけ表示する。*/
     1268#if 0   /* プレフィックスが未登録の場合だけ表示する。*/
    13121269                                syslog(LOG_NOTICE, "[ND6 RTR] update prefix: flags[MOH]: %02x, addr: %s\n"
    13131270                                                   "                                         from: %s.",
     
    13161273                                if (rix >= 0) {
    13171274                                        /*
    1318                                          *  defrtrlist_update の戻り値は、ルータのインデックス。
    1319                                          *  ただし、値が -1 なら、プレフィックス・リストは更新しない。
     1275                                         *  defrtrlist_update の戻り値は、ルータのインデックス。
     1276                                         *  ただし、値が -1 なら、プレフィックス・リストは更新しない。
    13201277                                         */
    1321                                         prelist_update(pi, rix);        /* プレフィックス・リストを更新する。*/
     1278                                        prelist_update(pi, rix);        /* プレフィックス・リストを更新する。*/
    13221279                                        }
    13231280                                }
    1324                         pi_off += pi->len << 3;         /* オプション長の単位は 8 バイト */
    1325                         }
    1326                 }
    1327 
    1328         /* MTU の更新 */
     1281                        pi_off += pi->len << 3;         /* オプション長の単位は 8 バイト */
     1282                        }
     1283                }
     1284
     1285        /* MTU の更新 */
    13291286        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_MTU)]) {
    13301287                T_ND_OPT_MTU_HDR        *optmtuh;
     
    13351292
    13361293                /*
    1337                  *  値のチェック
     1294                 *  値のチェック
    13381295                 *
    1339                  *    オプション長: 1
    1340                  *    予約:         0
     1296                 *    オプション長: 1
     1297                 *    予約:         0
    13411298                 */
    13421299                if (optmtuh->len != 1 || optmtuh->reserved != 0)
    13431300                        goto err_ret;
    13441301
    1345                 /* MTU が IPv6 MMTU(1280 オクテット)以下なら無視する。*/
     1302                /* MTU が IPv6 MMTU(1280 オクテット)以下なら無視する。*/
    13461303                mtu = ntohl(optmtuh->mtu);
    13471304                if (mtu >= IPV6_MMTU) {
     
    13521309
    13531310        /*
    1354          *  ルータの始点リンクアドレスを近隣キャッシュに登録する。
     1311         *  ルータの始点リンクアドレスを近隣キャッシュに登録する。
    13551312         */
    13561313        if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_SOURCE_LINKADDR)]) {
    13571314                opth = (T_ND_OPT_HDR *)((uint8_t *)(input->buf + off + ROUTER_ADVERT_HDR_SIZE) +
    13581315                                        nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_SOURCE_LINKADDR)] - 8);
    1359                 /* 注意: オプションオフセットé
    1360 åˆ—には、オフセット + 8 が設定されている。*/
     1316                /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/
    13611317                lladdr     = (uint8_t *)(opth + 1);
    13621318                lladdr_len = (opth->len << 3);
     
    13641320
    13651321        /*
    1366          *  ネットワークインタフェースのアドレス長が一致しなければエラー
     1322         *  ネットワークインタフェースのアドレス長が一致しなければエラー
    13671323         */
    13681324        if (lladdr && lladdr_len != ((sizeof(T_IF_ADDR) + sizeof(T_ND_OPT_HDR) + 7) & ~7))
    13691325                goto err_ret;
    13701326
    1371         /* 近隣キャッシュに登録する。*/
     1327        /* 近隣キャッシュに登録する。*/
    13721328        nd6_cache_lladdr(ifp, &ip6h->src, (T_IF_ADDR *)lladdr, ND_ROUTER_ADVERT, 0);
    13731329
    13741330        /*
    1375          *  ルータの始点リンクアドレスを近隣キャッシュに登録したので、
    1376          *  オンリンク状æ
    1377 ‹ãŒå¤‰åŒ–する可能性があるため、それをチェックする。
     1331         *  ルータの始点リンクアドレスを近隣キャッシュに登録したので、
     1332         *  オンリンク状態が変化する可能性があるため、それをチェックする。
    13781333         */
    13791334        pfxlist_onlink_check();
     
    13891344
    13901345        /*
    1391          *  ルータ通知を受信しない場合は、破棄して終了する。
     1346         *  ルータ通知を受信しない場合は、破棄して終了する。
    13921347         */
    13931348        NET_COUNT_ICMP6(net_count_nd6[NC_ND6_RA_IN_PACKETS], 1);
     
    14001355
    14011356/*
    1402  *  nd6_rtrsol_ctl -- ルータ要請出力の制御
     1357 *  nd6_rtrsol_ctl -- ルータ要請出力の制御
    14031358 */
    14041359
     
    14091364        int_t           try;
    14101365
    1411         /* リンクローカルアドレスのアドレスæƒ
    1412 å ±ã‚’得る。*/
     1366        /* リンクローカルアドレスのアドレス情報を得る。*/
    14131367        if ((ifa = in6ifa_ifpwithix(IF_GET_IFNET(), IPV6_IFADDR_IX_LINKLOCAL)) == NULL)
    14141368                return;
    14151369
    1416         /* リンクローカルアドレスの重複検出終了をå¾
    1417 ã¤ã€‚*/
     1370        /* リンクローカルアドレスの重複検出終了を待つ。*/
    14181371        do {
    1419                 /* リンクローカルアドレスの重複検出終了å¾
    1420 ã¡æ™‚間を設定する。*/
     1372                /* リンクローカルアドレスの重複検出終了待ち時間を設定する。*/
    14211373                syscall(dly_tsk(net_rand() % TMO_ND6_RTR_SOL_DELAY));
    14221374
    1423                 /* å¾
    1424 ã£ã¦ã„る間に重複が検出されたら終了する。*/
     1375                /* 待っている間に重複が検出されたら終了する。*/
    14251376                if (ifa->flags & IN6_IFF_DUPLICATED)
    14261377                        return;
     
    14301381        for (try = 0; try < NUM_ND6_RTR_SOL_RETRY; try ++) {
    14311382
    1432                 /* ディフォルトルータ・リストにエントリがあれば終了 */
     1383                /* ディフォルトルータ・リストにエントリがあれば終了 */
    14331384                if (def_router_count > 0)
    14341385                        return;
    14351386
    1436                 /* ルータ要請を出力する。*/
     1387                /* ルータ要請を出力する。*/
    14371388                nd6_rs_output();
    14381389
    1439                 /* 出力の 2 回目以降のé
    1440 å»¶æ™‚間を設定する。*/
     1390                /* 出力の 2 回目以降の遅延時間を設定する。*/
    14411391                syscall(dly_tsk(TMO_ND6_RTR_SOL_INTERVAL));
    14421392                }
     
    14461396
    14471397/*
    1448  *  nd6_onlink_prefix_lookup -- プレフィックスを探索する。
     1398 *  nd6_onlink_prefix_lookup -- プレフィックスを探索する。
    14491399 */
    14501400
     
    14591409        now /= SYSTIM_HZ;
    14601410
    1461         /* 推奨有効時間å†
    1462 ã®ãƒ—レフィックスを探索する。*/
     1411        /* 推奨有効時間内のプレフィックスを探索する。*/
    14631412        for (ix = NUM_ND6_PREFIX_ENTRY; ix -- > 0; ) {
    14641413                pr = &nd6_prefix[ix];
     
    14721421                }
    14731422
    1474         /* 有効時間å†
    1475 ã®ãƒ—レフィックスを探索する。*/
     1423        /* 有効時間内のプレフィックスを探索する。*/
    14761424        for (ix = NUM_ND6_PREFIX_ENTRY; ix -- > 0; ) {
    14771425                pr = &nd6_prefix[ix];
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
    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 経路制御ヘッダの処理を行わない。
    119  */
    120 
    121 /*
    122  *  ip6_rthdr0 -- タイプ 0 経路制御ヘッダのå
    123 ¥åŠ›é–¢æ•°
     105 *  通信帯域を食いつぶす攻撃への対応のため、
     106 *  タイプ 0 経路制御ヘッダの処理を行わない。
     107 */
     108
     109/*
     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,
  • azure_iot_hub/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
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    147135
    148136/*
    149  *  in6_addrscope -- アドレスのスコープ ID を返す。
     137 *  in6_addrscope -- アドレスのスコープ ID を返す。
    150138 */
    151139
  • azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/udp6_input.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    7866
    7967/*
    80  *  udp_reply_no_port -- 送信å
    81 ƒã«ãƒãƒ¼ãƒˆãŒå®šç¾©ã•ã‚Œã¦ã„ないことを通知する。
     68 *  udp_reply_no_port -- 送信元にポートが定義されていないことを通知する。
    8269 */
    8370
     
    9380        if (GET_IP_VER(input)==IPV6_VERSION) {
    9481
    95                 /* マルチキャストアドレスに届いたデータグラムは ICMP エラーを通知しない。*/
     82                /* マルチキャストアドレスに届いたデータグラムは ICMP エラーを通知しない。*/
    9683                if (!IN6_IS_ADDR_MULTICAST(&GET_IP6_HDR(input)->dst)) {
    9784                        syslog(LOG_INFO, "[UDP] unexp port: %d.", ntohs(udph->dport));
    9885
    99                         /* icmp6_error で、ネットワークバッファ input を返却する。*/
     86                        /* icmp6_error で、ネットワークバッファ input を返却する。*/
    10087                        icmp6_error(input, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_NOPORT, 0);
    10188                        }
     
    10592        else /*if (GET_IP_VER(input)==IPV4_VERSION)*/ {
    10693
    107                 /* ローカル IP アドレスに届いたデータグラムのみ ICMP エラーを通知する。*/
     94                /* ローカル IP アドレスに届いたデータグラムのみ ICMP エラーを通知する。*/
    10895                if (ntohl(GET_IP4_HDR(input)->dst) == IF_GET_IFNET()->in4_ifaddr.addr) {
    10996                        syslog(LOG_INFO, "[UDP] unexp port: %d.", ntohs(udph->dport));
    11097
    11198                        icmp_error(ICMP4_UNREACH_PORT, input);
    112                         /* icmp_error では、ネットワークバッファ input を返却しないので下へ抜ける。*/
     99                        /* icmp_error では、ネットワークバッファ input を返却しないので下へ抜ける。*/
    113100                        }
    114101                syscall(rel_net_buf(input));
     
    119106        NET_COUNT_MIB(udp_stats.udpNoPorts, 1);
    120107
    121         /* マルチキャストアドレスに届いたデータグラムは ICMP エラーを通知しない。*/
     108        /* マルチキャストアドレスに届いたデータグラムは ICMP エラーを通知しない。*/
    122109        if (!IN6_IS_ADDR_MULTICAST(&GET_IP6_HDR(input)->dst)) {
    123110                syslog(LOG_INFO, "[UDP] unexp port: %d.", ntohs(udph->dport));
    124111
    125                 /* icmp6_error で、ネットワークバッファ input を返却する。*/
     112                /* icmp6_error で、ネットワークバッファ input を返却する。*/
    126113                icmp6_error(input, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_NOPORT, 0);
    127114                }
  • azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/udp6_subr.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    7866
    7967/*
    80  *  udp6_is_dstaddr_accept -- UDP のあてå
    81 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒæ­£ã—いかチェックする。
     68 *  udp6_is_dstaddr_accept -- UDP のあて先アドレスが正しいかチェックする。
    8269 *
    83  *    以下の場合もデータグラムを受信する。
     70 *    以下の場合もデータグラムを受信する。
    8471 *
    85  *      ・あてå
    86 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆ
     72 *      ・あて先アドレスがマルチキャスト
    8773 */
    8874
     
    10591
    10692/*
    107  *  udpn_is_dstaddr_accept -- UDP のあてå
    108 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒæ­£ã—いかチェックする。
     93 *  udpn_is_dstaddr_accept -- UDP のあて先アドレスが正しいかチェックする。
    10994 *
    110  *    DHCP_CFG が定義されているときは、以下のデータグラムを受信する。
     95 *    DHCP_CFG が定義されているときは、以下のデータグラムを受信する。
    11196 *
    112  *      ・あてå
    113 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒ–ロードキャスト
    114  *      ・ローカルアドレスが未定義
     97 *      ・あて先アドレスがブロードキャスト
     98 *      ・ローカルアドレスが未定義
    11599 */
    116100
     
    139123
    140124/*
    141  *  udpn_is_dstaddr_accept -- UDP のあてå
    142 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒæ­£ã—いかチェックする。
     125 *  udpn_is_dstaddr_accept -- UDP のあて先アドレスが正しいかチェックする。
    143126 *
    144  *    以下の場合もデータグラムを受信する。
     127 *    以下の場合もデータグラムを受信する。
    145128 *
    146  *      ・あてå
    147 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒ–ロードキャスト
     129 *      ・あて先アドレスがブロードキャスト
    148130 */
    149131
Note: See TracChangeset for help on using the changeset viewer.