Changeset 389 for azure_iot_hub/trunk/asp3_dcre/tinet/netinet6
- Timestamp:
- May 22, 2019, 10:03:37 PM (5 years ago)
- 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
totext/x-chdr;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 80 68 81 69 /* 82 * RFC2402 èªè¨¼ããã70 * RFC2402 認証ヘッダ 83 71 */ 84 72 … … 86 74 uint8_t next; /* Next Header */ 87 75 uint8_t len; 88 /* 4 ãªã¯ãããåä½ã®é·ãããã ãããã¼ã¿é· + 1 ãå 89 ¥ãã */ 76 /* 4 オクテット単位の長さ。ただし、データ長 + 1 が入る。 */ 90 77 uint16_t reserved; 91 78 uint32_t spi; /* Security Parameter Index (SPI) */ 92 uint32_t seq; /* ã·ã¼ã±ã³ã¹çªå·*/79 uint32_t seq; /* シーケンス番号 */ 93 80 } __attribute__((packed, aligned(2))) T_IP6_AH_HDR; 94 81 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/ah6.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 80 68 81 69 /* 82 * é¢æ°70 * 関数 83 71 */ 84 72 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/ah_input.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 116 104 117 105 /* 118 * ah6_input -- èªè¨¼ãããã®å 119 ¥åé¢æ° 106 * ah6_input -- 認証ヘッダの入力関数 120 107 * 121 * æ¬å®è£ 122 ã§ã¯ããã¼ã¿ã°ã©ã ãç ´æ£ããã 108 * 本実装では、データグラムを破棄する。 123 109 */ 124 110 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/dest6.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 114 102 115 103 /* 116 * dest6_input -- çµç¹ãªãã·ã§ã³ãããã®å 117 ¥åé¢æ° 104 * dest6_input -- 終点オプションヘッダの入力関数 118 105 * 119 * æ¬å®è£ 120 ã§ã¯ãããã£ã³ã°ä»¥å¤ã®ãªãã·ã§ã³ãå 121 ¨ã¦æªç¥ãªãã·ã§ã³ã¨ãã¦å¦çããã 106 * 本実装では、パディング以外のオプションを全て未知オプションとして処理する。 122 107 */ 123 108 … … 131 116 uint8_t *opt; 132 117 133 /* ãããã¯ã¼ã¯ãããã¡ã®æ®ãã®é·ãããã§ãã¯ããã*/118 /* ネットワークバッファの残りの長さをチェックする。*/ 134 119 if (input->len - off < sizeof(T_IP6_DEST_HDR)) 135 120 goto buf_rel; … … 138 123 len = (desth->len + 1) << 3; 139 124 140 /* çµç¹ãªãã·ã§ã³ãããã®é·ãããã§ãã¯ããã*/125 /* 終点オプションヘッダの長さをチェックする。*/ 141 126 if (input->len < off + len) 142 127 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
totext/x-chdr;charset=UTF-8
r388 r389 6 6 * Copyright (C) 2008-2009 by Hokkaido Industrial Research Institute, JAPAN 7 7 * 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プロジェクトを免責すること. 37 26 * 38 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 39 ã 40 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 41 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 42 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 27 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 28 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 29 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 30 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 43 31 * 44 32 * @(#) $Id$ … … 81 69 82 70 /* 83 * RFC2406 æå·åããã71 * RFC2406 暗号化ヘッダ 84 72 */ 85 73 86 74 typedef struct t_esp_hdr { 87 75 int32_t spi; /* Security Parameter Index (SPI) */ 88 int32_t seq; /* ã·ã¼ã±ã³ã¹çªå·*/76 int32_t seq; /* シーケンス番号 */ 89 77 } __attribute__((packed, aligned(2)))T_ESP_HDR; 90 78 91 79 typedef struct t_esp_tail { 92 int8_t padlen; /* ããã£ã³ã°é·*/80 int8_t padlen; /* パディング長 */ 93 81 int8_t next; /* Next Header */ 94 82 } __attribute__((packed, aligned(2)))T_ESP_TAIL; … … 125 113 126 114 /* 127 * é¢æ°115 * 関数 128 116 */ 129 117 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/esp6.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 80 68 81 69 /* 82 * é¢æ°70 * 関数 83 71 */ 84 72 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/esp_input.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 118 106 119 107 /* 120 * esp6_input -- æå·åãããã®å 121 ¥åé¢æ° 108 * esp6_input -- 暗号化ヘッダの入力関数 122 109 * 123 * æ¬å®è£ 124 ã§ã¯ããã¼ã¿ã°ã©ã ãç ´æ£ããã 110 * 本実装では、データグラムを破棄する。 125 111 */ 126 112 … … 129 115 { 130 116 #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 からのオフセット)>; 134 119 #endif 135 120 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
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 121 109 122 110 /* 123 * ãã¼ã¿ã°ã©ã åæ§æãã¥ã¼é 124 å 111 * データグラム再構成キュー配列 125 112 */ 126 113 … … 129 116 130 117 /* 131 * ip6_get_frag_queue -- ãã¼ã¿ã°ã©ã åæ§æãã¥ã¼ãç²å¾ããã118 * ip6_get_frag_queue -- データグラム再構成キューを獲得する。 132 119 */ 133 120 … … 139 126 140 127 /* 141 * frag6_free_queue -- ãã¼ã¿ã°ã©ã åæ§æãã¥ã¼ã解æ¾ããã128 * frag6_free_queue -- データグラム再構成キューを解放する。 142 129 * 143 * 注æ: ãã¼ã¿ã°ã©ã åæ§æãã¥ã¼é 144 åãããã¯ãã¦ããå¼ã³åºããã¨ã 130 * 注意: データグラム再構成キュー配列をロックしてから呼び出すこと。 145 131 */ 146 132 … … 162 148 163 149 /* 164 * frag6_timer -- ãã¼ã¿ã°ã©ã åæ§æ管çã¿ã¤ã150 * frag6_timer -- データグラム再構成管理タイマ 165 151 */ 166 152 … … 184 170 185 171 /* 186 * å 187 é ã®æçã®ãªãã»ããã 0 ã®æã®ã¿ 188 * ICMPv6 ã¨ã©ã¼ã¡ãã»ã¼ã¸ãéä¿¡ããã 172 * 先頭の断片のオフセットが 0 の時のみ 173 * ICMPv6 エラーメッセージを送信する。 189 174 */ 190 175 191 /* å 192 é ã®æçããã¼ã¿ã°ã©ã åæ§æãã¥ã¼ããå¤ãã*/ 176 /* 先頭の断片をデータグラム再構成キューから外す。*/ 193 177 ip6_frag_queue[ix] = qip6h->next_frag; 194 178 195 /* ãã¦å 196 ã¢ãã¬ã¹ãå 197 ã«æ»ãã*/ 179 /* あて先アドレスを元に戻す。*/ 198 180 GET_IP6_HDR(frag)->dst = ip6_frag_dest[ix]; 199 181 200 /* ICMPv6 ã¨ã©ã¼ã¡ãã»ã¼ã¸ãéä¿¡ããã*/182 /* ICMPv6 エラーメッセージを送信する。*/ 201 183 icmp6_error(frag, ICMP6_TIME_EXCEEDED, 202 184 ICMP6_TIME_EXCEED_REASSEMBLY, 0); 203 185 } 204 186 205 /* ãã¼ã¿ã°ã©ã åæ§æãã¥ã¼ã解æ¾ããã*/187 /* データグラム再構成キューを解放する。*/ 206 188 NET_COUNT_IP6(net_count_ip6[NC_IP6_FRAG_IN_TMOUT], 1); 207 189 NET_COUNT_IP6(net_count_ip6[NC_IP6_FRAG_IN_DROP], 1); … … 216 198 217 199 /* 218 * frag6_input -- æçãããã®å 219 ¥åé¢æ° 200 * frag6_input -- 断片ヘッダの入力関数 220 201 */ 221 202 … … 241 222 #endif /* #ifdef IP6_CFG_FRAGMENT */ 242 223 243 /* ãããã¯ã¼ã¯ãããã¡ã®æ®ãã®é·ãããã§ãã¯ããã*/224 /* ネットワークバッファの残りの長さをチェックする。*/ 244 225 if (input->len - off < sizeof(T_IP6_FRAG_HDR)) 245 226 goto buf_rel; 246 227 247 228 /* 248 * 巨大ãã¤ãã¼ããªãã·ã§ã³ã¨æçããããåæã«ä½¿ç¨ãããã¨ã¯ 249 * ã§ããªãããã¤ãã¼ãé·ãã 0 ãªãã巨大ãã¤ãã¼ããªãã·ã§ã³ã 250 * æå®ããã¦ãããã¨ã«ãªãã®ã§ ICMP ã§ã¨ã©ã¼ãéä¿¡è 251 ã« 252 * éç¥ããã 229 * 巨大ペイロードオプションと断片ヘッダを同時に使用することは 230 * できない。ペイロード長がが 0 なら、巨大ペイロードオプションが 231 * 指定されていることになるので ICMP でエラーを送信者に 232 * 通知する。 253 233 */ 254 234 ip6h = GET_IP6_HDR(input); … … 262 242 263 243 /* 264 * ãªãã»ããã 0 ã§ãæçµãã©ã°ã¡ã³ãã§ããã°ã265 * åå²ä¸è¦ã®ãã¼ã¿ã°ã©ã ãªã®ã§ã266 * 次ããããæãå¤æ°ã調æ´ãã¦çµäºããã244 * オフセットが 0 で、最終フラグメントであれば、 245 * 分割不要のデータグラムなので、 246 * 次ヘッダを指す変数を調整して終了する。 267 247 */ 268 248 ip6fh = (T_IP6_FRAG_HDR *)(input->buf + off); … … 276 256 277 257 /* 278 * ãã¤ãã¼ãé·ããã§ãã¯ããã258 * ペイロード長をチェックする。 279 259 */ 280 260 if ((ip6fh->off_flag & IP6F_MORE_FRAG) && … … 291 271 292 272 /* 293 * ãã¼ã¿ã°ã©ã åæ§æãã¥ã¼é 294 åããã対å¿ããã¨ã³ããªãæ¢ãã 273 * データグラム再構成キュー配列から、対応するエントリを探す。 295 274 */ 296 275 for (ix = NUM_IP6_FRAG_QUEUE; ix -- > 0; ) { … … 310 289 311 290 /* 312 * æçã®æ£å½æ§ããã§ãã¯ããã291 * 断片の正当性をチェックする。 313 292 */ 314 293 unfraglen = 0; … … 317 296 318 297 /* 319 * å 320 ¥åããæçãå 321 é ã®æç 322 * åå²ã§ããªãé¨åã®é·ã unfraglen ãè¨ç®ããã 298 * 入力した断片が先頭の断片 299 * 分割できない部分の長さ unfraglen を計算する。 323 300 */ 324 301 unfraglen = (off - IF_HDR_SIZE) - sizeof(T_IP6_HDR); … … 352 329 353 330 /* 354 * ip6fq == NULL ã§ããã°ã対å¿ããã¨ã³ããªã¯ç¡ãã®ã§ã 355 * ãã¼ã¿ã°ã©ã åæ§æãã¥ã¼é 356 åã«ãã¨ã³ããªã追å ããã 331 * ip6fq == NULL であれば、対応するエントリは無いので、 332 * データグラム再構成キュー配列に、エントリを追加する。 357 333 */ 358 334 for (ix = NUM_IP6_FRAG_QUEUE; ix -- > 0; ) { 359 335 360 /* 空ãã¨ã³ããªãæ¢ãã*/336 /* 空きエントリを探す。*/ 361 337 if (ip6_frag_queue[ix] == NULL) { 362 338 ip6fq = &ip6_frag_queue[ix]; … … 366 342 367 343 /* 368 * ip6fq == NULL ã§ããã°ã空ãã¨ã³ããªãç¡ãã®ã§ã369 * ã¿ã¤ã ã¢ã¦ãï¼hlimï¼ãçãã¨ã³ããªãéæ¾ããã344 * ip6fq == NULL であれば、空きエントリが無いので、 345 * タイムアウト(hlim)が短いエントリを開放する。 370 346 */ 371 347 if (ip6fq == NULL) { … … 385 361 386 362 /* 387 * ã¨ã³ããªãè¨å®ããã363 * エントリを設定する。 388 364 */ 389 365 *ip6fq = input; … … 398 374 399 375 /* 400 * æçã®æ£å½æ§ããã§ãã¯ããã376 * 断片の正当性をチェックする。 401 377 */ 402 378 unfraglen = 0; … … 405 381 406 382 /* 407 * ãã¼ã¿ã°ã©ã åæ§æãã¥ã¼ã®æåã®æçãå 408 é ã®æç 409 * åå²ã§ããªãé¨åã®é·ã unfraglen ãè¨ç®ããã 383 * データグラム再構成キューの最初の断片が先頭の断片 384 * 分割できない部分の長さ unfraglen を計算する。 410 385 */ 411 386 unfraglen = (GET_QIP6_HDR(*ip6fq)->foff - IF_HDR_SIZE) - sizeof(T_IP6_HDR); … … 416 391 417 392 /* 418 * å 419 ¥åããæçãå 420 é ã®æç 421 * åå²ã§ããªãé¨åã®é·ã unfraglen ãè¨ç®ããã 393 * 入力した断片が先頭の断片 394 * 分割できない部分の長さ unfraglen を計算する。 422 395 */ 423 396 unfraglen = (off - IF_HDR_SIZE) - sizeof(T_IP6_HDR); … … 453 426 454 427 /* 455 * å 456 ¥åããæçãå 457 é ã®æç 458 * ãã¼ã¿ã°ã©ã åæ§æãã¥ã¼ã®æå¾ã®æçãã 459 * ãã¼ã¿ã°ã©ã ã®æ大é·ãè¶ 460 ãã¦ããªãããã§ãã¯ããã 461 */ 462 463 /* æå¾ã®æçãæ¢ç´¢ããã*/ 428 * 入力した断片が先頭の断片 429 * データグラム再構成キューの最後の断片が、 430 * データグラムの最大長を超えていないかチェックする。 431 */ 432 433 /* 最後の断片を探索する。*/ 464 434 next = *ip6fq; 465 435 while ((qip6h = GET_QIP6_HDR(next))->next_frag != NULL) 466 436 next = qip6h->next_frag; 467 437 468 /* æå¾ã®æçã®ãªãã»ããã¨æçãµã¤ãºãè¨ç®ããã*/438 /* 最後の断片のオフセットと断片サイズを計算する。*/ 469 439 qip6fh = (T_IP6_FRAG_HDR *)(next->buf + qip6h->foff); 470 440 fragoff = ntohs(qip6fh->off_flag & IP6F_OFF_MASK); … … 473 443 474 444 /* 475 * ãã¼ã¿ã°ã©ã ã®æ大é·ãè¶ 476 ãã¦ããå ´åã¯ã 477 * ãã¼ã¿ã°ã©ã åæ§æãã¥ã¼å 478 ¨ä½ãç ´æ£ããã 445 * データグラムの最大長を超えている場合は、 446 * データグラム再構成キュー全体を破棄する。 479 447 */ 480 448 frag6_free_queue(ip6fq); … … 484 452 } 485 453 486 /* ECN ã®æ£å½æ§ãã§ãã¯ã¯æªå®è£ 487 */ 488 489 /* 490 * æçãã¨ã³ããªã«æ¿å 491 ¥ããã 492 * ãã¼ã¿ã°ã©ã åæ§æãã¥ã¼ãããå 493 ¥åããæçããåã®æçãæ¢ç´¢ããã 454 /* ECN の正当性チェックは未実装 */ 455 456 /* 457 * 断片をエントリに挿入する。 458 * データグラム再構成キューから、入力した断片より前の断片を探索する。 494 459 */ 495 460 prev = NULL; … … 505 470 506 471 /* 507 * prev ã¯ãå 508 ¥åããæçããåã®æçããã ã NULL ã®å ´åã¯ã 509 * å 510 ¥åããæçããã¼ã¿ã°ã©ã åæ§æãã¥ã¼ã®ä¸ã§æãåã®æçã 511 * next ã¯ãå 512 ¥åããæçããå¾ã®æçããã ã NULL ã®å ´åã¯ã 513 * å 514 ¥åããæçããã¼ã¿ã°ã©ã åæ§æãã¥ã¼ã®ä¸ã§æãå¾ã®æçã 472 * prev は、入力した断片より前の断片。ただし NULL の場合は、 473 * 入力した断片がデータグラム再構成キューの中で最も前の断片。 474 * next は、入力した断片より後の断片。ただし NULL の場合は、 475 * 入力した断片がデータグラム再構成キューの中で最も後の断片。 515 476 */ 516 477 fragoff = ntohs(ip6fh->off_flag & IP6F_OFF_MASK); … … 518 479 519 480 /* 520 * åã®æçã¨ãå 521 ¥åããæçãéãªã£ã¦ããªãããã§ãã¯ããã 481 * 前の断片と、入力した断片が重なっていないかチェックする。 522 482 * 523 483 * qfragoff … … 542 502 if (diff > 0) { 543 503 544 /* éãªã£ã¦ããã°ãå 545 ¥åããæçãç ´æ£ãã¦çµäºããã*/ 504 /* 重なっていれば、入力した断片を破棄して終了する。*/ 546 505 syscall(rel_net_buf(input)); 547 506 goto sig_ret; … … 552 511 553 512 /* 554 * å¾ã®æçã¨ãå 555 ¥åããæçãéãªã£ã¦ããªãããã§ãã¯ããã 513 * 後の断片と、入力した断片が重なっていないかチェックする。 556 514 * 557 515 * fragoff … … 576 534 if (diff > 0) { 577 535 578 /* éãªã£ã¦ããã°ãå 579 ¥åããæçãç ´æ£ãã¦çµäºããã*/ 536 /* 重なっていれば、入力した断片を破棄して終了する。*/ 580 537 syscall(rel_net_buf(input)); 581 538 goto sig_ret; … … 583 540 } 584 541 585 /* å 586 ¥åããæçãè¨å®ããã*/ 542 /* 入力した断片を設定する。*/ 587 543 qip6h = GET_QIP6_HDR(input); 588 544 qip6h->foff = off; … … 598 554 599 555 /* 600 * å 601 ¨ã¦ã®æçãåä¿¡ããããã§ãã¯ããã 556 * 全ての断片を受信したかチェックする。 602 557 */ 603 558 plen = 0; … … 608 563 if (ntohs(qip6fh->off_flag & IP6F_OFF_MASK) != plen) { 609 564 610 /* æçãé£ç¶ãã¦ããªãã*/565 /* 断片が連続していない。*/ 611 566 goto sig_ret; 612 567 } … … 616 571 if (ntohs(qip6fh->off_flag & IP6F_MORE_FRAG) != 0) { 617 572 618 /* æå¾ã®æçãåä¿¡ãã¦ããªãã*/573 /* 最後の断片を受信していない。*/ 619 574 goto sig_ret; 620 575 } 621 576 622 577 /* 623 * å 624 ¨ã¦ã®æçãåä¿¡ããã®ã§ãåæ§æããã 625 */ 626 627 /* ãããã¯ã¼ã¯ãããã¡ãç²å¾ããã*/ 578 * 全ての断片を受信したので、再構成する。 579 */ 580 581 /* ネットワークバッファを獲得する。*/ 628 582 qip6h = GET_QIP6_HDR(*ip6fq); 629 583 qip6fh = (T_IP6_FRAG_HDR *)((*ip6fq)->buf + qip6h->foff); … … 631 585 632 586 /* 633 * æçãããã®ç´åã®ãããã® NEXT ãã£ã¼ã«ãã®ã¢ãã¬ã¹ãç²å¾ãã 634 * å 635 ã«æ»ãã 587 * 断片ヘッダの直前のヘッダの NEXT フィールドのアドレスを獲得し、 588 * 元に戻す。 636 589 */ 637 590 if ((prev_next = ip6_get_prev_hdr(*ip6fq, qip6h->foff)) == NULL) { … … 646 599 647 600 /* 648 * IPv6 ãããã¨åå²ã§ããªãé¨åã 649 * ãã¼ã¿ã°ã©ã åæ§æãã¥ã¼ã®ä¸ã®å 650 é ã®æçããã³ãã¼ããã 601 * IPv6 ヘッダと分割できない部分を 602 * データグラム再構成キューの中の先頭の断片からコピーする。 651 603 */ 652 604 memcpy(input->buf, (*ip6fq)->buf, qip6h->foff); 653 605 654 /* éä¿¡å 655 ã¢ãã¬ã¹ãå 656 ã«æ»ãã*/ 606 /* 送信先アドレスを元に戻す。*/ 657 607 ip6h = GET_IP6_HDR(input); 658 608 memcpy(&ip6h->dst, &ip6_frag_dest[ip6fq - ip6_frag_queue], sizeof(T_IN6_ADDR)); 659 609 660 /* offp ããåæ§æããæçã®å 661 é ã«è¨å®ããã*/ 610 /* offp を、再構成した断片の先頭に設定する。*/ 662 611 *offp = qip6h->foff; 663 612 664 /* ãããã¯ã¼ã¯ãããã¡é·ãè¨å®ããã*/613 /* ネットワークバッファ長を設定する。*/ 665 614 input->len = plen + qip6h->foff; 666 615 667 616 /* 668 * å 669 ¨ã¦ã®æçãã³ãã¼ããã 617 * 全ての断片をコピーする。 670 618 */ 671 619 frag = *ip6fq; … … 680 628 } 681 629 682 /* ãã¤ãã¼ãé·ãè¨å®ããã*/630 /* ペイロード長を設定する。*/ 683 631 ip6h->plen = htons(plen); 684 632 … … 692 640 } 693 641 694 /* ãã¼ã¿ã°ã©ã åæ§æãã¥ã¼ã解æ¾ããã*/642 /* データグラム再構成キューを解放する。*/ 695 643 frag6_free_queue(ip6fq); 696 644 } … … 703 651 704 652 /* 705 * ãã¼ã¿ã°ã©ã ã®åå²ã»åæ§æè¡ããªãå ´åã¯ãå 706 ¨æçãç ´æ£ãã 707 * æå¾ã®æçãåä¿¡ããã¨ãã 708 * ICMP ã¨ã©ã¼ãéä¿¡è 709 ã«éç¥ããã 653 * データグラムの分割・再構成行わない場合は、全断片を破棄し、 654 * 最後の断片を受信したとき、 655 * ICMP エラーを送信者に通知する。 710 656 */ 711 657 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
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 157 145 158 146 /* 159 * å¤æ°147 * 変数 160 148 */ 161 149 … … 163 151 164 152 /* 165 * SNMP 㮠管çæ 166 å ±ãã¼ã¹ (MIB) 153 * SNMP の 管理情報ベース (MIB) 167 154 */ 168 155 … … 172 159 173 160 /* 174 * icmp6_output -- ICMP6 ãã±ãããéä¿¡ããã161 * icmp6_output -- ICMP6 パケットを送信する。 175 162 */ 176 163 … … 184 171 185 172 /* 186 * å®å 187 ã¢ãã¬ã¹ã«ãµããããéä¿¡å 188 ã¢ãã¬ã¹ãã 189 * ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ããæ¢ç´¢ãã¦å©ç¨ããã 173 * 宛先アドレスにふさわしい送信元アドレスを、 174 * ネットワークインタフェースから探索して利用する。 190 175 */ 191 176 ip6h = GET_IP6_HDR(output); … … 199 184 icmp6h = GET_ICMP6_HDR(output, off); 200 185 201 /* ãã§ãã¯ãµã ãè¨ç®ããã*/186 /* チェックサムを計算する。*/ 202 187 icmp6h->sum = 0; 203 188 icmp6h->sum = in6_cksum(output, IPPROTO_ICMPV6, (uint8_t*)icmp6h - output->buf, 204 189 ntohs(ip6h->plen) - (off - IF_IP6_HDR_SIZE)); 205 190 206 /* éä¿¡ããã*/191 /* 送信する。*/ 207 192 NET_COUNT_ICMP6(net_count_icmp6[NC_ICMP6_OUT_OCTETS], 208 193 output->len - GET_IF_IP6_HDR_SIZE(output)); … … 213 198 214 199 /* 215 * icmp6_echo_request -- ã¨ã³ã¼è¦æ±ãåä¿¡ããã¨ãã®å¦ç200 * icmp6_echo_request -- エコー要求を受信したときの処理 216 201 */ 217 202 … … 231 216 232 217 /* 233 * IPv6 ããã㨠ICMPv6 ãããéã®æ¡å¼µããããé¤å»ããã218 * IPv6 ヘッダと ICMPv6 ヘッダ間の拡張ヘッダを除去する。 234 219 */ 235 220 diff = off - IF_IP6_HDR_SIZE; 236 221 if (diff > 0) { 237 /* ICMPv6 ããããåã«è©°ããã*/222 /* ICMPv6 ヘッダを前に詰める。*/ 238 223 memmove(input->buf + IF_IP6_HDR_SIZE, input->buf + off, input->len - off); 239 224 off = IF_IP6_HDR_SIZE; 240 225 241 /* ãã¤ãã¼ãé·ã調æ´ããã*/226 /* ペイロード長を調整する。*/ 242 227 ip6h->plen = htons(ntohs(ip6h->plen) - diff); 243 228 input->len -= diff; … … 252 237 253 238 /* 254 * ã¡ãã»ã¼ã¸ã®åãã¨ã³ã¼è¦æ± (128) ãã255 * ã¨ã³ã¼å¿ç (129) ã«å¤æ´ãã¦éãè¿ãã239 * メッセージの型をエコー要求 (128) から 240 * エコー応答 (129) に変更して送り返す。 256 241 */ 257 242 icmp6h->type = ICMP6_ECHO_REPLY; 258 243 259 /* IPv6 ãããã®çºä¿¡å 260 ã¢ãã¬ã¹ã¨å®å 261 ã¢ãã¬ã¹ãå 262 ¥æ¿ããã*/ 244 /* IPv6 ヘッダの発信元アドレスと宛先アドレスを入替える。*/ 263 245 memcpy(&dst, &ip6h->dst, sizeof(T_IN6_ADDR)); 264 246 memcpy(&ip6h->dst, &ip6h->src, sizeof(T_IN6_ADDR)); … … 266 248 267 249 /* 268 * å 269 ã®å®å 270 ã¢ãã¬ã¹ããã«ããã£ã¹ãã®å ´åã¯ã 271 * å®å 272 ã¢ãã¬ã¹ã«ãµããããéä¿¡å 273 ã¢ãã¬ã¹ãã 274 * ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ããæ¢ç´¢ãã¦å©ç¨ããã 250 * 元の宛先アドレスがマルチキャストの場合は、 251 * 宛先アドレスにふさわしい送信元アドレスを、 252 * ネットワークインタフェースから探索して利用する。 275 253 */ 276 254 if (IN6_IS_ADDR_MULTICAST(&dst)) { … … 283 261 } 284 262 285 /* 次ãããã¨ããããªããããè¨å®ããã*/263 /* 次ヘッダとホップリミットを設定する。*/ 286 264 ip6h->next = IPPROTO_ICMPV6; 287 265 ip6h->hlim = IP6_DEFTTL; 288 266 289 /* ãã§ãã¯ãµã ãè¨ç®ããã*/267 /* チェックサムを計算する。*/ 290 268 icmp6h->sum = 0; 291 269 icmp6h->sum = in6_cksum(input, IPPROTO_ICMPV6, (uint8_t*)icmp6h - input->buf, 292 270 ntohs(ip6h->plen) - (off - IF_IP6_HDR_SIZE)); 293 271 294 /* éä¿¡ããã*/272 /* 送信する。*/ 295 273 NET_COUNT_ICMP6(net_count_icmp6[NC_ICMP6_OUT_OCTETS], 296 274 input->len - GET_IF_IP6_HDR_SIZE(input)); … … 302 280 303 281 /* 304 * icmp6_notify_error -- ã¨ã©ã¼ãéç¥ããã282 * icmp6_notify_error -- エラーを通知する。 305 283 */ 306 284 … … 314 292 len = input->len - poff; 315 293 316 /* ãã¼ã¿ã°ã©ã é·ã ICMP6 ãããé· + IP6 ãããé·ä»¥ä¸ãªãä½ãããªãã*/294 /* データグラム長が ICMP6 ヘッダ長 + IP6 ヘッダ長以下なら何もしない。*/ 317 295 if (len < ICMP6_HDR_SIZE + IP6_HDR_SIZE) 318 296 return; … … 320 298 icmp6h = GET_ICMP6_HDR(input, poff); 321 299 322 /* æçµããããæ¢ç´¢ããã*/300 /* 最終ヘッダを探索する。*/ 323 301 loff = ip6_lasthdr(input, poff + ICMP6_HDR_SIZE, IPPROTO_IPV6, &next); 324 302 325 /* æçµãããã TCP/UDP ã®ã¿å¯¾å¿ããã*/303 /* 最終ヘッダが TCP/UDP のみ対応する。*/ 326 304 if (loff >= 0 && (next == IPPROTO_TCP || next == IPPROTO_UDP)) { 327 305 … … 354 332 355 333 /* 356 * icmp6_mtudisc_update -- Path MTU ãæ´æ°ããã334 * icmp6_mtudisc_update -- Path MTU を更新する。 357 335 */ 358 336 … … 379 357 380 358 /* 381 * icmp6_redirect_input -- åãç´ãã¡ãã»ã¼ã¸ã®å¦ç359 * icmp6_redirect_input -- 向け直しメッセージの処理 382 360 */ 383 361 … … 398 376 399 377 /* 400 * IP ãããã®ãã§ãã¯ã以ä¸ã®å ´åã¯ç ´æ£ããã401 * ã»ãªã³ã¯ãã¼ã«ã«ä»¥å¤ããéããã¦ããã¡ãã»ã¼ã¸402 * ã»ããããªãããã IPV6_MAXHLIM (255) 以å¤378 * IP ヘッダのチェック、以下の場合は破棄する。 379 * ・リンクローカル以外から送られてきたメッセージ 380 * ・ホップリミットが IPV6_MAXHLIM (255) 以外 403 381 */ 404 382 if (!IN6_IS_ADDR_LINKLOCAL(&ip6h->src) || ip6h->hlim != IPV6_MAXHLIM) … … 407 385 rdh = (T_ND_REDIRECT_HDR *)(input->buf + off); 408 386 409 /* åãç´ãã®çµç¹ã¢ãã¬ã¹ããã«ããã£ã¹ãã¢ãã¬ã¹ã®å ´åã¯ç ´æ£ããã*/387 /* 向け直しの終点アドレスがマルチキャストアドレスの場合は破棄する。*/ 410 388 if (IN6_IS_ADDR_MULTICAST(&rdh->dst)) 411 389 goto err_ret; 412 390 413 /* ã¿ã¼ã²ããã¢ãã¬ã¹ãçµè·¯è¡¨ã«ç»é²ããã¦ããããã§ãã¯ããã*/391 /* ターゲットアドレスが経路表に登録されているかチェックする。*/ 414 392 if ((gw = in6_rtalloc(ifp, &rdh->dst)) != NULL) { 415 /* GW ã¢ãã¬ã¹ã¨éä¿¡å 416 ã¢ãã¬ã¹ãç°ãªã£ã¦ããã°ç ´æ£ããã*/ 393 /* GW アドレスと送信元アドレスが異なっていれば破棄する。*/ 417 394 if (!IN6_ARE_ADDR_EQUAL(gw, &ip6h->src)) 418 395 goto err_ret; 419 396 } 420 else /* çµè·¯è¡¨ã«ãªããã°ç ´æ£ããã*/397 else /* 経路表になければ破棄する。*/ 421 398 goto err_ret; 422 399 … … 424 401 425 402 /* 426 * ã¿ã¼ã²ããã¢ãã¬ã¹ããªã³ã¯ãã¼ã«ã«ã¢ãã¬ã¹ã§ããã°ã427 * ã¿ã¼ã²ããã¯ã«ã¼ã¿403 * ターゲットアドレスがリンクローカルアドレスであれば、 404 * ターゲットはルータ 428 405 */ 429 406 if (IN6_IS_ADDR_LINKLOCAL(&rdh->target)) … … 431 408 432 409 /* 433 * ã¿ã¼ã²ããã¢ãã¬ã¹ã¨çµç¹ã¢ãã¬ã¹ãåä¸ã§ããã°ããªã³ãªã³ã¯410 * ターゲットアドレスと終点アドレスが同一であれば、オンリンク 434 411 */ 435 412 if (IN6_ARE_ADDR_EQUAL(&rdh->target, &rdh->dst)) … … 437 414 438 415 /* 439 * ã«ã¼ã¿ã§ãããªã³ãªã³ã¯ã§ããªããã°ã¨ã©ã¼416 * ルータでも、オンリンクでもなければエラー 440 417 */ 441 418 if (!router && !onlink) 442 419 goto err_ret; 443 420 444 /* è¿é£æ¢ç´¢ãªãã·ã§ã³ã®ãªãã»ãããè¨é²ããã*/421 /* 近隣探索オプションのオフセットを記録する。*/ 445 422 if (nd6_options(nd_opt_off, input->buf + off + ND_REDIRECT_HDR_SIZE, 446 423 input->len - (off + ND_REDIRECT_HDR_SIZE)) != E_OK) 447 424 goto err_ret; 448 425 449 /* è¿é£æ¢ç´¢ãªãã·ã§ã³ (åãç´ãã®ã«ã¼ã¿ã®ãªã³ã¯ã¢ãã¬ã¹) */426 /* 近隣探索オプション (向け直しのルータのリンクアドレス) */ 450 427 if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_TARGET_LINKADDR)]) { 451 428 opth = (T_ND_OPT_HDR *)((uint8_t *)(input->buf + off + ND_REDIRECT_HDR_SIZE) + 452 429 nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_TARGET_LINKADDR)] - 8); 453 /* 注æ: ãªãã·ã§ã³ãªãã»ããé 454 åã«ã¯ããªãã»ãã + 8 ãè¨å®ããã¦ããã*/ 430 /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/ 455 431 lladdr = (uint8_t *)(opth + 1); 456 432 lladdr_len = (opth->len << 3); … … 458 434 459 435 /* 460 * ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã®ã¢ãã¬ã¹é·ãä¸è´ããªããã°ã¨ã©ã¼436 * ネットワークインタフェースのアドレス長が一致しなければエラー 461 437 */ 462 438 if (lladdr && lladdr_len != ((sizeof(T_IF_ADDR) + sizeof(T_ND_OPT_HDR) + 7) & ~7)) 463 439 goto err_ret; 464 440 465 /* åãç´ãã®ã«ã¼ã¿ã®ãªã³ã¯ã¢ãã¬ã¹ãè¿é£ãã£ãã·ã¥ã«ç»é²ããã*/441 /* 向け直しのルータのリンクアドレスを近隣キャッシュに登録する。*/ 466 442 nd6_cache_lladdr(ifp, &rdh->target, (T_IF_ADDR *)lladdr, ND_REDIRECT, 467 443 onlink ? ND_REDIRECT_ONLINK : ND_REDIRECT_ROUTER); 468 444 469 /* ã«ã¼ãã£ã³ã°è¡¨ã«ç»é²ããã*/445 /* ルーティング表に登録する。*/ 470 446 in6_rtredirect(&rdh->target, &rdh->dst, 128, IN_RTF_REDIRECT, TMO_IN_REDIRECT); 471 447 … … 482 458 483 459 /* 484 * icmp6_input -- ICMP6 ã®å 485 ¥åé¢æ° 460 * icmp6_input -- ICMP6 の入力関数 486 461 */ 487 462 … … 500 475 NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInMsgs, 1); 501 476 502 /* ICMP6 ãããã®é·ãããã§ãã¯ããã*/477 /* ICMP6 ヘッダの長さをチェックする。*/ 503 478 len = input->len - off; 504 479 if (len < ICMP6_HDR_SIZE) { … … 511 486 icmp6h = GET_ICMP6_HDR(input, off); 512 487 513 /* ãã§ãã¯ãµã ãè¨ç®ããã*/488 /* チェックサムを計算する。*/ 514 489 if ((in6_cksum(input, IPPROTO_ICMPV6, off, ntohs(ip6h->plen) - (off - IF_IP6_HDR_SIZE)) & 0xffff) != 0) { 515 490 NET_COUNT_ICMP6(net_count_icmp6[NC_ICMP6_IN_ERR_PACKETS], 1); … … 520 495 code = icmp6h->code; 521 496 522 /* ã¡ãã»ã¼ã¸ã®åã«ããåå²ããã*/497 /* メッセージの型により分岐する。*/ 523 498 switch (icmp6h->type) { 524 499 525 case ICMP6_DST_UNREACH: /* å®å 526 å°éä¸å¯è½ */ 500 case ICMP6_DST_UNREACH: /* 宛先到達不可能 */ 527 501 NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInDestUnreachs, 1); 528 502 icmp6_notify_error(input, off); 529 503 break; 530 504 531 case ICMP6_ECHO_REQUEST: /* ã¨ã³ã¼è¦æ±*/505 case ICMP6_ECHO_REQUEST: /* エコー要求 */ 532 506 icmp6_echo_request(input, off); 533 507 return IPPROTO_DONE; 534 508 break; 535 509 536 case ICMP6_ECHO_REPLY: /* ã¨ã³ã¼å¿ç*/510 case ICMP6_ECHO_REPLY: /* エコー応答 */ 537 511 538 512 #ifdef ICMP_CFG_CALLBACK_ECHO_REPLY … … 544 518 break; 545 519 546 case ND_ROUTER_ADVERT: /* ã«ã¼ã¿éç¥*/520 case ND_ROUTER_ADVERT: /* ルータ通知 */ 547 521 NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInRouterAdvertisements, 1); 548 522 if (code != 0 || len < ROUTER_ADVERT_HDR_SIZE) … … 552 526 break; 553 527 554 case ND_NEIGHBOR_SOLICIT: /* è¿é£è¦è«*/528 case ND_NEIGHBOR_SOLICIT: /* 近隣要請 */ 555 529 NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInNeighborSolicits, 1); 556 530 if (code != 0 || len < NEIGHBOR_SOLICIT_HDR_SIZE) … … 560 534 break; 561 535 562 case ND_NEIGHBOR_ADVERT: /* è¿é£éç¥*/536 case ND_NEIGHBOR_ADVERT: /* 近隣通知 */ 563 537 NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInNeighborAdvertisements, 1); 564 538 if (code != 0 || len < NEIGHBOR_ADVERT_HDR_SIZE) … … 568 542 break; 569 543 570 case ND_REDIRECT: /* åãç´ã*/544 case ND_REDIRECT: /* 向け直し */ 571 545 NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInRedirects, 1); 572 546 … … 592 566 break; 593 567 594 case ICMP6_PACKET_TOO_BIG: /* ãã±ããã大ããããã*/568 case ICMP6_PACKET_TOO_BIG: /* パケットが大きすぎる。 */ 595 569 596 570 #if NUM_IN6_HOSTCACHE_ENTRY > 0 … … 603 577 break; 604 578 605 case ICMP6_TIME_EXCEEDED: /* TTL ãè¶ 606 éããã */ 579 case ICMP6_TIME_EXCEEDED: /* TTL を超過した。 */ 607 580 NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInTimeExcds, 1); 608 581 break; 609 582 610 case ICMP6_PARAM_PROB: /* IPv6 ããããä¸æ£ã*/583 case ICMP6_PARAM_PROB: /* IPv6 ヘッダが不正。 */ 611 584 NET_COUNT_MIB(icmp6_ifstat.ipv6IfIcmpInParmProblems, 1); 612 585 break; 613 586 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 応答 */ 626 594 syslog(LOG_INFO, "[ICMP6] unsupported type: %d.", icmp6h->type); 627 595 break; … … 640 608 641 609 /* 642 * icmp6_error -- ICMP6 ã¨ã©ã¼éä¿¡é¢æ°610 * icmp6_error -- ICMP6 エラー送信関数 643 611 */ 644 612 … … 655 623 656 624 /* 657 * å®å 658 ã¢ãã¬ã¹ãããã«ããã£ã¹ãã®å ´åã¯ã 659 * 以ä¸ã®æ¡ä»¶ä»¥å¤ã®ã¨ãã¯å¦çãè¡ããªãã 625 * 宛先アドレスが、マルチキャストの場合は、 626 * 以下の条件以外のときは処理を行わない。 660 627 * 661 * ã»ãã¼ã¿ã°ã©ã ã大ããããã662 * ã»IPv6 ãããã®ä¸æ£ã§ããªãã·ã§ã³ãèªèã§ããªãã628 * ・データグラムが大きすぎる。 629 * ・IPv6 ヘッダの不正で、オプションが認識できない。 663 630 */ 664 631 if (IN6_IS_ADDR_MULTICAST(&ip6h->dst) && … … 668 635 669 636 /* 670 * å§ç¹ã¢ãã¬ã¹ãã以ä¸ã®å ´åã¯å¦çãè¡ããªãã637 * 始点アドレスが、以下の場合は処理を行わない。 671 638 * 672 * ã»ç¡æå®673 * ã»ãã«ããã£ã¹ã639 * ・無指定 640 * ・マルチキャスト 674 641 */ 675 642 if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src) || … … 677 644 goto buf_rel; 678 645 679 /* æå¾ã®ããããæ¢ç´¢ããã*/646 /* 最後のヘッダを探索する。*/ 680 647 off = ip6_lasthdr(input, 0, IPPROTO_IPV6, &next); 681 648 682 649 /* 683 * ã¿ã¤ãããã¨ã©ã¼ãåãç´ãã® ICMP6 ãã±ããã®ã¨ã©ã¼ã«ã¯è¿çããªãã650 * タイプが、エラーか向け直しの ICMP6 パケットのエラーには返答しない。 684 651 */ 685 652 if (off >= 0 && next == IPPROTO_ICMPV6) { … … 695 662 } 696 663 697 /* DoS æ»æã«å¯¾ããé²å¾¡ã¯æªå®è£ 698 */ 699 700 /* 701 * éãè¿ãã¡ãã»ã¼ã¸é·ããICMPv6 ã®æ大ãã¤ãã¼ãé·ã«èª¿æ´ããã 664 /* DoS 攻撃に対する防御は未実装 */ 665 666 /* 667 * 送り返すメッセージ長を、ICMPv6 の最大ペイロード長に調整する。 702 668 * IPV6_MMTU - (IP6_HDR_SIZE + ICMP6_HDR_SIZE) 703 669 */ … … 707 673 len = input->len - IF_HDR_SIZE; 708 674 709 /* éä¿¡ç¨ã®ãããã¯ã¼ã¯ãããã¡ãç²å¾ããã*/675 /* 送信用のネットワークバッファを獲得する。*/ 710 676 if (in6_get_datagram(&output, len + ICMP6_HDR_SIZE, 0, 711 677 &ip6h->src, &in6_addr_unspecified, … … 714 680 goto buf_rel; 715 681 716 /* ICMP6 ããããè¨å®ããã*/682 /* ICMP6 ヘッダを設定する。*/ 717 683 icmp6h = GET_ICMP6_HDR(output, IF_IP6_ICMP6_HDR_OFFSET); 718 684 icmp6h->type = type; … … 720 686 icmp6h->icmp6_pptr = htonl(param); 721 687 722 /* ã¨ã©ã¼ãã¼ã¿ãè¨å®ããã*/688 /* エラーデータを設定する。*/ 723 689 memcpy(GET_ICMP6_SDU(output, IF_IP6_ICMP6_HDR_OFFSET), (uint8_t *)ip6h, len); 724 690 … … 741 707 #endif /* of #ifdef SUPPORT_MIB */ 742 708 743 /* éä¿¡ããã*/709 /* 送信する。*/ 744 710 icmp6_output(output, IF_IP6_HDR_SIZE); 745 711 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/if6_ether.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 117 105 118 106 /* 119 * ether_map_ipv6_multicast -- IPv6 ãã«ããã£ã¹ãã¢ãã¬ã¹ããã¤ã¼ãµãããã»ãã«ããã£ã¹ãã¢ãã¬ã¹ã¸ã®å¤æ107 * ether_map_ipv6_multicast -- IPv6 マルチキャストアドレスからイーサネット・マルチキャストアドレスへの変換 120 108 */ 121 109 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/if6_ether.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 81 69 82 70 /* 83 * é¢æ°71 * 関数 84 72 */ 85 73 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/in6.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 156 144 157 145 /* 158 * å 159 ¨åå¤æ° 146 * 全域変数 160 147 */ 161 148 … … 170 157 171 158 /* 172 * in6_addmulti -- ãã«ããã£ã¹ãã¢ãã¬ã¹ãç»é²ããã159 * in6_addmulti -- マルチキャストアドレスを登録する。 173 160 */ 174 161 … … 185 172 186 173 /* 187 * in6_ifinit -- ã¤ã³ã¿ãã§ã¼ã¹ã«ã¢ãã¬ã¹æ 188 å ±ãè¨å®ããåæåããã 174 * in6_ifinit -- インタフェースにアドレス情報を設定し、初期化する。 189 175 */ 190 176 … … 192 178 in6_ifinit (T_IFNET *ifp, T_IN6_IFADDR *ia, const T_IN6_ADDR *addr, uint_t prefix_len) 193 179 { 194 /* ã¢ãã¬ã¹ã¨ãã¬ãã£ãã¯ã¹é·ãè¨å®ããã*/180 /* アドレスとプレフィックス長を設定する。*/ 195 181 ia->addr = *addr; 196 182 ia->prefix_len = prefix_len; 197 183 198 /* ãã©ã°ãåæåããã*/184 /* フラグを初期化する。*/ 199 185 ia->flags = 0; 200 186 201 187 /* 202 * åãã¦ã¢ãã¬ã¹ãè¨å®ãããã¨ããã¤ã³ã¿ãã§ã¼ã¹ç¬èªã®åæåãè¡ãã188 * 初めてアドレスが設定されたとき、インタフェース独自の初期化を行う。 203 189 */ 204 190 … … 207 193 208 194 /* 209 * in6_ifainit -- ã¤ã³ã¿ãã§ã¼ã¹ã¢ãã¬ã¹æ§é ä½ã®åæå195 * in6_ifainit -- インタフェースアドレス構造体の初期化 210 196 */ 211 197 … … 226 212 227 213 /* 228 * in6_if2idlen -- ã¤ã³ã¿ãã§ã¼ã¹ ID é·ãè¿ãã214 * in6_if2idlen -- インタフェース ID 長を返す。 229 215 */ 230 216 … … 240 226 241 227 /* 242 * in6_addr2ifaix -- ã¢ãã¬ã¹ããã¤ã³ã¿ãã§ã¼ã¹ã¢ãã¬ã¹æ 243 å ±ã®ã¤ã³ããã¯ã¹ã«å¤æããã 228 * in6_addr2ifaix -- アドレスからインタフェースアドレス情報のインデックスに変換する。 244 229 */ 245 230 … … 262 247 263 248 /* 264 * in6_addr2maix -- ã¢ãã¬ã¹ãããã«ããã£ã¹ãã¢ãã¬ã¹ã®ã¤ã³ããã¯ã¹ã«å¤æããã249 * in6_addr2maix -- アドレスからマルチキャストアドレスのインデックスに変換する。 265 250 */ 266 251 … … 283 268 284 269 /* 285 * in6_update_ifa -- ã¤ã³ã¿ãã§ã¼ã¹ã®ã¢ãã¬ã¹æ 286 å ±ãæ´æ°ããã 270 * in6_update_ifa -- インタフェースのアドレス情報を更新する。 287 271 */ 288 272 … … 296 280 SYSTIM now; 297 281 298 /* å¼æ°ããã§ãã¯ããã*/282 /* 引数をチェックする。*/ 299 283 if (addr == NULL) 300 284 return E_PAR; 301 285 302 286 /* 303 * æå¹æéããã§ãã¯ããã304 * vltime ( æå¹æé) 㨠pltime (æ¨å¥¨æå¹æé) ã®åä½ã¯ [s]ã287 * 有効時間をチェックする。 288 * vltime (有効時間) と pltime (推奨有効時間) の単位は [s]。 305 289 */ 306 290 syscall(get_tim(&now)); … … 313 297 return E_PAR; 314 298 315 /* ã¤ã³ã¿ãã§ã¼ã¹ãåæåããã*/299 /* インタフェースを初期化する。*/ 316 300 if ((error = in6_ifinit(ifp, ia, addr, prefix_len)) != E_OK) 317 301 return error; … … 319 303 if (IN6_IS_ADDR_LINKLOCAL(addr)) { 320 304 321 /* è¦è«ãã«ããã£ã¹ãã¢ãã¬ã¹ãç»é²ããã*/305 /* 要請マルチキャストアドレスを登録する。*/ 322 306 llsol.s6_addr32[0] = IPV6_ADDR_INT32_MLL; 323 307 llsol.s6_addr32[1] = 0x00000000; … … 328 312 return error; 329 313 330 /* å 331 ¨ãã¼ãã»ãªã³ã¯ãã¼ã«ã«ã»ãã«ããã£ã¹ãã¢ãã¬ã¹ãç»é²ããã*/ 314 /* 全ノード・リンクローカル・マルチキャストアドレスを登録する。*/ 332 315 llsol.s6_addr32[2] = 0x00000000; 333 316 llsol.s6_addr32[3] = IPV6_ADDR_INT32_ONE; … … 337 320 } 338 321 339 /* ã«ã¼ã¿ã¤ã³ããã¯ã¹ãè¨å®ããã*/322 /* ルータインデックスを設定する。*/ 340 323 ia->router_index = router_index; 341 324 342 /* ãã¬ãã£ãã¯ã¹ã¤ã³ããã¯ã¹ãè¨å®ããã*/325 /* プレフィックスインデックスを設定する。*/ 343 326 ia->prefix_index = prefix_index; 344 327 345 /* ãã©ã°ãè¨å®ããã*/328 /* フラグを設定する。*/ 346 329 ia->flags = flags & ~(IN6_IFF_DUPLICATED | IN6_IFF_NODAD); 347 330 ia->flags |= IN6_IFF_DEFINED; 348 331 349 332 /* 350 * ã¢ãã¬ã¹æå¹æéãè¨å®ããã351 * vltime ( æå¹æé) 㨠pltime (æ¨å¥¨æå¹æé) ã®åä½ã¯ [s]ã333 * アドレス有効時間を設定する。 334 * vltime (有効時間) と pltime (推奨有効時間) の単位は [s]。 352 335 */ 353 336 syscall(get_tim(&now)); … … 366 349 ia->lifetime.preferred = 0; 367 350 368 /* è¿é£æ¢ç´¢ã®åæè¨å®ãè¡ãã*/351 /* 近隣探索の初期設定を行う。*/ 369 352 nd6_ifattach(ifp); 370 353 371 /* éè¤ã¢ãã¬ã¹æ¤åºãè¡ãã*/354 /* 重複アドレス検出を行う。*/ 372 355 if ((flags & IN6_IFF_NODAD) == 0) { 373 356 ia->flags |= IN6_IFF_TENTATIVE; … … 379 362 380 363 /* 381 * in6ifa_ifpwithix -- ã¤ã³ããã¯ã¹çªå·ããããããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã«382 * å²ãå½ã¦ããã¦ããã¢ãã¬ã¹ãæ¢ç´¢ããã364 * in6ifa_ifpwithix -- インデックス番号から、ネットワークインタフェースに 365 * 割り当てられているアドレスを探索する。 383 366 */ 384 367 … … 390 373 391 374 /* 392 * in6ifa_ifpwithrtrix -- ã«ã¼ã¿ã®ã¤ã³ããã¯ã¹çªå·ããããããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã«393 * å²ãå½ã¦ããã¦ããã¢ãã¬ã¹ãæ¢ç´¢ããã375 * in6ifa_ifpwithrtrix -- ルータのインデックス番号から、ネットワークインタフェースに 376 * 割り当てられているアドレスを探索する。 394 377 */ 395 378 … … 406 389 407 390 /* 408 * in6_ifawithifp -- å®å 409 ã¢ãã¬ã¹ã«ãµããããéä¿¡å 410 ã¢ãã¬ã¹æ 411 å ±ãã 412 * ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ããæ¢ç´¢ããã 391 * in6_ifawithifp -- 宛先アドレスにふさわしい送信元アドレス情報を、 392 * ネットワークインタフェースから探索する。 413 393 */ 414 394 … … 419 399 int_t ix; 420 400 421 /* å®å 422 ã¢ãã¬ã¹ã¨åãã¹ã³ã¼ãã®ã¢ãã¬ã¹ãè¿ãã*/ 401 /* 宛先アドレスと同じスコープのアドレスを返す。*/ 423 402 if ((ix = in6_addr2ifaix(dst)) != IPV6_IFADDR_IX_INVALID) 424 403 return &ifp->in6_ifaddrs[ix]; … … 440 419 441 420 /* 442 * in6_addrwithifp -- å®å 443 ã¢ãã¬ã¹ã«ãµããããéä¿¡å 444 ã¢ãã¬ã¹ãã 445 * ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ããæ¢ç´¢ããã 421 * in6_addrwithifp -- 宛先アドレスにふさわしい送信元アドレスを、 422 * ネットワークインタフェースから探索する。 446 423 */ 447 424 … … 460 437 461 438 /* 462 * in6_if_up -- ã¤ã³ã¿ãã§ã¼ã¹èµ·åå¾ã®éè¤ã¢ãã¬ã¹æ¤åºãè¡ãã439 * in6_if_up -- インタフェース起動後の重複アドレス検出を行う。 463 440 */ 464 441 … … 466 443 in6_if_up (T_IFNET *ifp) 467 444 { 468 #if 0 /* ä¿ç*/445 #if 0 /* 保留 */ 469 446 int_t dad_delay, ix; 470 447 #endif /* of #if 0 */ … … 472 449 in6_ifattach(ifp); 473 450 474 #if 0 /* ä¿ç*/475 /* éè¤ã¢ãã¬ã¹æ¤åºãè¡ãã*/451 #if 0 /* 保留 */ 452 /* 重複アドレス検出を行う。*/ 476 453 dad_delay = 0; 477 454 for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) … … 483 460 #if NUM_ND6_RTR_SOL_RETRY > 0 484 461 485 /* ã«ã¼ã¿è¦è«ãåºåããã*/462 /* ルータ要請を出力する。*/ 486 463 nd6_rtrsol_ctl(); 487 464 … … 490 467 491 468 /* 492 * in6_are_prefix_equal -- ãã¬ãã£ãã¯ã¹ãåä¸ã調ã¹ãã469 * in6_are_prefix_equal -- プレフィックスが同一か調べる。 493 470 */ 494 471 … … 511 488 512 489 /* 513 * in6_ifaddr_timer -- ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã®ã¢ãã¬ã¹ã®ç®¡çã¿ã¤ãã¼490 * in6_ifaddr_timer -- ネットワークインタフェースのアドレスの管理タイマー 514 491 */ 515 492 … … 530 507 531 508 /* 532 * æå¹æéãéããã®ã§åé¤ããã509 * 有効時間を過ぎたので削除する。 533 510 */ 534 511 ia->flags &= ~IN6_IFF_DEFINED; … … 538 515 539 516 /* 540 * æ¨å¥¨æå¹æéãéããã®ã§éæ¨å¥¨ã«ããã517 * 推奨有効時間を過ぎたので非推奨にする。 541 518 */ 542 519 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
totext/x-chdr;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 115 103 116 104 /* 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 アドレス 124 112 */ 125 113 … … 146 134 147 135 /* 148 * IPv6 ã¢ãã¬ã¹ã®åæåãã¼ã¿136 * IPv6 アドレスの初期化データ 149 137 */ 150 138 … … 168 156 169 157 /* 170 * ç¹å¥ãªã¢ãã¬ã¹ã®ãã§ãã¯171 */ 172 173 /* ç¡æå®*/158 * 特別なアドレスのチェック 159 */ 160 161 /* 無指定 */ 174 162 175 163 #define IN6_IS_ADDR_UNSPECIFIED(a) \ 176 164 (memcmp((void *)(a), (void *)&in6_addr_unspecified, sizeof(T_IN6_ADDR)) == 0) 177 165 178 /* ã«ã¼ãããã¯*/166 /* ループバック */ 179 167 180 168 #define IN6_IS_ADDR_LOOPBACK(a) \ … … 183 171 184 172 /* 185 * ã¹ã³ã¼ãID173 * スコープ ID 186 174 */ 187 175 … … 193 181 194 182 /* 195 * ã¦ããã£ã¹ãã»ã¹ã³ã¼ã 196 * 197 * 注æ: ä¸ä½ 10 ãããã®ã¿ãã§ãã¯ããªããã°ãªããªããRFC2373 åç 198 § 199 */ 200 201 /* ãªã³ã¯ãã¼ã«ã« */ 183 * ユニキャスト・スコープ 184 * 185 * 注意: 上位 10 ビットのみチェックしなければならない。RFC2373 参照 186 */ 187 188 /* リンクローカル */ 202 189 203 190 #define IN6_IS_ADDR_LINKLOCAL(a) \ 204 191 (((a)->s6_addr8[0] == UINT_C(0xfe)) && (((a)->s6_addr8[1] & UINT_C(0xc0)) == UINT_C(0x80))) 205 192 206 /* ãµã¤ããã¼ã«ã«*/193 /* サイトローカル */ 207 194 208 195 #define IN6_IS_ADDR_SITELOCAL(a) \ 209 196 (((a)->s6_addr8[0] == UINT_C(0xfe)) && (((a)->s6_addr8[1] & UINT_C(0xc0)) == UINT_C(0xc0))) 210 197 211 /* éç´å¯è½ã¦ããã£ã¹ã (ã°ãã¼ãã«) */198 /* 集約可能ユニキャスト (グローバル) */ 212 199 213 200 #define IN6_IS_ADDR_AGGREGATE_UNICAST(a) \ … … 215 202 216 203 /* 217 * ãã«ããã£ã¹ã204 * マルチキャスト 218 205 */ 219 206 … … 221 208 222 209 /* 223 * åä¸ã®ãã§ãã¯210 * 同一のチェック 224 211 */ 225 212 … … 227 214 228 215 /* 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 アドレス/ポート番号の定義 243 230 */ 244 231 245 232 typedef struct t_ipv6ep { 246 T_IN6_ADDR ipaddr; /* IPv6 ã¢ãã¬ã¹*/247 uint16_t portno; /* ãã¼ãçªå·*/233 T_IN6_ADDR ipaddr; /* IPv6 アドレス */ 234 uint16_t portno; /* ポート番号 */ 248 235 } T_IPV6EP; 249 236 … … 251 238 252 239 /* 253 * ITRON/TCP/IP ç¨ IP ã¢ãã¬ã¹ã®å®ç¾©240 * ITRON/TCP/IP 用 IP アドレスの定義 254 241 */ 255 242 … … 257 244 258 245 /* 259 * åççæç¨ IPv6 TCP åä»å£246 * 動的生成用 IPv6 TCP 受付口 260 247 */ 261 248 262 249 typedef struct t_tcp6_crep { 263 /* æ¨æº */ 264 ATR repatr; /* åä»å£å±æ§ */ 265 T_IPV6EP myaddr; /* èªåã®ã¢ãã¬ã¹ */ 266 /* å®è£ 267 ä¾å */ 250 /* 標準 */ 251 ATR repatr; /* 受付口属性 */ 252 T_IPV6EP myaddr; /* 自分のアドレス */ 253 /* 実装依存 */ 268 254 } T_TCP6_CREP; 269 255 270 256 /* 271 * åççæç¨ IPv6 UDP é信端ç¹257 * 動的生成用 IPv6 UDP 通信端点 272 258 */ 273 259 274 260 typedef 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 /* 実装依存 */ 281 266 } T_UDP6_CCEP; 282 267 283 268 /* 284 * åæ¹åç 285 § 269 * 前方参照 286 270 */ 287 271 … … 295 279 296 280 /* 297 * å 298 ¨åå¤æ° 281 * 全域変数 299 282 */ 300 283 … … 306 289 307 290 /* 308 * TINET ç¬èªAPI291 * TINET 独自 API 309 292 */ 310 293 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/in6_ifattach.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 114 102 115 103 /* 116 * EUI64 ã®å®ç¾©104 * EUI64 の定義 117 105 */ 118 106 … … 122 110 123 111 /* 124 * get_mac6_ifid -- MAC (6 ãªã¯ããã) ã¢ãã¬ã¹ã§ãã¤ã³ã¿ãã§ã¼ã¹èå¥åãè¨å®ããã112 * get_mac6_ifid -- MAC (6 オクテット) アドレスで、インタフェース識別子を設定する。 125 113 */ 126 114 … … 145 133 146 134 /* 147 * get_rand_ifid -- ä¹±æ°ã«ãããã¤ã³ã¿ãã§ã¼ã¹èå¥åãè¨å®ããã135 * get_rand_ifid -- 乱数により、インタフェース識別子を設定する。 148 136 */ 149 137 … … 159 147 160 148 /* 161 * in6_ifattach_linklocal -- ã¤ã³ã¿ãã§ã¼ã¹ã«ãªã³ã¯ãã¼ã«ã«ã»ã¢ãã¬ã¹ãå²ãå½ã¦ãã149 * in6_ifattach_linklocal -- インタフェースにリンクローカル・アドレスを割り当てる。 162 150 */ 163 151 … … 169 157 170 158 /* 171 * ãªã³ã¯ãã¼ã«ã«ã»ãã¬ãã£ãã¯ã¹ fe80::/64 ãè¨å®ããã159 * リンクローカル・プレフィックス fe80::/64 を設定する。 172 160 */ 173 161 addr.s6_addr32[0] = IPV6_ADDR_INT32_ULL; 174 162 addr.s6_addr32[1] = ULONG_C(0); 175 163 176 /* ã¤ã³ã¿ãã§ã¼ã¹èå¥åãè¨å®ããã*/164 /* インタフェース識別子を設定する。*/ 177 165 if ((error = IF_IN6_IFID(ifp, &addr)) != E_OK) 178 166 return error; 179 167 180 /* ã¤ã³ã¿ãã§ã¼ã¹ã®ã¢ãã¬ã¹æ 181 å ±ãæ´æ°ããã*/ 168 /* インタフェースのアドレス情報を更新する。*/ 182 169 if ((error = in6_update_ifa(ifp, &ifp->in6_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL], 183 170 &addr, 64, ND6_INFINITE_LIFETIME, … … 192 179 193 180 /* 194 * in6_ifattach -- ã¤ã³ã¿ãã§ã¼ã¹ã«ã¢ãã¬ã¹ãå²ãå½ã¦ãã181 * in6_ifattach -- インタフェースにアドレスを割り当てる。 195 182 */ 196 183 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/in6_ifattach.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 80 68 81 69 /* 82 * é¢æ°70 * 関数 83 71 */ 84 72 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/in6_rename.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 48 36 49 37 /* 50 * TCP/IPv6 ãããã³ã«ã¹ã¿ãã¯å 51 é¨åã®ãªãã¼ã 38 * TCP/IPv6 プロトコルスタック内部名のリネーム 52 39 */ 53 40 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/in6_subr.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 150 138 151 139 /* 152 * in6_make_ipv4mapped -- IPv4 å°å½±ã¢ãã¬ã¹ãçæããã153 * 154 * 注æ:155 * src ã¯ãã¹ããã¤ããªã¼ãã¼140 * in6_make_ipv4mapped -- IPv4 射影アドレスを生成する。 141 * 142 * 注意: 143 * src はホストバイトオーダー 156 144 * 157 145 */ … … 173 161 174 162 /* 175 * in6_rtinit -- ã«ã¼ãã£ã³ã°è¡¨ãåæåããã163 * in6_rtinit -- ルーティング表を初期化する。 176 164 */ 177 165 … … 189 177 190 178 /* 191 * in6_rtnewentry -- æ°ããã¨ã³ããªãç²å¾ããã179 * in6_rtnewentry -- 新しいエントリを獲得する。 192 180 */ 193 181 … … 199 187 int_t ix; 200 188 201 /* 空ãã¨ã³ããªãæ¢ãã*/189 /* 空きエントリを探す。*/ 202 190 for (ix = NUM_IN6_STATIC_ROUTE_ENTRY; ix < NUM_IN6_ROUTE_ENTRY; ix ++) { 203 191 rt = &routing6_tbl[ix]; … … 208 196 } 209 197 210 /* expire ã®åä½ã¯ [s]ã*/198 /* expire の単位は [s]。*/ 211 199 syscall(get_tim(&now)); 212 200 now /= SYSTIM_HZ; 213 201 214 202 if (frt == NULL) { 215 /* 空ãããªããã°ãæå¹æéããã£ã¨ãçãã¨ã³ããªã空ãã«ããã*/203 /* 空きがなければ、有効時間がもっとも短いエントリを空きにする。*/ 216 204 T_IN6_RTENTRY *srt = NULL; 217 205 int_t diff, sdiff = INT_MAX; … … 222 210 diff = (int_t)(rt->expire - now); 223 211 if (diff <= 0) { /* rt->expire <= now */ 224 /* æ¢ã«ãæå¹æéãéãã¦ããã*/212 /* 既に、有効時間が過ぎている。*/ 225 213 frt = rt; 226 214 break; … … 243 231 244 232 /* 245 * in6_rttimer -- ã«ã¼ãã£ã³ã°è¡¨ã®ç®¡çã¿ã¤ãã¼233 * in6_rttimer -- ルーティング表の管理タイマー 246 234 */ 247 235 … … 252 240 int_t ix; 253 241 254 /* expire ã®åä½ã¯ [s]ã*/242 /* expire の単位は [s]。*/ 255 243 syscall(get_tim(&now)); 256 244 now /= SYSTIM_HZ; … … 269 257 270 258 /* 271 * ãã¹ããã£ãã·ã¥259 * ホストキャッシュ 272 260 */ 273 261 … … 277 265 278 266 /* 279 * in6_lookup_ifaddr -- ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã«å²ãå½ã¦ããã¦ããã¢ãã¬ã¹ãæ¢ç´¢ããã267 * in6_lookup_ifaddr -- ネットワークインタフェースに割り当てられているアドレスを探索する。 280 268 */ 281 269 … … 294 282 295 283 /* 296 * in6_lookup_multi -- ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã®ãã«ããã£ã¹ãã¢ãã¬ã¹ãæ¤ç´¢ããã284 * in6_lookup_multi -- ネットワークインタフェースのマルチキャストアドレスを検索する。 297 285 */ 298 286 … … 309 297 310 298 /* 311 * in6_set_header -- IPv6 ããããè¨å®ããã299 * in6_set_header -- IPv6 ヘッダを設定する。 312 300 */ 313 301 … … 322 310 323 311 /* 324 * å®å 325 ã¢ãã¬ã¹ã«ãµããããéä¿¡å 326 ã¢ãã¬ã¹ãã 327 * ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ããæ¢ç´¢ãã¦å©ç¨ããã 312 * 宛先アドレスにふさわしい送信元アドレスを、 313 * ネットワークインタフェースから探索して利用する。 328 314 */ 329 315 if (srcaddr == NULL || !IN6_IS_ADDR_UNSPECIFIED(srcaddr)) … … 334 320 srcaddr = &ia->addr; 335 321 336 /* IPv6 ããããè¨å®ããã*/322 /* IPv6 ヘッダを設定する。*/ 337 323 ip6h = GET_IP6_HDR(nbuf); 338 324 ip6h->vcf = htonl(IP6_MAKE_VCF(IPV6_VERSION, 0)); … … 355 341 356 342 /* 357 * in6_get_datagram -- IPv6 ãã¼ã¿ã°ã©ã ãç²å¾ããããããè¨å®ããã343 * in6_get_datagram -- IPv6 データグラムを獲得し、ヘッダを設定する。 358 344 */ 359 345 … … 366 352 uint_t align; 367 353 368 /* ãã¼ã¿é·ã¯ 4 ãªã¯ãããå¢çã«èª¿æ´ããã*/354 /* データ長は 4 オクテット境界に調整する。 */ 369 355 align = (len + 3) >> 2 << 2; 370 356 371 /* ãããã¯ã¼ã¯ãããã¡ãç²å¾ããã*/357 /* ネットワークバッファを獲得する。 */ 372 358 if ((error = tget_net_buf_ex(nbuf, IF_IP6_HDR_SIZE + align, 373 359 IF_IP6_HDR_SIZE + maxlen, nbatr, tmout)) != E_OK) … … 375 361 376 362 /* 377 * ãã大ããªãµã¤ãºã®ãããã¯ã¼ã¯ãããã¡ãç²å¾ããå ´åã®ã¿é·ãã調æ´ããã378 * ããå°ããªãµã¤ãºã®ãããã¯ã¼ã¯ãããã¡ã®ç²å¾ã¯ãéä¿¡ã¦ã£ã³ããããã¡ã®379 * çã³ãã¼æ©è½ã§ä½¿ç¨ãããå®éã«éä¿¡ããã¾ã§ããã¼ã¿ãµã¤ãºã¯æ±ºå®ã§ããªãã363 * より大きなサイズのネットワークバッファを獲得する場合のみ長さを調整する。 364 * より小さなサイズのネットワークバッファの獲得は、送信ウィンドバッファの 365 * 省コピー機能で使用され、実際に送信するまで、データサイズは決定できない。 380 366 */ 381 367 if ((nbatr & NBA_SEARCH_ASCENT) != 0) 382 368 (*nbuf)->len = IF_IP6_HDR_SIZE + len; 383 369 384 /* IPv6 ããããè¨å®ããã*/370 /* IPv6 ヘッダを設定する。*/ 385 371 if ((error = in6_set_header(*nbuf, len, dstaddr, srcaddr, next, hlim)) != E_OK) { 386 372 syscall(rel_net_buf(*nbuf)); … … 389 375 } 390 376 391 /* 4 ãªã¯ãããå¢çã¾ã§ããã£ã³ã°ã§åããã*/377 /* 4 オクテット境界までパディングで埋める。*/ 392 378 if (align > len) 393 379 memset(GET_IP6_SDU(*nbuf) + len, 0, align - len); … … 397 383 398 384 /* 399 * in6_get_maxnum_ifaddr -- ã¤ã³ã¿ãã§ã¼ã¹ã«è¨å®å¯è½ãªæ大ã¢ãã¬ã¹æ°ãè¿ãã385 * in6_get_maxnum_ifaddr -- インタフェースに設定可能な最大アドレス数を返す。 400 386 */ 401 387 … … 407 393 408 394 /* 409 * in6_get_ifaddr -- ã¤ã³ã¿ãã§ã¼ã¹ã«è¨å®ããã¦ããã¢ãã¬ã¹ãè¿ãã395 * in6_get_ifaddr -- インタフェースに設定されているアドレスを返す。 410 396 */ 411 397 … … 423 409 424 410 /* 425 * ipv62str -- IPv6 ã¢ãã¬ã¹ãæååã«å¤æããã411 * ipv62str -- IPv6 アドレスを文字列に変換する。 426 412 */ 427 413 … … 493 479 494 480 /* 495 * in6_cksum -- IPv6 ã®ãã©ã³ã¹ãã¼ã層ãããã®ãã§ãã¯ãµã ãè¨ç®ããã496 * 497 * 注æ: æ»ãå¤ã¯ãããã¯ã¼ã¯ãã¤ããªã¼ã481 * in6_cksum -- IPv6 のトランスポート層ヘッダのチェックサムを計算する。 482 * 483 * 注意: 戻り値はネットワークバイトオーダ 498 484 */ 499 485 … … 504 490 uint_t align; 505 491 506 /* 4 ãªã¯ãããå¢çã®ãã¼ã¿é·*/492 /* 4 オクテット境界のデータ長 */ 507 493 align = (len + 3) >> 2 << 2; 508 494 509 /* 4 ãªã¯ãããå¢çã¾ã§ããã£ã³ã°ã§åããã*/495 /* 4 オクテット境界までパディングで埋める。*/ 510 496 if (align > len) 511 497 memset((uint8_t*)nbuf->buf + off + len, 0, align - len); … … 520 506 521 507 /* 522 * get_ip6_hdr_size -- æ¡å¼µããããå«ãã IPv6 ãããé·ãè¿ãã508 * get_ip6_hdr_size -- 拡張ヘッダも含めた IPv6 ヘッダ長を返す。 523 509 */ 524 510 … … 533 519 while (1) { 534 520 next = *hdr; 535 if (curr ==IPPROTO_NONE) /* 次ãããç¡ã*/521 if (curr ==IPPROTO_NONE) /* 次ヘッダ無し */ 536 522 break; 537 else if (curr == IPPROTO_FRAGMENT) /* æçå*/523 else if (curr == IPPROTO_FRAGMENT) /* 断片化 */ 538 524 hsize = sizeof(T_IP6_FRAG_HDR); 539 else if (curr == IPPROTO_AH) /* IPv6 èªè¨¼*/525 else if (curr == IPPROTO_AH) /* IPv6 認証 */ 540 526 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) /* 経路制御 */ 544 530 hsize = (((T_IP6_EXT_HDR *)hdr)->len + 1) * 8; 545 531 else … … 553 539 554 540 /* 555 * in6_plen2pmask -- ãã¬ãã£ãã¯ã¹é·ãããã¹ã¯ãçæããã541 * in6_plen2pmask -- プレフィックス長からマスクを生成する。 556 542 */ 557 543 … … 571 557 572 558 /* 573 * in6_rtalloc -- ã«ã¼ãã£ã³ã°è¡¨ãæ¢ç´¢ããã559 * in6_rtalloc -- ルーティング表を探索する。 574 560 */ 575 561 … … 585 571 586 572 /* 587 * ãµã¤ããã¼ã«ã«ã¢ãã¬ã¹ãéç´å¯è½ï¼ã°ãã¼ãã«ï¼ã¢ãã¬ã¹ã®å ´åã¯ã 588 * åä¸ãªã³ã¯å 589 ã®ãã¼ãã§ãããããã§ãã¯ããã 573 * サイトローカルアドレスか集約可能(グローバル)アドレスの場合は、 574 * 同一リンク内のノードであるかをチェックする。 590 575 */ 591 576 … … 593 578 now /= SYSTIM_HZ; 594 579 595 /* æ¨å¥¨æå¹æéå 596 ã®ã¢ãã¬ã¹ãæ¢ç´¢ããã*/ 580 /* 推奨有効時間内のアドレスを探索する。*/ 597 581 for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) { 598 582 ia = &ifp->in6_ifaddrs[ix]; … … 605 589 } 606 590 607 /* æå¹æéå 608 ã®ã¢ãã¬ã¹ãæ¢ç´¢ããã*/ 591 /* 有効時間内のアドレスを探索する。*/ 609 592 for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) { 610 593 ia = &ifp->in6_ifaddrs[ix]; … … 617 600 618 601 /* 619 * ãã¬ãã£ãã¯ã¹ãæ¢ç´¢ããã602 * プレフィックスを探索する。 620 603 */ 621 604 if (nd6_onlink_prefix_lookup (dst) != NULL) … … 623 606 624 607 /* 625 * éççµè·¯è¡¨ãæ¢ç´¢ããã608 * 静的経路表を探索する。 626 609 */ 627 610 … … 635 618 636 619 /* 637 * åãç´ãã«ããã¨ã³ããªã¯ãæå¹æéãåããæå»ã延é·ããã638 * expire ã®åä½ã¯ [s]ã639 * TMO_IN_REDIRECT ã®åä½ã¯ [ms]ã620 * 向け直しによるエントリは、有効時間が切れる時刻を延長する。 621 * expire の単位は [s]。 622 * TMO_IN_REDIRECT の単位は [ms]。 640 623 */ 641 624 if (ix > NUM_IN6_STATIC_ROUTE_ENTRY) { … … 655 638 656 639 /* 657 * ãã£ãã©ã«ãã«ã¼ã¿ã»ãªã¹ããæ¢ç´¢ããã640 * ディフォルトルータ・リストを探索する。 658 641 */ 659 642 return nd6_router_lookup(); … … 664 647 665 648 /* 666 * in6_gateway_lookup -- ã«ã¼ãã£ã³ã°è¡¨ã®ã«ã¼ã¿ãæ¢ç´¢ããã649 * in6_gateway_lookup -- ルーティング表のルータを探索する。 667 650 */ 668 651 … … 680 663 681 664 /* 682 * in6_rtredirect -- ã«ã¼ãã£ã³ã°è¡¨ã«ã¨ã³ããªãç»é²ããã683 * 684 * 注æ: å¼æ° tmo ã®åä½ã¯ [us]ã665 * in6_rtredirect -- ルーティング表にエントリを登録する。 666 * 667 * 注意: 引数 tmo の単位は [us]。 685 668 */ 686 669 … … 701 684 702 685 /* 703 * in6_hostcache_lookup -- IPv6 ãã¹ããã£ãã·ã¥ãæ¢ç´¢ããã686 * in6_hostcache_lookup -- IPv6 ホストキャッシュを探索する。 704 687 */ 705 688 … … 717 700 718 701 /* 719 * in6_hostcache_update -- IPv6 ãã¹ããã£ãã·ã¥ãæ´æ°ããã702 * in6_hostcache_update -- IPv6 ホストキャッシュを更新する。 720 703 */ 721 704 … … 729 712 syscall(get_tim(&now)); 730 713 731 /* æ¢ã«ç»é²ããã¦ãããæ¢ç´¢ããã*/714 /* 既に登録されているか探索する。*/ 732 715 if ((hc = in6_hostcache_lookup (dst)) == NULL) { 733 716 734 /* 空ãã®ãã¹ããã£ãã·ã¥ãæ¢ãã*/717 /* 空きのホストキャッシュを探す。*/ 735 718 for (ix = NUM_IN6_HOSTCACHE_ENTRY; ix -- > 0; ) { 736 719 if (IN6_IS_HOSTCACHE_FREE(&in6_hostcache[ix])) … … 740 723 if (ix < 0) { 741 724 /* 742 * 空ããç¡ãæã¯ãæå¹æéã®åããæéãã743 * æãçããã¹ããã£ãã·ã¥ãç½®æããã725 * 空きが無い時は、有効時間の切れる時間が、 726 * 最も短いホストキャッシュを置換する。 744 727 */ 745 728 old = now - 1; … … 761 744 762 745 /* 763 * æ¢ã«ç»é²ããã¦ãã¦ãæ°ãã MTU ããç»é²ããã¦ãã MTU ãã大ããã¨ãã764 * IN6_HOSTCACHE_INCREASE ï¼æ¨å¥¨ 10 åï¼éã¯æ´æ°ããªãã746 * 既に登録されていて、新しい MTU が、登録されている MTU より大きいとき、 747 * IN6_HOSTCACHE_INCREASE(推奨 10 分)間は更新しない。 765 748 */ 766 749 return; … … 772 755 773 756 /* 774 * in6_hostcache_getmtu -- IPv6 ãã¹ããã£ãã·ã¥ããã MTU ãåå¾ããã775 * 776 * æ»ãå¤ã 0 ã§ããã°ããã¹ããã£ãã·ã¥ã«ç»é²ããã¦ããªãã757 * in6_hostcache_getmtu -- IPv6 ホストキャッシュをから MTU を取得する。 758 * 759 * 戻り値が 0 であれば、ホストキャッシュに登録されていない。 777 760 */ 778 761 … … 782 765 T_IN6_HOSTCACHE_ENTRY *hc; 783 766 784 /* æ¢ã«ç»é²ããã¦ãããæ¢ç´¢ããã*/767 /* 既に登録されているか探索する。*/ 785 768 if ((hc = in6_hostcache_lookup(dst)) == NULL) 786 769 return 0; … … 790 773 791 774 /* 792 * in6_hostcache_timer -- IPv6 ãã¹ããã£ãã·ã¥æ´æ°ã¿ã¤ãã¼793 * 794 * 1 ç§å¨æã§èµ·åãããã775 * in6_hostcache_timer -- IPv6 ホストキャッシュ更新タイマー 776 * 777 * 1秒周期で起動される。 795 778 */ 796 779 … … 812 795 813 796 /* 814 * in6_timer -- IPv6 å 815 ±éã¿ã¤ãã¼ 816 * 817 * 1ç§å¨æã§èµ·åãããã 797 * in6_timer -- IPv6 共通タイマー 798 * 799 * 1秒周期で起動される。 818 800 */ 819 801 … … 843 825 844 826 /* 845 * in6_init -- IPv6 å 846 ±éæ©è½ãåæåããã 827 * in6_init -- IPv6 共通機能を初期化する。 847 828 */ 848 829 … … 861 842 862 843 /* 863 * in6_is_dstaddr_accept -- å®å 864 ã¢ãã¬ã¹ã¨ãã¦æ£ããããã§ãã¯ããã 844 * in6_is_dstaddr_accept -- 宛先アドレスとして正しいかチェックする。 865 845 */ 866 846 … … 877 857 878 858 /* 879 * in6_add_ifaddr -- ã¤ã³ã¿ãã§ã¼ã¹ã« IPv6 ã¢ãã¬ã¹ãè¨å®ããã880 * 881 * vltime 㨠pltime ã®åä½ã¯[s]859 * in6_add_ifaddr -- インタフェースに IPv6 アドレスを設定する。 860 * 861 * vltime と pltime の単位は[s] 882 862 */ 883 863 … … 890 870 int_t ix; 891 871 892 /* 空ãã®ã¨ã³ããªã¼ãæ¢ãã*/872 /* 空きのエントリーを探す。*/ 893 873 ix = 0; 894 874 while (true) { 895 875 ia = in6ifa_ifpwithix(ifp, ix ++); 896 876 897 /* 空ããç¡ããã°ã¨ã©ã¼*/877 /* 空きが無ければエラー */ 898 878 if (ia == NULL) 899 879 return E_OBJ; … … 903 883 } 904 884 905 /* ç»é²ããã*/885 /* 登録する。*/ 906 886 return in6_update_ifa(ifp, ia, addr, prefix_len, vltime, pltime, 907 887 IN6_RTR_IX_UNREACH, ND6_PREFIX_IX_INVALID, 0); … … 909 889 910 890 /* 911 * in6_upd_ifaddr -- ã¤ã³ã¿ãã§ã¼ã¹ã«è¨å®ããã¦ãã IPv6 ã¢ãã¬ã¹ãæ´æ°ããã912 * 913 * ç»é²ããã¦ããªããã°ã追å ããã914 * vltime 㨠pltime ã®åä½ã¯[s]891 * in6_upd_ifaddr -- インタフェースに設定されている IPv6 アドレスを更新する。 892 * 893 * 登録されていなければ、追加する。 894 * vltime と pltime の単位は[s] 915 895 */ 916 896 … … 924 904 925 905 /* 926 * ã¢ãã¬ã¹ãä¸è´ããã¨ã³ããªã¼ãæ¢ãã927 * ç¡ããã°ç»é²ããã906 * アドレスが一致するエントリーを探す。 907 * 無ければ登録する。 928 908 */ 929 909 if ((ix = in6_addr2ifaix(addr)) == IPV6_IFADDR_IX_INVALID) … … 931 911 932 912 /* 933 * ã¤ã³ããã¯ã¹çªå·ãããã¨ã³ããªã¼ã«å¤æããã934 * ã¨ã©ã¼ã«ãªããªãã¯ãã§ãããã確èªããã913 * インデックス番号から、エントリーに変換する。 914 * エラーにならないはずであるが、確認する。 935 915 */ 936 916 if ((ia = in6ifa_ifpwithix (ifp, ix)) == NULL) 937 917 return E_OBJ; 938 918 939 /* æ´æ°ããã*/919 /* 更新する。*/ 940 920 return in6_update_ifa(ifp, ia, addr, prefix_len, vltime, pltime, 941 921 IN6_RTR_IX_UNREACH, ND6_PREFIX_IX_INVALID, 0); … … 943 923 944 924 /* 945 * in6_del_ifaddr -- ã¤ã³ã¿ãã§ã¼ã¹ã«è¨å®ããã¦ãã IPv6 ã¢ãã¬ã¹ãåé¤ããã925 * in6_del_ifaddr -- インタフェースに設定されている IPv6 アドレスを削除する。 946 926 */ 947 927 … … 952 932 int_t ix; 953 933 954 /* ã¢ãã¬ã¹ãä¸è´ããã¨ã³ããªã¼ãæ¢ãã*/934 /* アドレスが一致するエントリーを探す。*/ 955 935 if ((ix = in6_addr2ifaix(addr)) != IPV6_IFADDR_IX_INVALID) { 956 936 957 /* ã¨ã³ããªã¼ãç¡å¹ã«ããã*/937 /* エントリーを無効にする。*/ 958 938 ifp->in6_ifaddrs[ix].flags &= ~IN6_IFF_DEFINED; 959 939 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
totext/x-chdr;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 115 103 116 104 /* 117 * ã¢ãã¬ã¹ã®å®ç¾©105 * アドレスの定義 118 106 */ 119 107 … … 149 137 150 138 /* 151 * ç¹å¥ãªã¢ãã¬ã¹ã®ãã§ãã¯152 */ 153 154 /* IPv4 äºæ*/139 * 特別なアドレスのチェック 140 */ 141 142 /* IPv4 互換 */ 155 143 156 144 #ifdef _NET_CFG_BYTE_ORDER … … 160 148 #endif 161 149 162 /* IPv4 å°å½±*/150 /* IPv4 射影 */ 163 151 164 152 #ifdef _NET_CFG_BYTE_ORDER … … 169 157 #endif 170 158 171 /* è¦è«ãã«ããã£ã¹ã*/159 /* 要請マルチキャスト */ 172 160 173 161 #ifdef _NET_CFG_BYTE_ORDER … … 182 170 183 171 /* 184 * ã¢ãã¬ã¹æå¹æéæ§é ä½172 * アドレス有効時間構造体 185 173 */ 186 174 … … 188 176 189 177 /* 190 * expire 㨠perferred ã¯ãã·ã¹ãã ãèµ·åãã¦ããã®çµéæé178 * expire と perferred は、システムが起動してからの経過時間 191 179 */ 192 uint32_t expire; /* æå¹æéãåããæå»[s] */193 uint32_t preferred; /* æ¨å¥¨æå¹æéãåããæå»[s] */180 uint32_t expire; /* 有効時間が切れる時刻 [s] */ 181 uint32_t preferred; /* 推奨有効時間が切れる時刻 [s] */ 194 182 195 183 /* 196 * vltime 㨠pltime ã¯ã追å /å¤æ´ãã¦ããã®ç¸å¯¾æé184 * vltime と pltime は、追加/変更してからの相対時間 197 185 */ 198 uint32_t vltime; /* æå¹æé[us] */199 uint32_t pltime; /* æ¨å¥¨æå¹æé[us] */186 uint32_t vltime; /* 有効時間 [us] */ 187 uint32_t pltime; /* 推奨有効時間 [us] */ 200 188 } __attribute__((packed, aligned(2)))T_IN6_ADDR_LIFETIME; 201 189 202 190 /* 203 * ã¤ã³ã¿ãã§ã¼ã¹ã¢ãã¬ã¹æ§é ä½191 * インタフェースアドレス構造体 204 192 */ 205 193 206 194 typedef 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) 要請の出力回数 */ 218 204 } __attribute__((packed, aligned(2)))T_IN6_IFADDR; 219 205 220 206 /* 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 * アドレスの有効性チェック 236 221 */ 237 222 … … 248 233 249 234 /* 250 * ã«ã¼ã¿ã®ã¤ã³ããã¯ã¹235 * ルータのインデックス 251 236 */ 252 237 … … 254 239 255 240 /* 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 * アドレス情報配列のインデックス 265 248 */ 266 249 … … 269 252 270 253 /* 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 /* 全ノード・リンクローカル・マルチキャストアドレス */ 278 259 #define IPV6_MADDR_IX_EXTRA 2 279 260 280 261 #define MAX_IN6_MADDR_CNT MAX_IF_MADDR_CNT 281 /* IPv6 ãã«ããã£ã¹ãã¢ãã¬ã¹é 282 åã®æ大ãµã¤ãº */ 283 284 /* ã«ã¼ãã£ã³ã°è¡¨ã¨ã³ããªæ§é ä½ */ 262 /* IPv6 マルチキャストアドレス配列の最大サイズ */ 263 264 /* ルーティング表エントリ構造体 */ 285 265 286 266 typedef 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; /* プレフィックス長 */ 292 272 } __attribute__((packed, aligned(2)))T_IN6_RTENTRY; 293 273 294 274 /* 295 * ãã¹ããã£ãã·ã¥296 */ 297 298 /* ãã¹ããã£ãã·ã¥æ§é ä½*/275 * ホストキャッシュ 276 */ 277 278 /* ホストキャッシュ構造体 */ 299 279 300 280 typedef 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] */ 303 283 uint32_t mtu; /* Path MTU */ 304 284 } __attribute__((packed, aligned(2)))T_IN6_HOSTCACHE_ENTRY; 305 285 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) /* 増加する場合の保護時間 */ 309 289 310 290 #define IN6_IS_HOSTCACHE_FREE(e) IN6_IS_ADDR_UNSPECIFIED(&((e)->dst)) … … 312 292 313 293 /* 314 * ã«ã¼ãã£ã³ã°è¡¨294 * ルーティング表 315 295 */ 316 296 … … 318 298 319 299 /* 320 * åæ¹åç 321 § 300 * 前方参照 322 301 */ 323 302 … … 331 310 332 311 /* 333 * å¤æ°312 * 変数 334 313 */ 335 314 … … 337 316 338 317 /* 339 * é¢æ°ã·ãã¥ã¬ã¼ã·ã§ã³ãã¯ã318 * 関数シミュレーションマクロ 340 319 */ 341 320 … … 345 324 346 325 /* 347 * é¢æ°326 * 関数 348 327 */ 349 328 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/ip6.cfg
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/plain
totext/plain;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 45 33 46 34 /* 47 * IPv6 ã§ä½¿ç¨ããã«ã¼ãã«ãªãã¸ã§ã¯ã35 * IPv6 で使用するカーネルオブジェクト 48 36 */ 49 37 50 38 #ifdef _IP6_CFG 51 39 52 /* è¿é£ãã£ãã·ã¥*/40 /* 近隣キャッシュ */ 53 41 54 42 CRE_SEM(SEM_ND6_CACHE, { TA_TPRI, 1, 1 }); … … 56 44 #if NUM_ND6_DEF_RTR_ENTRY > 0 57 45 58 /* ãã£ãã©ã«ãã«ã¼ã¿ã»ãªã¹ã*/46 /* ディフォルトルータ・リスト */ 59 47 60 48 CRE_SEM(SEM_ND6_DEFRTRLIST, { TA_TPRI, 1, 1 }); … … 64 52 #ifdef IP6_CFG_FRAGMENT 65 53 66 /* åå²ããã*/54 /* 分割ヘッダ */ 67 55 68 56 CRE_SEM(SEM_IP6_FRAG_QUEUE, { TA_TPRI, 1, 1 }); … … 72 60 #if NUM_IN6_ROUTE_ENTRY > 0 73 61 74 /* ã«ã¼ãã£ã³ã°è¡¨*/62 /* ルーティング表 */ 75 63 76 64 CRE_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
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 161 149 162 150 /* 163 * é¢æ°151 * 関数 164 152 */ 165 153 … … 167 155 168 156 /* 169 * ä¸ä½ãããã³ã«é¸ææ§é ä½157 * 上位プロトコル選択構造体 170 158 */ 171 159 172 160 typedef 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; /* プロトコル番号 */ 176 163 } T_PROTO_SWITCH; 177 164 178 165 static 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 終点オプション */ 184 171 { ip6_no_header_input, 185 IPPROTO_NONE }, /* 次ãããç¡ã*/172 IPPROTO_NONE }, /* 次ヘッダ無し */ 186 173 { icmp6_input, IPPROTO_ICMPV6 }, 187 174 … … 207 194 208 195 /* 209 * get_upper_proto -- ä¸ä½ãããã³ã«å¦çé¢æ°ãè¿ãã196 * get_upper_proto -- 上位プロトコル処理関数を返す。 210 197 */ 211 198 … … 222 209 223 210 /* 224 * ip6_no_header_input -- 次ããããç¡ãã®å ´åã®å 225 ¥åå¦ç 211 * ip6_no_header_input -- 次ヘッダが無しの場合の入力処理 226 212 */ 227 213 … … 234 220 235 221 /* 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) エラー、ネットワークバッファは開放されている。 248 231 */ 249 232 … … 293 276 294 277 /* 295 * ip6_get_prev_hdr -- ç´åã®æ¡å¼µãããã® next ãã£ã¼ã«ãã®ã¢ãã¬ã¹ãè¿ãã296 * 297 * 注æ: off ã«ã¯ IF_HDR_SIZE ãå«ã¾ãã¦ããã278 * ip6_get_prev_hdr -- 直前の拡張ヘッダの next フィールドのアドレスを返す。 279 * 280 * 注意: off には IF_HDR_SIZE も含まれている。 298 281 */ 299 282 … … 339 322 340 323 /* 341 * ip6_init -- IPv6 ã®åæåé¢æ°324 * ip6_init -- IPv6 の初期化関数 342 325 */ 343 326 … … 350 333 351 334 /* 352 * ip6_input -- IPv6 ã®å 353 ¥åé¢æ° 335 * ip6_input -- IPv6 の入力関数 354 336 */ 355 337 … … 368 350 NET_COUNT_MIB(in6_ifstat.ipv6IfStatsInReceives, 1); 369 351 370 /* IP ãããã®é·ãããã§ãã¯ããã*/352 /* IP ヘッダの長さをチェックする。*/ 371 353 if (input->len < IF_IP6_HDR_SIZE) { 372 354 NET_COUNT_IP6(net_count_ip6[NC_IP6_IN_ERR_SHORT], 1); … … 377 359 ip6h = GET_IP6_HDR(input); 378 360 379 /* ãã¼ã¸ã§ã³ããã§ãã¯ããã*/361 /* バージョンをチェックする。*/ 380 362 if (IP6_VCF_V(ntohl(ip6h->vcf)) != IPV6_VERSION) { 381 363 NET_COUNT_IP6(net_count_ip6[NC_IP6_IN_ERR_VER], 1); … … 385 367 386 368 /* 387 * 次ã®ãã¼ã¿ã°ã©ã ã¯ç ´æ£ããã369 * 次のデータグラムは破棄する。 388 370 * 389 * ã»å§ç¹ã¢ãã¬ã¹ããã«ããã£ã¹ã390 * ã»çµç¹ã¢ãã¬ã¹ãæªå®ç¾©371 * ・始点アドレスがマルチキャスト 372 * ・終点アドレスが未定義 391 373 * 392 * ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ãã«ã¼ãããã¯ã§ãªãã¨ãã393 * 次ã®ãã¼ã¿ã°ã©ã ãç ´æ£ããã374 * ネットワークインタフェースがループバックでないとき、 375 * 次のデータグラムも破棄する。 394 376 * 395 * ã»å§ç¹ã¢ãã¬ã¹ãã«ã¼ãããã¯396 * ã»çµç¹ã¢ãã¬ã¹ãã«ã¼ãããã¯377 * ・始点アドレスがループバック 378 * ・終点アドレスがループバック 397 379 * 398 * æªæã®ããã¦ã¼ã¶ã TCP/UDP ã¹ã¿ãã¯ã®æ··ä¹±ã399 * ã»ãã¥ãªãã£ãã§ãã¯ããã¤ãã¹ãããããIPv4400 * ãããã¢ãã¬ã¹ãæªç¨ãããã¨ãé²ããã401 * 以ä¸ã®ãã¼ã¿ã°ã©ã ã¯ç ´æ£ããã380 * 悪意のあるユーザが TCP/UDP スタックの混乱や 381 * セキュリティチェックをバイパスするため、IPv4 382 * マップアドレスを悪用することを防ぐため 383 * 以下のデータグラムは破棄する。 402 384 * 403 * ã»å§ç¹ã¢ãã¬ã¹ã::ffff:127.0.0.1404 * ã»çµç¹ã¢ãã¬ã¹ã::ffff:127.0.0.1385 * ・始点アドレスが ::ffff:127.0.0.1 386 * ・終点アドレスが ::ffff:127.0.0.1 405 387 */ 406 388 … … 435 417 436 418 if (IN6_IS_ADDR_MULTICAST(&ip6h->dst)) { 437 /* å®å 438 ããã«ããã£ã¹ãã®å ´åã®å¦ç */ 419 /* 宛先がマルチキャストの場合の処理 */ 439 420 NET_COUNT_MIB(in6_ifstat.ipv6IfStatsInMcastPkts, 1); 440 421 if (!in6_lookup_multi(ifp, &ip6h->dst)) { … … 451 432 } 452 433 453 /* ã¢ãã¬ã¹ãæªè§£æ±ºã®å ´åã¯ãã¼ã¿ã°ã©ã ãç ´æ£ããã*/434 /* アドレスが未解決の場合はデータグラムを破棄する。*/ 454 435 if (IFA6_IS_NOTREADY(ia6)) { 455 436 NET_COUNT_IP6(net_count_ip6[NC_IP6_IN_ERR_ADDR], 1); … … 459 440 } 460 441 461 /* ãªãã»ãããè¨å®ããã*/442 /* オフセットを設定する。*/ 462 443 offp = GET_IP6_NEXT_HDR(input) - input->buf; 463 444 464 /* ãã¤ãã¼ãé·ãåãåºãã*/445 /* ペイロード長を取り出す。*/ 465 446 plen = ntohs(ip6h->plen); 466 447 467 448 468 /* 次ãããã®ä½ç½®ãåæåããã*/449 /* 次ヘッダの位置を初期化する。*/ 469 450 nextp = offsetof(T_IP6_HDR, next); 470 451 471 452 /* 472 * ä¸ç¶ç¹ (Hop-by-Hop) ãªãã·ã§ã³ãããã®ãã§ãã¯453 * 中継点 (Hop-by-Hop) オプションヘッダのチェック 473 454 */ 474 455 if (ip6h->next == IPPROTO_HOPOPTS) { 475 456 476 /* ä¸ç¶ç¹ãããã®é·ãããã§ãã¯ããã*/457 /* 中継点ヘッダの長さをチェックする。*/ 477 458 if (plen < sizeof(T_IP6_HBH_HDR)) { 478 459 NET_COUNT_IP6(net_count_ip6[NC_IP6_IN_ERR_SHORT], 1); … … 495 476 496 477 /* 497 * ãã¤ãã¼ãé·ã 0 ã§ãä¸ç¶ç¹ãªãã·ã§ã³ãããã¨ãã¯ã 498 * 巨大ãã¤ãã¼ãã»ãªãã·ã§ã³ãå«ã¾ããªããã°ãªããªãã 499 * ãã®ã¨ãã巨大ãã¤ãã¼ãã»ãªãã·ã§ã³ã«ãã 500 * ãã¤ãã¼ãé·ããã§ãã¯ããå¿ 501 è¦ãããããæ¬å®è£ 502 ã§ã¯ã 503 * 巨大ãã¤ãã¼ãã»ãªãã·ã§ã³ãæªç¥ã®ãªãã·ã§ã³ã¨ã㦠504 * æ±ãã®ã§ãä½ãããªãã 478 * ペイロード長が 0 で、中継点オプションがあるときは、 479 * 巨大ペイロード・オプションが含まれなければならない。 480 * このとき、巨大ペイロード・オプションにある 481 * ペイロード長をチェックする必要があるが、本実装では、 482 * 巨大ペイロード・オプションを未知のオプションとして 483 * 扱うので、何もしない。 505 484 */ 506 485 next = ((T_IP6_HBH_HDR *)(ip6h + 1))->next; … … 509 488 next = ip6h->next; 510 489 511 /* IPv6 ãã¼ã¿ã°ã©ã é·ããã§ãã¯ããã*/490 /* IPv6 データグラム長をチェックする。*/ 512 491 if (input->len - IF_IP6_HDR_SIZE < plen) { 513 492 NET_COUNT_IP6(net_count_ip6[NC_IP6_IN_ERR_SHORT], 1); … … 518 497 input->len = IF_IP6_HDR_SIZE + plen; 519 498 520 /* ä¸ä½ãããã³ã«å¦çé¢æ°ãå¼ã³åºãã*/499 /* 上位プロトコル処理関数を呼び出す。*/ 521 500 nest = 0; 522 501 while (next != IPPROTO_DONE) { … … 531 510 NET_COUNT_MIB(in6_ifstat.ipv6IfStatsInUnknownProtos, 1); 532 511 533 /* icmp6_error ã§ãããã¯ã¼ã¯ãããã¡ãéæ¾ããã*/512 /* icmp6_error でネットワークバッファを開放する。*/ 534 513 icmp6_error(input, ICMP6_PARAM_PROB, 535 514 ICMP6_PARAMPROB_NEXT_HEADER, nextp); … … 548 527 549 528 /* 550 * ip6_nexthdr -- 次ã®ãããã®ãªãã»ãããè¿ãã551 * 552 * æ»ãå¤ == -1 : æå¾ã®ããããã¾ãã¯ã¨ã©ã¼ã553 * æ»ãå¤ > 0 : ããã«ããããç¶ãã529 * ip6_nexthdr -- 次のヘッダのオフセットを返す。 530 * 531 * 戻り値 == -1 : 最後のヘッダ、またはエラー。 532 * 戻り値 > 0 : さらにヘッダが続く。 554 533 */ 555 534 … … 569 548 break; 570 549 571 case IPPROTO_FRAGMENT: /* æçããã*/550 case IPPROTO_FRAGMENT: /* 断片ヘッダ */ 572 551 if (nbuf->len < off + sizeof(T_IP6_FRAG_HDR)) 573 552 return (ER_UINT)-1; 574 553 575 /* ä¸éã®ãã©ã°ã¡ã³ãã®å ´åã¯å¦çããããã*/554 /* 中間のフラグメントの場合は処理をやめる。*/ 576 555 ip6fh = (T_IP6_FRAG_HDR *)(nbuf->buf + off); 577 556 if (ntohs(ip6fh->off_flag) & IP6F_MORE_FRAG) … … 582 561 break; 583 562 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 終点オプション */ 588 567 if (nbuf->len < off + sizeof(T_IP6_EXT_HDR)) 589 568 return (ER_UINT)-1; … … 602 581 603 582 /* 604 * ip6_lasthdr -- æå¾ã®ãããã®ãªãã»ãããè¿ãã583 * ip6_lasthdr -- 最後のヘッダのオフセットを返す。 605 584 */ 606 585 … … 621 600 622 601 /* 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) エラー、ネットワークバッファは開放されている。 630 609 */ 631 610 … … 634 613 { 635 614 switch (IP6OPT_TYPE(*opt)) { 636 case IP6OPT_TYPE_SKIP: /* ç¡è¦ããã*/615 case IP6OPT_TYPE_SKIP: /* 無視する。 */ 637 616 return *(opt + 1); 638 617 break; 639 case IP6OPT_TYPE_ICMP: /* ç ´æ£ãã¦ããã«ããã£ã¹ãã§ãªããã° ICMP ãè¿éããã*/618 case IP6OPT_TYPE_ICMP: /* 破棄して、マルチキャストでなければ ICMP を返送する。 */ 640 619 if (IN6_IS_ADDR_MULTICAST(&GET_IP6_HDR(input)->dst)) 641 620 return IP6_OPT_RET_ERR; 642 621 /* no break; */ 643 case IP6OPT_TYPE_FORCEICMP: /* ç ´æ£ãã¦ãICMP ãè¿éããã*/622 case IP6OPT_TYPE_FORCEICMP: /* 破棄して、ICMP を返送する。 */ 644 623 icmp6_error(input, ICMP6_PARAM_PROB, 645 624 ICMP6_PARAMPROB_OPTION, … … 647 626 return IP6_OPT_RET_REL; 648 627 break; 649 /*case IP6OPT_TYPE_DISCARD: ãã¼ã¿ã°ã©ã ãç ´æ£ããã*/628 /*case IP6OPT_TYPE_DISCARD: データグラムを破棄する。 */ 650 629 } 651 630 … … 654 633 655 634 /* 656 * ip6_remove_exthdrs -- IPv6 æ¡å¼µããããåé¤ãã以éãåã«è©°ããã635 * ip6_remove_exthdrs -- IPv6 拡張ヘッダを削除し、以降を前に詰める。 657 636 */ 658 637 … … 663 642 uint_t next; 664 643 665 /* éå§ãªãã»ããã IP ãããã«è¨å®ããã*/644 /* 開始オフセットを IP ヘッダに設定する。*/ 666 645 off = ((uint8_t *)GET_IP6_HDR(nbuf)) - nbuf->buf; 667 646 668 /* æçµããããæ¢ç´¢ããã*/647 /* 最終ヘッダを探索する。*/ 669 648 off = ip6_lasthdr(nbuf, off, IPPROTO_IPV6, &next); 670 649 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/ip6_output.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 154 142 155 143 /* 156 * å 157 ¨åå¤æ° 158 */ 159 160 /* ãªã³ã¯ MTU */ 144 * 全域変数 145 */ 146 147 /* リンク MTU */ 161 148 162 149 uint32_t linkmtu = IF_MTU; 163 150 164 151 /* 165 * å±æå¤æ°152 * 局所変数 166 153 */ 167 154 … … 173 160 174 161 /* 175 * ip6_output -- IPv6 ã®åºåé¢æ°162 * ip6_output -- IPv6 の出力関数 176 163 */ 177 164 … … 204 191 205 192 /* 206 * éè¤ã¢ãã¬ã¹æ¤åºè¦è«ä»¥å¤ã«ã¯ãéä¿¡å 207 ã¢ãã¬ã¹ã« 208 * ç¡æå®ãæå®ã§ããªãã 193 * 重複アドレス検出要請以外には、送信元アドレスに 194 * 無指定を指定できない。 209 195 */ 210 196 if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src) && (flags & IPV6_OUT_FLG_DAD) == 0) { … … 213 199 } 214 200 215 /* éä¿¡å 216 ã¢ãã¬ã¹ã«ã¯ãã«ããã£ã¹ãã¢ãã¬ã¹ãæå®ã§ããªãã*/ 201 /* 送信元アドレスにはマルチキャストアドレスを指定できない。*/ 217 202 if (IN6_IS_ADDR_MULTICAST(&ip6h->src)) { 218 203 error = E_PAR; … … 221 206 222 207 /* 223 * çµè·¯é¸æãè¡ãã208 * 経路選択を行う。 224 209 */ 225 210 if ((gw = in6_rtalloc(ifp, &ip6h->dst)) == NULL) { … … 229 214 230 215 if (!IN6_IS_ADDR_MULTICAST(&ip6h->dst)) { 231 /* ã¦ããã£ã¹ãã¢ãã¬ã¹ã®å¦ç*/216 /* ユニキャストアドレスの処理 */ 232 217 } 233 218 else { 234 /* ãã«ããã£ã¹ãã¢ãã¬ã¹ã®å¦ç*/219 /* マルチキャストアドレスの処理 */ 235 220 NET_COUNT_MIB(in6_ifstat.ipv6IfStatsOutMcastPkts, 1); 236 221 if (flags & IPV6_OUT_FLG_HOP_LIMIT) … … 240 225 } 241 226 242 /* Traffic Class 㨠Flow Label ããµãã¼ãããªãã®ã§ 0 ã«è¨å®ããã*/227 /* Traffic Class と Flow Label をサポートしないので 0 に設定する。*/ 243 228 ip6h->vcf = htonl(IP6_MAKE_VCF(IPV6_VERSION, 0)); 244 229 … … 253 238 254 239 /* 255 * Path MTU ãç»é²ããã¦ããå ´åã256 * MTU ã IPv6 MMTUï¼1280 ãªã¯ãããï¼ä»¥ä¸ã®å ´åã¯ã257 * MTU ã IPv6 MMTU ã«è¨å®ãåå²ãã¦éä¿¡ããã240 * Path MTU が登録されている場合、 241 * MTU が IPv6 MMTU(1280 オクテット)以下の場合は、 242 * MTU を IPv6 MMTU に設定し分割して送信する。 258 243 */ 259 244 mtu = IPV6_MMTU; … … 272 257 if (plen + IP6_HDR_SIZE <= mtu && !alwaysfrag) { 273 258 274 /* åå²ããå¿ 275 è¦ããªãã¨ãã®å¦ç */ 259 /* 分割する必要がないときの処理 */ 276 260 if ((error = nd6_output(ifp, output, gw, NULL, tmout)) != E_OK) { 277 261 NET_COUNT_IP6(net_count_ip6[NC_IP6_OUT_ERR_PACKETS], 1); … … 281 265 else { 282 266 283 /* æç ID ãè¨å®ããã*/267 /* 断片 ID を設定する。*/ 284 268 id = ip6_id ++; 285 269 286 /* MTU ã IPv6 ã®æ大ãã±ãããµã¤ãºãè¶ 287 ããªãããã«ããã*/ 270 /* MTU が IPv6 の最大パケットサイズを超えないようにする。*/ 288 271 if (mtu > IPV6_MAXPACKET) 289 272 mtu = IPV6_MAXPACKET; 290 273 291 274 /* 292 * MTU ãããåå²ä¸è½é¨åï¼TINET-1.4 ã§ã¯ãåå²ããã以å¤ã® 293 * æ¡å¼µãããã®åºåã¯æªå®è£ 294 ã®ãã 0 ãªã¯ãããï¼ 295 * ã¨æçãããã®ãµã¤ãºãå¼ããã¨ãã8 ãªã¯ããã以ä¸ãªããã° 296 * åå²ãã¦éä¿¡ã§ããªãããã¨ã©ã¼ã«ããã 275 * MTU から、分割不能部分(TINET-1.4 では、分割ヘッダ以外の 276 * 拡張ヘッダの出力は未実装のため 0 オクテット) 277 * と断片ヘッダのサイズを引いたとき、8 オクテット以上なければ 278 * 分割して送信できないためエラーにする。 297 279 */ 298 280 if (((mtu - sizeof(T_IP6_FRAG_HDR)) & ~7) < 8) { … … 302 284 303 285 /* 304 * IPv6 ãããã® next ãã£ã¼ã«ãã«è¨å®ããå¤ã¯ãæçãããã 305 * æçãããã® next ãã£ã¼ã«ãã«è¨å®ããå¤ã¯ã 306 * å 307 ã®ãã¼ã¿ã°ã©ã ã® next ãã£ã¼ã«ãã®å¤ã 286 * IPv6 ヘッダの next フィールドに設定する値は、断片ヘッダ。 287 * 断片ヘッダの next フィールドに設定する値は、 288 * 元のデータグラムの next フィールドの値。 308 289 */ 309 290 nextproto = ip6h->next; 310 291 ip6h->next = IPPROTO_FRAGMENT; 311 292 312 /* åå²ãã¦éä¿¡ããã*/293 /* 分割して送信する。*/ 313 294 NET_COUNT_IP6(net_count_ip6[NC_IP6_FRAG_OUT], 1); 314 295 for (foff = 0; foff < plen; foff += flen) { 315 296 316 /* æçã®é·ããè¨ç®ãã8 ãªã¯ãããå¢çã«èª¿æ´ããã*/297 /* 断片の長さを計算し、8 オクテット境界に調整する。*/ 317 298 if (foff + (mtu - (IP6_HDR_SIZE + sizeof(T_IP6_FRAG_HDR))) < plen) 318 299 flen = (mtu - (IP6_HDR_SIZE + sizeof(T_IP6_FRAG_HDR))) >> 3 << 3; … … 320 301 flen = plen - foff; 321 302 322 /* ãããã¯ã¼ã¯ãããã¡ãç²å¾ããã*/303 /* ネットワークバッファを獲得する。*/ 323 304 if (tget_net_buf(&frag, flen + IF_IP6_HDR_SIZE + sizeof(T_IP6_FRAG_HDR), TMO_IP6_FRAG_GET_NET_BUF) == E_OK) { 324 305 325 /* IPv6 ããããã³ãã¼ããã*/306 /* IPv6 ヘッダをコピーする。*/ 326 307 fip6h = GET_IP6_HDR(frag); 327 308 *fip6h = *ip6h; 328 309 329 /* IPv6 ããããåããã*/310 /* IPv6 ヘッダを埋める。*/ 330 311 fip6h->plen = htons(flen + sizeof(T_IP6_FRAG_HDR)); 331 312 332 /* æçããããåããã*/313 /* 断片ヘッダを埋める。*/ 333 314 fip6f = (T_IP6_FRAG_HDR *)GET_IP6_NEXT_HDR(frag); 334 315 fip6f->off_flag = htons((uint16_t)(foff & ~7)); … … 339 320 fip6f->next = nextproto; 340 321 341 /* SDU ãã³ãã¼ããã*/322 /* SDU をコピーする。*/ 342 323 memcpy((uint8_t*)(fip6f + 1), GET_IP6_NEXT_HDR(output) + foff, flen); 343 324 NET_COUNT_IP6(net_count_ip6[NC_IP6_FRAG_OUT_FRAGS], 1); 344 325 NET_COUNT_MIB(in6_ifstat.ipv6IfStatsOutFragCreates, 1); 345 326 346 /* éä¿¡ããã*/327 /* 送信する。*/ 347 328 if ((error = nd6_output(ifp, frag, gw, NULL, tmout)) != E_OK) { 348 329 NET_COUNT_MIB(in6_ifstat.ipv6IfStatsOutFragFails, 1); … … 351 332 } 352 333 else { 353 /* ãããã¯ã¼ã¯ãããã¡ãç²å¾ã§ããªããã°ãéä¿¡ããããããã*/334 /* ネットワークバッファが獲得できなければ、送信をあきらめる。*/ 354 335 error = E_NOMEM; 355 336 goto drop; … … 357 338 } 358 339 359 /* IF ã§ãããã¯ã¼ã¯ãããã¡ãéæ¾ããªããã©ã°ããã§ãã¯ããã*/340 /* IF でネットワークバッファを開放しないフラグをチェックする。*/ 360 341 if ((output->flags & NB_FLG_NOREL_IFOUT) == 0) { 361 342 syscall(rel_net_buf(output)); … … 379 360 380 361 drop: 381 /* IF ã§ãããã¯ã¼ã¯ãããã¡ãéæ¾ããªããã©ã°ããã§ãã¯ããã*/362 /* IF でネットワークバッファを開放しないフラグをチェックする。*/ 382 363 if ((output->flags & NB_FLG_NOREL_IFOUT) == 0) { 383 364 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
totext/x-chdr;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 115 103 116 104 /* 117 * IPv6 ãããã»ãã¤ãã¼ãã¢ã¯ã»ã¹ãã¯ã105 * IPv6 ヘッダ・ペイロードアクセスマクロ 118 106 */ 119 107 … … 131 119 #define SET_IP6_SDU_SIZE(nbuf,slen) (GET_IP6_HDR(nbuf)->plen=htons(slen)) 132 120 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 /* ホップリミットフラグが付く時、ホップリミット値を操作するマクロ */ 139 127 140 128 #define IPV6_OUT_GET_HOP_LIMIT(f) ((f)&0x00ff) … … 142 130 143 131 /* 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) エラー、ネットワークバッファは開放されている。 151 139 */ 152 140 … … 155 143 156 144 /* 157 * IPv6 ã® MMTU ãµã¤ãºã®ãããã¯ã¼ã¯ãããã¡145 * IPv6 の MMTU サイズのネットワークバッファ 158 146 */ 159 147 … … 161 149 162 150 typedef 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; /* インタフェース番号 */ 166 154 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 167 155 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; … … 171 159 #endif 172 160 uint8_t buf[IF_HDR_SIZE + IPV6_MMTU]; 173 /* ãããã¡æ¬ä½*/161 /* バッファ本体 */ 174 162 } T_NET_BUF_IPV6_MMTU; 175 163 … … 177 165 178 166 /* 179 * 65536 ãªã¯ããããµã¤ãºã®ãããã¯ã¼ã¯ãããã¡167 * 65536 オクテットサイズのネットワークバッファ 180 168 */ 181 169 182 170 typedef 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; /* フラグ */ 186 174 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 187 175 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; … … 191 179 #endif 192 180 uint8_t buf[IF_IP6_HDR_SIZE + 65536]; 193 /* ãããã¡æ¬ä½*/181 /* バッファ本体 */ 194 182 #if defined(IF_PDU_HDR_PADDING) 195 183 uint8_t padding[IF_PDU_HDR_PADDING]; 196 #endif /* ãããã®ä½å*/184 #endif /* ヘッダの余分 */ 197 185 } T_NET_BUF6_65536; 198 186 … … 200 188 201 189 /* 202 * åæ§æãã¥ã¼ç¨ IPv6 ãããã®å®ç¾©190 * 再構成キュー用 IPv6 ヘッダの定義 203 191 */ 204 192 … … 211 199 uint8_t hlim; /* Hop Limit */ 212 200 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; /* 再構成タイムアウト */ 217 205 uint16_t dummy1; 218 206 uint8_t dummy2[sizeof(T_IN6_ADDR) - (sizeof(T_NET_BUF*) + sizeof(uint16_t) * 4)]; … … 229 217 230 218 /* 231 * ãã¼ã¿ã°ã©ã åæ§æç¨ãããã¯ã¼ã¯ãããã¡219 * データグラム再構成用ネットワークバッファ 232 220 */ 233 221 234 222 typedef 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; /* フラグ */ 238 226 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 239 227 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; … … 243 231 #endif 244 232 uint8_t buf[IP6_CFG_FRAG_REASSM_SIZE]; 245 /* ãããã¡æ¬ä½*/233 /* バッファ本体 */ 246 234 } T_NET_BUF6_REASSM; 247 235 … … 249 237 250 238 /* 251 * TCP ã®åæ§æãã¥ã¼ã«ããã IPv6 ãããã®å®ç¾©239 * TCP の再構成キューにおける IPv6 ヘッダの定義 252 240 */ 253 241 … … 256 244 uint8_t cf; /* Traffic Class: 8 bit */ 257 245 /* Flow Label: 4 bit (20 bit) */ 258 uint16_t thoff; /* TCP ãããã®ãªãã»ãã*/246 uint16_t thoff; /* TCP ヘッダのオフセット */ 259 247 uint16_t plen; /* Payload Length */ 260 248 uint8_t next; /* Next Header */ … … 267 255 268 256 /* 269 * SNMP 㮠管çæ 270 å ±ãã¼ã¹ (MIB) 257 * SNMP の 管理情報ベース (MIB) 271 258 */ 272 259 … … 299 286 300 287 /* 301 * å¤æ°288 * 変数 302 289 */ 303 290 … … 305 292 306 293 /* 307 * é¢æ°294 * 関数 308 295 */ 309 296 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/ipsec.cfg
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/plain
totext/plain;charset=UTF-8
r388 r389 7 7 * Copyright (C) 2008-2009 by Hokkaido Industrial Research Institute, JAPAN 8 8 * 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プロジェクトを免責すること. 38 27 * 39 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 40 ã 41 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 42 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 43 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 28 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 29 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 30 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 31 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 44 32 * 45 33 * @(#) $Id$ … … 47 35 48 36 /* 49 * IPsec ã§ä½¿ç¨ããã«ã¼ãã«ãªãã¸ã§ã¯ã37 * IPsec で使用するカーネルオブジェクト 50 38 */ 51 39 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/nd6.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 132 120 133 121 /* 134 * è¿é£ãã£ãã·ã¥122 * 近隣キャッシュ 135 123 */ 136 124 … … 138 126 139 127 /* 140 * nd6_free -- ã«ã¼ã¿ãåé¤ããã128 * nd6_free -- ルータを削除する。 141 129 */ 142 130 … … 150 138 ln->state = ND6_LLINFO_INCOMPLETE; 151 139 152 /* ãã¬ãã£ãã¯ã¹ã»ãªã¹ãããã«ã¼ã¿ãåé¤ããã*/140 /* プレフィックス・リストからルータを削除する。*/ 153 141 nd6_defrtrlist_del(dr); 154 142 } … … 156 144 157 145 /* 158 * nd6_timer -- è¿é£æ¢ç´¢ç®¡çã¿ã¤ãã¼146 * nd6_timer -- 近隣探索管理タイマー 159 147 */ 160 148 … … 167 155 int_t ix; 168 156 169 /* è¿é£ãã£ãã·ã¥ã®å¦ç*/157 /* 近隣キャッシュの処理 */ 170 158 syscall(wai_sem(SEM_ND6_CACHE)); 171 159 syscall(get_tim(&now)); … … 177 165 switch (ln->state) { 178 166 179 case ND6_LLINFO_INCOMPLETE: /* æªè§£æ±º*/167 case ND6_LLINFO_INCOMPLETE: /* 未解決 */ 180 168 if (ln->asked < ND6_MAX_MCAST_QUERY) { 181 169 /* 182 * ãã«ããã£ã¹ãã¢ãã¬ã¹è¦è«ã®åéåæ°ä»¥ä¸ã®å ´åã®å¦ç170 * マルチキャストアドレス要請の再送回数以下の場合の処理 183 171 */ 184 172 ln->asked ++; 185 ln->expire = now + ND6_RETRANS_TIME; /* è¿é£æ¢ç´¢éä¿¡éé*/173 ln->expire = now + ND6_RETRANS_TIME; /* 近隣探索送信間隔 */ 186 174 nd6_ns_output(ifp, &in6_addr_unspecified, &ln->addr, ln, false); 187 175 } … … 189 177 if (ln->hold != NULL) { 190 178 /* 191 * æçµçã«ã¯ãä¿çããã¦ãããããã¯ã¼ã¯ãããã¡ã 192 * ããã°ãICMP6 ERROR ãèªåèªèº«ã«è¿ãããã¨ã 193 * ãããã¯ã¼ã¯ãããã¡ãéæ¾ããã 194 * ããããç¾å¨ãicmp6_error ã®å®è£ 195 ãä¸å®å 196 ¨ã®ããã 197 * ãããã¯ã¼ã¯ãããã¡ã®éæ¾ã®ã¿è¡ãã 179 * 最終的には、保留されているネットワークバッファが 180 * あれば、ICMP6 ERROR を自分自身に返したあと、 181 * ネットワークバッファを開放する。 182 * しかし、現在、icmp6_error の実装が不完全のため、 183 * ネットワークバッファの開放のみ行う。 198 184 */ 199 #if 0 /* ä¿ç*/185 #if 0 /* 保留 */ 200 186 icmp6_error(ln->hold, ICMP6_DST_UNREACH, 201 187 ICMP6_DST_UNREACH_ADDR, 0); … … 209 195 break; 210 196 211 case ND6_LLINFO_REACHABLE: /* å°éå¯è½*/197 case ND6_LLINFO_REACHABLE: /* 到達可能 */ 212 198 if (ln->expire) { 213 199 ln->expire = now + ND6_GCOLLECTION_TIME; … … 216 202 break; 217 203 218 case ND6_LLINFO_STALE: /* å°éå¯è½æ§ã¯æªç¢ºèª*/204 case ND6_LLINFO_STALE: /* 到達可能性は未確認 */ 219 205 if (ln->expire) { 220 206 if (ln->hold != NULL) { … … 227 213 break; 228 214 229 case ND6_LLINFO_DELAY: /* å°éå¯è½æ§ã®ç¢ºèªå¾ 230 æ© */ 215 case ND6_LLINFO_DELAY: /* 到達可能性の確認待機 */ 231 216 ln->asked = 1; 232 ln->expire = now + ND6_RETRANS_TIME; /* è¿é£æ¢ç´¢éä¿¡éé*/217 ln->expire = now + ND6_RETRANS_TIME; /* 近隣探索送信間隔 */ 233 218 ln->state = ND6_LLINFO_PROBE; 234 219 nd6_ns_output(ifp, &ln->addr, &ln->addr, ln, false); 235 220 break; 236 221 237 case ND6_LLINFO_PROBE: /* å°éå¯è½æ§ã確èªä¸*/222 case ND6_LLINFO_PROBE: /* 到達可能性を確認中 */ 238 223 if (ln->asked < ND6_MAX_UCAST_QUERY) { 239 224 /* 240 * ã¦ããã£ã¹ãã¢ãã¬ã¹è¦è«ã®åéåæ°ä»¥ä¸ã®å ´åã®å¦ç225 * ユニキャストアドレス要請の再送回数以下の場合の処理 241 226 */ 242 227 ln->asked ++; 243 ln->expire += ND6_RETRANS_TIME; /* è¿é£æ¢ç´¢éä¿¡éé*/228 ln->expire += ND6_RETRANS_TIME; /* 近隣探索送信間隔 */ 244 229 nd6_ns_output(ifp, &ln->addr, &ln->addr, ln, false); 245 230 } … … 259 244 syscall(sig_sem(SEM_ND6_CACHE)); 260 245 261 /* ãã£ãã©ã«ãã«ã¼ã¿ã»ãªã¹ãã®å¦ç*/246 /* ディフォルトルータ・リストの処理 */ 262 247 nd6_defrtrlist_timer(); 263 248 264 /* ãã¬ãã£ãã¯ã¹ã»ãªã¹ãã®å¦ç*/249 /* プレフィックス・リストの処理 */ 265 250 nd6_prelist_timer(); 266 251 267 /* ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã®ã¢ãã¬ã¹ã®å¦ç*/252 /* ネットワークインタフェースのアドレスの処理 */ 268 253 in6_ifaddr_timer(ifp); 269 254 270 255 /* 271 * å°éå¯è½ç¶æ 272 ã®æå¹æéã®æ´æ° 256 * 到達可能状態の有効時間の更新 273 257 */ 274 258 if ((int32_t)(nd6_recalc_reachtm_interval - now) < 0) { … … 281 265 282 266 /* 283 * nd6_get_cache -- è¿é£ãã£ãã·ã¥ãç²å¾ããã267 * nd6_get_cache -- 近隣キャッシュを獲得する。 284 268 */ 285 269 … … 291 275 292 276 /* 293 * nd6_ifattach -- è¿é£æ¢ç´¢ã®åæè¨å®ãè¡ãã277 * nd6_ifattach -- 近隣探索の初期設定を行う。 294 278 */ 295 279 … … 300 284 301 285 /* 302 * nd6_output_hold -- è¿é£æ¢ç´¢ãã£ãã·ã¥ã«ä¿çããã¦ãã 303 * ã¢ãã¬ã¹è§£æ±ºå¾ 304 ã¡ã®ãã¼ã¿ã°ã©ã ãããã°éä¿¡ããã 305 * 306 * 注æ: ã»ããã© SEM_ND6_CACHE ã«ããããã¯ç¶æ 307 ã§å¼åºããã¨ã 286 * nd6_output_hold -- 近隣探索キャッシュに保留されている 287 * アドレス解決待ちのデータグラムがあれば送信する。 288 * 289 * 注意: セマフォ SEM_ND6_CACHE によりロック状態で呼出すこと。 308 290 */ 309 291 … … 313 295 SYSTIM now; 314 296 315 /* ã¢ãã¬ã¹è§£æ±ºå¾ 316 ã¡ã®ãã¼ã¿ã°ã©ã ãããã°éä¿¡ããã*/ 297 /* アドレス解決待ちのデータグラムがあれば送信する。*/ 317 298 if (ln->hold) { 318 299 319 /* ã¿ã¤ã ã¢ã¦ãã®å¦ç*/300 /* タイムアウトの処理 */ 320 301 if (ln->tmout != TMO_FEVR) { 321 302 322 303 /* 323 * ã¿ã¤ã ã¢ã¦ãã®æå®ãæ°¸ä¹ 324 ã§ãªããæéãéãã¦ããã°ã 325 * åºåããªãã§çµäºããã 304 * タイムアウトの指定が永久でなく、時間を過ぎていれば、 305 * 出力しないで終了する。 326 306 */ 327 307 syscall(get_tim(&now)); … … 341 321 342 322 /* 343 * nd6_lookup -- è¿é£æ¢ç´¢ãã£ãã·ã¥ãæ¢ç´¢ããã 344 * 345 * 注æ: ã»ããã© SEM_ND6_CACHE ã«ããããã¯ç¶æ 346 ã§å¼åºããã¨ã 323 * nd6_lookup -- 近隣探索キャッシュを探索する。 324 * 325 * 注意: セマフォ SEM_ND6_CACHE によりロック状態で呼出すこと。 347 326 * 348 327 */ … … 356 335 for (ix = NUM_ND6_CACHE_ENTRY; ix -- > 0; ) { 357 336 if (nd6_cache[ix].state == 0) { 358 /* æªä½¿ç¨ã¨ã³ããªã®ã¤ã³ããã¯ã¹ãè¨é²ããã*/337 /* 未使用エントリのインデックスを記録する。*/ 359 338 if (fix == -1) 360 339 fix = ix; … … 364 343 } 365 344 else if ((int32_t)(nd6_cache[ix].expire - min) < 0) { /* nd6_cache[ix].expire < min */ 366 /* æå¹æéãæçã¨ã³ããªã®ã¤ã³ããã¯ã¹ãè¨é²ããã*/345 /* 有効期限が最短エントリのインデックスを記録する。*/ 367 346 min = nd6_cache[ix].expire; 368 347 mix = ix; … … 388 367 389 368 /* 390 * nd6_cache_lladdr -- è¿é£æ¢ç´¢ãã£ãã·ã¥ã«ç»é²ããã369 * nd6_cache_lladdr -- 近隣探索キャッシュに登録する。 391 370 */ 392 371 … … 400 379 int_t newstate = ND6_LLINFO_INCOMPLETE; 401 380 402 /* ã¢ãã¬ã¹ãç¡æå®ãªãä½ãããªãã*/381 /* アドレスが無指定なら何もしない。*/ 403 382 if (IN6_IS_ADDR_UNSPECIFIED(from)) 404 383 return NULL; 405 384 406 /* è¿é£ãã£ãã·ã¥ã«ç»é²ããã*/385 /* 近隣キャッシュに登録する。*/ 407 386 syscall(wai_sem(SEM_ND6_CACHE)); 408 387 if ((ln = nd6_lookup(from, false)) == NULL) { … … 422 401 423 402 /* 424 * ç¶æ 425 é·ç§»è¡¨ 403 * 状態遷移表 426 404 * 427 405 * nd_na_flags 428 * newnetry olladdr lladdr llchange å¦ç (L: lladdr ãç»é²ãã)406 * newnetry olladdr lladdr llchange 処理 (L: lladdr を登録する) 429 407 * 430 408 * F F N - (1) … … 437 415 */ 438 416 439 /* ãã¼ã¿ãªã³ã¯å±¤ã®ã¢ãã¬ã¹ãéç¥ããã¦ããã°æ´æ°ããã*/417 /* データリンク層のアドレスが通知されていれば更新する。*/ 440 418 if (lladdr != NULL) { 441 419 ln->ifaddr = *(T_IF_ADDR *)lladdr; … … 459 437 } 460 438 461 /* è¿é£ãã£ãã·ã¥ã¨ã³ããªãæ´æ°ããã*/439 /* 近隣キャッシュエントリを更新する。*/ 462 440 if (doupdate) { 463 441 ln->state = newstate; … … 467 445 ln->expire = now + ND6_GCOLLECTION_TIME; 468 446 469 /* ã¢ãã¬ã¹è§£æ±ºå¾ 470 ã¡ã®ãã¼ã¿ã°ã©ã ãããã°éä¿¡ããã*/ 447 /* アドレス解決待ちのデータグラムがあれば送信する。*/ 471 448 nd6_output_hold(ifp, ln); 472 449 } … … 477 454 478 455 479 /* ã«ã¼ã¿éç¥ã®å¦ç*/456 /* ルータ通知の処理 */ 480 457 switch (type) { 481 458 … … 507 484 508 485 /* 509 * nd6_is_addr_neighbor -- æå®ãããã¢ãã¬ã¹ã®ãã¼ããåä¸ãªã³ã¯ã«ããããã§ãã¯ããã486 * nd6_is_addr_neighbor -- 指定されたアドレスのノードが同一リンクにあるかチェックする。 510 487 */ 511 488 … … 526 503 527 504 /* 528 * nd6_output -- è¿é£æ¢ç´¢ã®åºåé¢æ° 529 * 530 * 注æ: ã»ããã© SEM_ND6_CACHE ã«ããããã¯ç¶æ 531 ã§å¼åºããã¨ã 505 * nd6_output -- 近隣探索の出力関数 506 * 507 * 注意: セマフォ SEM_ND6_CACHE によりロック状態で呼出すこと。 532 508 */ 533 509 … … 539 515 540 516 /* 541 * ãã¦å 542 ã¢ãã¬ã¹ããã«ããã£ã¹ãããè¿é£ãã£ãã·ã¥ã 543 * ä¸è¦ã®å ´åã¯ç´ã¡ã«éä¿¡ããã 517 * あて先アドレスがマルチキャストか、近隣キャッシュが 518 * 不要の場合は直ちに送信する。 544 519 */ 545 520 if (!(IN6_IS_ADDR_MULTICAST(dst) || !IF_IN6_NEED_CACHE(ifp))) { 546 521 if (ln == NULL) { 547 /* è¿é£ãã£ãã·ã¥ãæªå®ç¾©ã®å ´å*/522 /* 近隣キャッシュが未定義の場合 */ 548 523 if (nd6_is_addr_neighbor(ifp, dst)) { 549 524 /* 550 * æå®ãããã¢ãã¬ã¹ã®ãã¼ããåä¸ãªã³ã¯ã«ããæã¯ã551 * è¿é£ãã£ãã·ã¥ãæ¢ç´¢ããæªå®ç¾©ã®å ´åã¯ç»é²ããã525 * 指定されたアドレスのノードが同一リンクにある時は、 526 * 近隣キャッシュを探索し、未定義の場合は登録する。 552 527 */ 553 528 ln = nd6_lookup(dst, true); … … 560 535 561 536 /* 562 * è¿é£ãã£ãã·ã¥ã®ç¶æ 563 ãããã¼ã¿ãªã³ã¯å±¤ã®ã¢ãã¬ã¹ãåãã£ã¦ãã¦ãã 564 * å°éå¯è½æ§ã確èªããã¦ããªãã¨ãã¯ãå°éä¸è½éç¥ãéå§ããã 537 * 近隣キャッシュの状態が、データリンク層のアドレスが分かっていても、 538 * 到達可能性が確認されていないときは、到達不能通知を開始する。 565 539 */ 566 540 if (ln->state == ND6_LLINFO_STALE) { … … 572 546 573 547 /* 574 * è¿é£ãã£ãã·ã¥ã®ç¶æ 575 ãããã¼ã¿ãªã³ã¯å±¤ã®ã¢ãã¬ã¹æªè§£æ±ºã®å ´å㯠576 * è¿é£æ¢ç´¢ãè¡ãã 548 * 近隣キャッシュの状態が、データリンク層のアドレス未解決の場合は 549 * 近隣探索を行う。 577 550 */ 578 551 if (ln->state <= ND6_LLINFO_INCOMPLETE) { 579 552 580 /* ã¿ã¤ã ã¢ã¦ãã®æå®ããã¼ãªã³ã°ãªãã¿ã¤ã ã¢ã¦ãã§çµäºããã*/553 /* タイムアウトの指定がポーリングならタイムアウトで終了する。*/ 581 554 if (tmout == TMO_POL) { 582 555 error = E_TMOUT; … … 587 560 ln->state = ND6_LLINFO_INCOMPLETE; 588 561 589 /* ãã§ã«ãæªè§£æ±ºã®ãããã¯ã¼ã¯ãããã¡ãããã°ãéæ¾ããã*/562 /* すでに、未解決のネットワークバッファがあれば、開放する。*/ 590 563 if (ln->hold != NULL) { 591 564 syscall(rel_net_buf(ln->hold)); … … 594 567 595 568 /* 596 * éä¿¡ããã³ãã£ã³ã°ããã597 * IF ã§ãããã¯ã¼ã¯ãããã¡ãéæ¾ããªããã©ã°ãè¨å®ããã¦ããã¨ãã¯ã598 * éä¿¡ããã³ãã£ã³ã°ããªãã569 * 送信をペンディングする。 570 * IF でネットワークバッファを開放しないフラグが設定されているときは、 571 * 送信をペンディングしない。 599 572 */ 600 573 if ((output->flags & NB_FLG_NOREL_IFOUT) == 0) { 601 574 ln->hold = output; 602 575 603 /* ã¿ã¤ã ã¢ã¦ãã®è¨å®*/576 /* タイムアウトの設定 */ 604 577 if (tmout == TMO_FEVR) 605 578 ln->tmout = tmout; … … 620 593 if ((int32_t)(ln->expire - now) < 0) { 621 594 /* ln->expire < now */ 622 ln->expire += ND6_RETRANS_TIME; /* è¿é£æ¢ç´¢éä¿¡éé*/595 ln->expire += ND6_RETRANS_TIME; /* 近隣探索送信間隔 */ 623 596 ln->asked ++; 624 597 nd6_ns_output(ifp, &in6_addr_unspecified, dst, ln, false); … … 631 604 632 605 /* 633 * éè¤ãæ¤åºãããã¤ã³ã¿ãã§ã¼ã¹ã«ã¯åºåããªãã606 * 重複が検出されたインタフェースには出力しない。 634 607 */ 635 608 if ((ifp->flags & ND6_IFF_IFDISABLED) != 0) { … … 647 620 648 621 /* 649 * nd6_storelladdr -- åºåãããããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã®ã¢ãã¬ã¹ãè¿ãã622 * nd6_storelladdr -- 出力するネットワークインタフェースのアドレスを返す。 650 623 */ 651 624 … … 664 637 665 638 /* 666 * nd6_option -- è¿é£æ¢ç´¢ãªãã·ã§ã³ã®å¦ç 667 * 668 * 注æ: ãªãã·ã§ã³ãªãã»ããé 669 åã«ã¯ããªãã»ãã + 8 ãè¨å®ããã¦ããã 639 * nd6_option -- 近隣探索オプションの処理 640 * 641 * 注意: オプションオフセット配列には、オフセット + 8 が設定されている。 670 642 */ 671 643 … … 675 647 T_ND_OPT_HDR *opth; 676 648 ER error = E_OK; 677 int_t pi_count = 0; /* ãã¬ãã£ãã¯ã¹æ 678 å ±ã®åæ° */ 649 int_t pi_count = 0; /* プレフィックス情報の個数 */ 679 650 680 651 opth = (T_ND_OPT_HDR *)nh; … … 683 654 while (error == E_OK && ((uint8_t *)opth - (uint8_t *)nh) < (256 - 8) && len > 0) { 684 655 685 /* ãªãã·ã§ã³é·ã 0 ã®æã¯ãä¸æ£ãªãªãã·ã§ã³ã¨ãã¦å¦çããã*/656 /* オプション長が 0 の時は、不正なオプションとして処理する。*/ 686 657 if (opth->len == 0) { 687 658 error = E_PAR; … … 689 660 } 690 661 691 /* ãªãã·ã§ã³ã®ã¿ã¤ãã«ããåå²ããã*/662 /* オプションのタイプにより分岐する。*/ 692 663 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: /* リダイレクト・ヘッダ */ 697 667 case ND_OPT_MTU: /* MTU */ 698 668 if (opt[ND_OPT_OFF_ARRAY_IX(opth->type)]) { 699 /* ãã¬ãã£ãã¯ã¹æ 700 å ±ä»¥å¤ã®åããªãã·ã§ã³ãè¤æ°æå®ããã¦ããã*/ 669 /* プレフィックス情報以外の同じオプションが複数指定されている。*/ 701 670 error = E_PAR; 702 671 } … … 705 674 } 706 675 break; 707 case ND_OPT_PREFIX_INFORMATION: /* ãã¬ãã£ãã¯ã¹æ 708 å ± */ 676 case ND_OPT_PREFIX_INFORMATION: /* プレフィックス情報 */ 709 677 if (!opt[ND_OPT_OFF_ARRAY_IX(ND_OPT_PREFIX_INFORMATION)]) { 710 678 /* 711 * ãã¬ãã£ãã¯ã¹æ 712 å ±ã¯æåã«ç¾ãããªãã»ããã®ã¿è¨é²ããã 679 * プレフィックス情報は最初に現れたオフセットのみ記録する。 713 680 */ 714 681 opt[ND_OPT_OFF_ARRAY_IX(opth->type)] = (uint8_t *)opth - (uint8_t *)nh + 8; … … 718 685 default: 719 686 /* 720 * å°æ¥å®ç¾©ããããããã³ã«ã¸ã®æ¡å¼µã«å¯¾å¿ããããã721 * èªèã§ããªããªãã·ã§ã³ã¯åã«ç¡è¦ããå¦çãç¶è¡ããã687 * 将来定義されるプロトコルへの拡張に対応するため、 688 * 認識できないオプションは単に無視し、処理を続行する。 722 689 */ 723 690 break; 724 691 } 725 len -= opth->len << 3; /* ãªãã·ã§ã³é·ã®åä½ã¯ 8 ãã¤ã*/692 len -= opth->len << 3; /* オプション長の単位は 8 バイト */ 726 693 opth = (T_ND_OPT_HDR *)((uint8_t *)opth + (opth->len << 3)); 727 694 } -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/nd6.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 80 68 81 69 /* 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 * 近隣キャッシュ 89 77 */ 90 78 … … 93 81 T_NET_BUF *hold; 94 82 TMO tmout; 95 SYSTIM expire; /* [us] æå¹æéãåããæå»*/83 SYSTIM expire; /* [us] 有効時間が切れる時刻 */ 96 84 T_IF_ADDR ifaddr; 97 85 uint8_t state; … … 100 88 } T_LLINFO_ND6; 101 89 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 /* 到達可能性を確認中 */ 114 99 115 100 #define ND6_IS_LLINFO_PROBREACH(n) ((n)->state > ND6_LLINFO_INCOMPLETE) 116 101 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 /* 近隣探索キャッシュ、有効時間の定義 */ 125 109 126 110 #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 /* ユニキャストアドレス要請の再送回数 */ 133 117 134 118 #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) /* 最初の重複アドレス検出送信遅延 */ 141 122 #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) /* 到達可能状態の有効時間の既定値 */ 156 134 #define ND6_MAX_REACHABLE_TIME (60*60*SYSTIM_HZ) 157 /* å°éå¯è½ç¶æ 158 ã®æå¹æéã®æ¢å®å¤ */ 135 /* 到達可能状態の有効時間の既定値 */ 159 136 #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 */ 168 143 #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 */ 170 145 #endif 171 146 172 /* å°éå¯è½ç¶æ 173 ã®æå¹æéã®è¨ç®ãã¯ã */ 147 /* 到達可能状態の有効時間の計算マクロ */ 174 148 175 149 #define ND6_CALC_REACH_TIME(b) \ … … 178 152 179 153 /* 180 * è¿é£æ¢ç´¢ã®éä¿¡éé154 * 近隣探索の送信間隔 181 155 */ 182 156 … … 184 158 185 159 /* 186 * ã«ã¼ã¿éç¥ã«ããå¤æ´ããããã¨ãããå¤160 * ルータ通知により変更されることがある値 187 161 */ 188 162 189 163 #if NUM_ND6_DEF_RTR_ENTRY > 0 190 164 191 /* ã«ã¼ã¿éç¥ãåä¿¡ããå ´åã¯ãéç¥ãããå¤*/165 /* ルータ通知を受信する場合は、通知された値 */ 192 166 193 167 #define ND6_REACHABLE_TIME nd6_reachable_time … … 196 170 #else /* #if NUM_ND6_DEF_RTR_ENTRY > 0 */ 197 171 198 /* ã«ã¼ã¿éç¥ãåä¿¡ããªãå ´åã®å¤ã¯æ¢å®å¤*/172 /* ルータ通知を受信しない場合の値は既定値 */ 199 173 200 174 #define ND6_REACHABLE_TIME ND6_DEF_REACHABLE_TIME … … 204 178 205 179 /* 206 * ãã£ãã©ã«ãã«ã¼ã¿ã»ãªã¹ã180 * ディフォルトルータ・リスト 207 181 */ 208 182 209 183 typedef struct t_def_router { 210 184 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; /* ルータ通知のフラグ */ 215 189 uint8_t state; 216 190 } T_DEF_ROUTER; 217 191 218 /* ãã£ãã©ã«ãã«ã¼ã¿ã»ãªã¹ãã®ç¶æ 219 */ 220 221 #define ND6_DEF_RTR_BUSY 0xff /* 使ç¨ä¸ */ 222 223 /* ãã¬ãã£ãã¯ã¹ã®ã¤ã³ããã¯ã¹ */ 192 /* ディフォルトルータ・リストの状態 */ 193 194 #define ND6_DEF_RTR_BUSY 0xff /* 使用中 */ 195 196 /* プレフィックスのインデックス */ 224 197 225 198 #define ND6_PREFIX_IX_INVALID 0xff 226 199 227 200 /* 228 * ãã¬ãã£ãã¯ã¹ã»ãªã¹ã201 * プレフィックス・リスト 229 202 */ 230 203 231 204 typedef 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; /* プレフィックス長 */ 240 213 } T_ND6_PREFIX; 241 214 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 * 変数 255 226 */ 256 227 … … 261 232 262 233 /* 263 * é¢æ°234 * 関数 264 235 */ 265 236 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/nd6_nbr.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 124 112 125 113 /* 126 * å±æé¢æ°114 * 局所関数 127 115 */ 128 116 … … 134 122 135 123 /* 136 * nd6_dad_duplicated -- éè¤ã¢ãã¬ã¹ãæ¤åºããæã®å¦ç124 * nd6_dad_duplicated -- 重複アドレスを検出した時の処理 137 125 */ 138 126 … … 147 135 ifa->flags |= IN6_IFF_DUPLICATED; 148 136 149 /* ã¿ã¤ãã¼ãåæ¢ããã*/137 /* タイマーを停止する。*/ 150 138 untimeout((callout_func)nd6_dad_timer, ifa); 151 139 152 140 /* 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)。 158 146 */ 159 147 if (IN6_IS_ADDR_LINKLOCAL(&ifa->addr)) … … 163 151 164 152 /* 165 * nd6_dad_ns_output -- éè¤ã¢ãã¬ã¹æ¤åº (DAD) è¦è«ãåºåããã153 * nd6_dad_ns_output -- 重複アドレス検出 (DAD) 要請を出力する。 166 154 */ 167 155 … … 176 164 177 165 /* 178 * nd6_dad_ns_input -- éè¤ã¢ãã¬ã¹æ¤åº (DAD) è¦è«å 179 ¥å 166 * nd6_dad_ns_input -- 重複アドレス検出 (DAD) 要請入力 180 167 */ 181 168 … … 186 173 187 174 /* 188 * ã¾ã ãéè¤ã¢ãã¬ã¹æ¤åºè¦è«ãåºåãã¦ããªãå ´å175 * まだ、重複アドレス検出要請を出力していない場合 189 176 */ 190 177 if (ifa->ns_ocount == 0) … … 195 182 196 183 /* 197 * nd6_dad_na_input -- éè¤ã¢ãã¬ã¹æ¤åº (DAD) éç¥å 198 ¥å 184 * nd6_dad_na_input -- 重複アドレス検出 (DAD) 通知入力 199 185 */ 200 186 … … 208 194 209 195 /* 210 * nd6_dad_timer -- éè¤ã¢ãã¬ã¹æ¤åº (DAD) ã¿ã¤ãã¼196 * nd6_dad_timer -- 重複アドレス検出 (DAD) タイマー 211 197 */ 212 198 … … 229 215 nd6_dad_ns_output(ifp, ifa); 230 216 231 /* ã¿ã¤ã ã¢ã¦ããè¿é£æ¢ç´¢ã®éä¿¡ééã«è¨å®ããã*/217 /* タイムアウトを近隣探索の送信間隔に設定する。*/ 232 218 timeout((callout_func)nd6_dad_timer, ifa, ND6_RETRANS_TIME * NET_TIMER_HZ / SYSTIM_HZ); 233 219 } … … 241 227 242 228 /* 243 * nd6_ns_input -- è¿é£è¦è«ã®å 244 ¥åå¦çã 229 * nd6_ns_input -- 近隣要請の入力処理。 245 230 */ 246 231 … … 264 249 265 250 /* 266 * ãããã®ãã§ãã¯ã以ä¸ã®å ´åã¯ç ´æ£ããã267 * ã»ããããªãããã IPV6_MAXHLIM (255) 以å¤268 * ã»ãããé·ãçã251 * ヘッダのチェック、以下の場合は破棄する。 252 * ・ホップリミットが IPV6_MAXHLIM (255) 以外 253 * ・ヘッダ長が短い 269 254 */ 270 255 if (ip6h->hlim != IPV6_MAXHLIM || input->len - off < NEIGHBOR_SOLICIT_HDR_SIZE) … … 275 260 if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src)) { 276 261 /* 277 * å§ç¹ã¢ãã¬ã¹ãç¡æå®ãªããéè¤ã¢ãã¬ã¹æ¤åº 278 * ãã¦å 279 ã¢ãã¬ã¹ã¯ãè¦è«ãã«ããã£ã¹ãã§ãªããã°ãªããªãã 262 * 始点アドレスが無指定なら、重複アドレス検出 263 * あて先アドレスは、要請マルチキャストでなければならない。 280 264 */ 281 265 if (!IN6_IS_ADDR_NS_MULTICAST(&ip6h->dst)) … … 283 267 } 284 268 285 /* ç®çã¢ãã¬ã¹ããã«ããã£ã¹ããªãã¨ã©ã¼*/269 /* 目的アドレスがマルチキャストならエラー */ 286 270 if (IN6_IS_ADDR_MULTICAST(&nsh->target)) 287 271 goto err_ret; 288 272 289 /* è¿é£æ¢ç´¢ãªãã·ã§ã³ã®ãªãã»ãããè¨é²ããã*/273 /* 近隣探索オプションのオフセットを記録する。*/ 290 274 if (nd6_options(nd_opt_off, input->buf + (off + NEIGHBOR_SOLICIT_HDR_SIZE), 291 275 input->len - (off + NEIGHBOR_SOLICIT_HDR_SIZE)) != E_OK) 292 276 goto err_ret; 293 277 294 /* è¿é£æ¢ç´¢ãªãã·ã§ã³ (å§ç¹ãªã³ã¯ã¢ãã¬ã¹) */278 /* 近隣探索オプション (始点リンクアドレス) */ 295 279 if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_SOURCE_LINKADDR)]) { 296 280 opth = (T_ND_OPT_HDR *)((uint8_t *)(input->buf + off + NEIGHBOR_SOLICIT_HDR_SIZE) + 297 281 nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_SOURCE_LINKADDR)] - 8); 298 /* 注æ: ãªãã·ã§ã³ãªãã»ããé 299 åã«ã¯ããªãã»ãã + 8 ãè¨å®ããã¦ããã*/ 282 /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/ 300 283 lladdr = (uint8_t *)(opth + 1); 301 284 lladdr_len = (opth->len << 3); … … 305 288 goto err_ret; 306 289 307 /* å®å 308 ã¢ãã¬ã¹ããã«ããã£ã¹ããªãè¿é£éç¥ã«ãã¼ã¿ãªã³ã¯å±¤ã®ã¢ãã¬ã¹ãä»ããã*/ 290 /* 宛先アドレスがマルチキャストなら近隣通知にデータリンク層のアドレスを付ける。*/ 309 291 if (IN6_IS_ADDR_MULTICAST(&ip6h->dst)) 310 292 tlladdr = true; … … 313 295 314 296 /* 315 * ç®çã¢ãã¬ã¹ããèªåã®ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã« 316 * å²ãå½ã¦ããã¦ããã¢ãã¬ã¹ã調ã¹ãã 317 * ãªãã代çãµã¼ãã¹ã¯å®è£ 318 ãã¦ããªãã 297 * 目的アドレスが、自分のネットワークインタフェースに 298 * 割り当てられているアドレスか調べる。 299 * なお、代理サービスは実装していない。 319 300 */ 320 301 ifa = in6_lookup_ifaddr(ifp, &nsh->target); … … 323 304 goto free_ret; 324 305 325 /* æ¢ç´¢çµæã¢ãã¬ã¹ãéè¤ãã¦ããã°å¿çããªãã§çµäºããã*/306 /* 探索結果アドレスが重複していれば応答しないで終了する。*/ 326 307 if (ifa->flags & IN6_IFF_DUPLICATED) 327 308 goto err_ret; 328 309 329 310 /* 330 * ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã®ã¢ãã¬ã¹é·ãä¸è´ããªããã°ã¨ã©ã¼311 * ネットワークインタフェースのアドレス長が一致しなければエラー 331 312 */ 332 313 if (lladdr && lladdr_len != ((sizeof(T_IF_ADDR) + sizeof(T_ND_OPT_HDR) + 7) & ~7)) … … 334 315 335 316 /* 336 * å§ç¹ã¢ãã¬ã¹ãèªåã®ã¢ãã¬ã¹ã¨ä¸è´ããã°éè¤ãã¦ããã317 * 始点アドレスが自分のアドレスと一致すれば重複している。 337 318 */ 338 319 if (IN6_ARE_ADDR_EQUAL(&ifa->addr, &ip6h->src)) 339 320 goto free_ret; 340 321 341 /* éè¤æ¤åºä¸ã«ãè¿é£è¦è«ãåä¿¡ããã¨ãã®å¦ç*/322 /* 重複検出中に、近隣要請を受信したときの処理 */ 342 323 if (ifa->flags & IN6_IFF_TENTATIVE) { 343 324 if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src)) … … 352 333 353 334 /* 354 * å§ç¹ã¢ãã¬ã¹ãç¡æå®ãªããéä¿¡ç¸æã¯éè¤ã¢ãã¬ã¹æ¤åºä¸ã§ã 355 * ç´æ¥éä¿¡ãããã¨ã¯ã§ããªãã®ã§ãå 356 ¨ãã¼ããã«ããã£ã¹ã 357 * ã¢ãã¬ã¹ã«éä¿¡ããã 335 * 始点アドレスが無指定なら、送信相手は重複アドレス検出中で、 336 * 直接送信することはできないので、全ノードマルチキャスト 337 * アドレスに送信する。 358 338 */ 359 339 if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->src)) { … … 362 342 } 363 343 364 /* è¿é£ãã£ãã·ã¥ã«ç»é²ããã*/344 /* 近隣キャッシュに登録する。*/ 365 345 nd6_cache_lladdr(ifp, &ip6h->src, (T_IF_ADDR *)lladdr, ND_NEIGHBOR_SOLICIT, 0); 366 346 … … 377 357 378 358 /* 379 * nd6_ns_output -- è¿é£è¦è«ãåºåããã359 * nd6_ns_output -- 近隣要請を出力する。 380 360 */ 381 361 … … 396 376 return; 397 377 398 /* è¿é£è¦è«ãã¤ãã¼ãé·ãè¨ç®ããã*/378 /* 近隣要請ペイロード長を計算する。*/ 399 379 if (!dad && IF_SOFTC_TO_IFADDR(ifp->ic)) 400 380 len = (NEIGHBOR_SOLICIT_HDR_SIZE + ND_OPT_HDR_SIZE + sizeof(T_IF_ADDR) + 7) >> 3 << 3; … … 403 383 404 384 /* 405 * è¦è«ãã«ããã£ã¹ãã»ã¢ãã¬ã¹å®ã®è¿é£æ¢ç´¢ã§ã¯ã406 * ä»ã®ãªã³ã¯ããã®å½é ããããã¼ã¿ã°ã©ã ã407 * æé¤ãããããããããªãããã« IPV6_MAXHLIM (255) ãè¨å®ããã385 * 要請マルチキャスト・アドレス宛の近隣探索では、 386 * 他のリンクからの偽造されたデータグラムを 387 * 排除するため、ホップリミットに IPV6_MAXHLIM (255) を設定する。 408 388 */ 409 389 if (IN6_IS_ADDR_UNSPECIFIED(daddr) || IN6_IS_ADDR_MULTICAST(daddr)) 410 390 ipflags = IPV6_OUT_SET_HOP_LIMIT(IPV6_OUT_FLG_HOP_LIMIT, IPV6_MAXHLIM); 411 391 412 /* ãããã¯ã¼ã¯ãããã¡ãç²å¾ããIPv6 ããããè¨å®ããã*/392 /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/ 413 393 if (in6_get_datagram(&output, len, 0, daddr, NULL, 414 394 IPPROTO_ICMPV6, IPV6_MAXHLIM, … … 420 400 if (IN6_IS_ADDR_UNSPECIFIED(daddr)) { 421 401 422 /* å®å 423 ã¢ãã¬ã¹ãç¡æå®ã®å ´åã¯ãè¦è«ãã«ããã£ã¹ãã¢ãã¬ã¹ãè¨å®ããã*/ 402 /* 宛先アドレスが無指定の場合は、要請マルチキャストアドレスを設定する。*/ 424 403 ip6h->dst.s6_addr32[0] = IPV6_ADDR_INT32_MLL; 425 404 ip6h->dst.s6_addr32[2] = IPV6_ADDR_INT32_ONE; … … 428 407 } 429 408 430 /* éä¿¡å 431 ã¢ãã¬ã¹ã®è¨å® */ 409 /* 送信元アドレスの設定 */ 432 410 if (!dad) { 433 411 434 /* éè¤ã¢ãã¬ã¹æ¤åºã§ã¯ãªãæã®éä¿¡å 435 ã¢ãã¬ã¹æ±ºå®å¦çã*/ 412 /* 重複アドレス検出ではない時の送信元アドレス決定処理。*/ 436 413 T_IN6_ADDR *saddr; 437 414 438 415 if (ln && ln->hold) { 439 416 /* 440 * éä¿¡ããã³ãã£ã³ã°ããã¦ãããã¼ã¿ã°ã©ã ã® 441 * éä¿¡å 442 ã¢ãã¬ã¹ãå©ç¨ããã 417 * 送信がペンディングされているデータグラムの 418 * 送信元アドレスを利用する。 443 419 */ 444 420 if (ln->hold->len > IF_IP6_HDR_SIZE) … … 454 430 else { 455 431 /* 456 * å®å 457 ã¢ãã¬ã¹ã«ãµããããéä¿¡å 458 ã¢ãã¬ã¹ãã 459 * ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ããæ¢ç´¢ãã¦å©ç¨ããã 432 * 宛先アドレスにふさわしい送信元アドレスを、 433 * ネットワークインタフェースから探索して利用する。 460 434 */ 461 435 T_IN6_IFADDR *ifa; … … 470 444 else { 471 445 472 /* éè¤ã¢ãã¬ã¹æ¤åºæã®éä¿¡å 473 ã¢ãã¬ã¹ã¯ç¡æå®ã*/ 446 /* 重複アドレス検出時の送信元アドレスは無指定。*/ 474 447 memset(&ip6h->src, 0, sizeof(T_IN6_ADDR)); 475 448 } 476 449 477 /* è¿é£è¦è«ããããè¨å®ããã*/450 /* 近隣要請ヘッダを設定する。*/ 478 451 nsh = GET_NEIGHBOR_SOLICIT_HDR(output, IF_IP6_NEIGHBOR_SOLICIT_HDR_OFFSET); 479 452 nsh->hdr.type = ND_NEIGHBOR_SOLICIT; … … 484 457 if (!dad && (mac = IF_SOFTC_TO_IFADDR(ifp->ic)) != NULL) { 485 458 486 /* è¿é£æ¢ç´¢ãªãã·ã§ã³ã¨ãã¦ãæ¢ç´¢ç®æ¨ã® MAC ã¢ãã¬ã¹ãè¨å®ããã*/459 /* 近隣探索オプションとして、探索目標の MAC アドレスを設定する。*/ 487 460 T_ND_OPT_HDR *opth; 488 461 uint_t optlen; … … 496 469 } 497 470 498 /* ãã§ãã¯ãµã ãè¨ç®ããã*/471 /* チェックサムを計算する。*/ 499 472 nsh->hdr.sum = 0; 500 473 nsh->hdr.sum = in6_cksum(output, IPPROTO_ICMPV6, (uint8_t*)nsh - output->buf, len); 501 474 502 /* éä¿¡ããã*/475 /* 送信する。*/ 503 476 NET_COUNT_ICMP6(net_count_nd6[NC_ICMP6_OUT_OCTETS], 504 477 output->len - GET_IF_IP6_HDR_SIZE(output)); … … 510 483 511 484 /* 512 * nd6_na_input -- è¿é£éç¥ã®å 513 ¥åå¦çã 485 * nd6_na_input -- 近隣通知の入力処理。 514 486 */ 515 487 … … 534 506 535 507 /* 536 * ãããã®ãã§ãã¯ã以ä¸ã®å ´åã¯ç ´æ£ããã537 * ã»ããããªãããã IPV6_MAXHLIM (255) 以å¤538 * ã»ãããé·ãçã508 * ヘッダのチェック、以下の場合は破棄する。 509 * ・ホップリミットが IPV6_MAXHLIM (255) 以外 510 * ・ヘッダ長が短い 539 511 */ 540 512 if (ip6h->hlim != IPV6_MAXHLIM || input->len - off < NEIGHBOR_ADVERT_HDR_SIZE) … … 543 515 nah = (T_NEIGHBOR_ADVERT_HDR *)(input->buf + off); 544 516 545 /* ç®çã¢ãã¬ã¹ããã«ããã£ã¹ããªãã¨ã©ã¼*/517 /* 目的アドレスがマルチキャストならエラー */ 546 518 if (IN6_IS_ADDR_MULTICAST(&nah->target)) 547 519 goto err_ret; 548 520 549 /* è¿é£è¦è«ã¸ã®å¿çã§ãå®å 550 ã¢ãã¬ã¹ããã«ããã£ã¹ããªãã¨ã©ã¼ */ 521 /* 近隣要請への応答で、宛先アドレスがマルチキャストならエラー */ 551 522 if ((nah->nd_na_flags_reserved & ND_NA_FLG_SOLICITED) && 552 523 IN6_IS_ADDR_MULTICAST(&ip6h->dst)) 553 524 goto err_ret; 554 525 555 /* è¿é£æ¢ç´¢ãªãã·ã§ã³ã®ãªãã»ãããè¨é²ããã*/526 /* 近隣探索オプションのオフセットを記録する。*/ 556 527 if (nd6_options(nd_opt_off, input->buf + (off + NEIGHBOR_ADVERT_HDR_SIZE), 557 528 input->len - (off + NEIGHBOR_ADVERT_HDR_SIZE)) != E_OK) 558 529 goto err_ret; 559 530 560 /* è¿é£æ¢ç´¢ãªãã·ã§ã³ (ç®çãªã³ã¯ã¢ãã¬ã¹) */531 /* 近隣探索オプション (目的リンクアドレス) */ 561 532 if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_TARGET_LINKADDR)]) { 562 533 opth = (T_ND_OPT_HDR *)((uint8_t *)(input->buf + off + NEIGHBOR_ADVERT_HDR_SIZE) + 563 534 nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_TARGET_LINKADDR)] - 8); 564 /* 注æ: ãªãã·ã§ã³ãªãã»ããé 565 åã«ã¯ããªãã»ãã + 8 ãè¨å®ããã¦ããã*/ 535 /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/ 566 536 lladdr = (uint8_t *)(opth + 1); 567 537 lladdr_len = (opth->len << 3); … … 571 541 572 542 /* 573 * ç®çã¢ãã¬ã¹ãèªåã®ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã«å²ãå½ã¦ããã¦ããã¢ãã¬ã¹ã®574 * ããããã«ä¸è´ããã¨ãã¯ãéè¤ãã¦ãããã¨ãæå³ãã¦ããã543 * 目的アドレスが自分のネットワークインタフェースに割り当てられているアドレスの 544 * いずれかに一致したときは、重複していることを意味している。 575 545 */ 576 546 if (ifa) { … … 583 553 584 554 /* 585 * ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã®ã¢ãã¬ã¹é·ãä¸è´ããªããã°ã¨ã©ã¼555 * ネットワークインタフェースのアドレス長が一致しなければエラー 586 556 */ 587 557 if (lladdr && lladdr_len != ((sizeof(T_IF_ADDR) + sizeof(T_ND_OPT_HDR) + 7) & ~7)) 588 558 goto err_ret; 589 559 590 /* è¿é£ãã£ãã·ã¥ãæ¢ç´¢ããã*/560 /* 近隣キャッシュを探索する。*/ 591 561 syscall(wai_sem(SEM_ND6_CACHE)); 592 562 if ((ln = nd6_lookup(&nah->target, false)) == NULL) 593 563 goto free_ret; 594 564 595 /* è¿é£ãã£ãã·ã¥ã®ç¶æ 596 ãããã¼ã¿ãªã³ã¯å±¤ã®ã¢ãã¬ã¹æªè§£æ±ºã®å ´å */ 565 /* 近隣キャッシュの状態が、データリンク層のアドレス未解決の場合 */ 597 566 if (ln->state == ND6_LLINFO_INCOMPLETE) { 598 /* éç¥ããããã¼ã¿ãªã³ã¯å±¤ã®ã¢ãã¬ã¹ã®é·ãã 0 ã®å ´å*/567 /* 通知されたデータリンク層のアドレスの長さが 0 の場合 */ 599 568 if (lladdr == NULL) 600 569 goto free_ret; … … 631 600 632 601 /* 633 * ç¶æ 634 é·ç§»è¡¨ 602 * 状態遷移表 635 603 * 636 604 * nd_na_flags_reserved 637 * OVERRIDE SOLICTED lladdr llchange å¦ç (L: lladdr ãç»é²ãã)605 * OVERRIDE SOLICTED lladdr llchange 処理 (L: lladdr を登録する) 638 606 * 639 607 * F F N - (2c) … … 651 619 */ 652 620 if ((nah->nd_na_flags_reserved & ND_NA_FLG_OVERRIDE) == 0 && (lladdr != NULL && llchange)) { /* (1) */ 653 /* ç¶æ 654 ã REACHABLE ãªã STALE ã«é·ç§»ããã*/ 621 /* 状態が REACHABLE なら STALE に遷移する。*/ 655 622 if (ln->state == ND6_LLINFO_REACHABLE) { 656 623 syscall(get_tim(&now)); … … 664 631 lladdr == NULL) { /* (2c) */ 665 632 666 /* ãã¼ã¿ãªã³ã¯å±¤ã®ã¢ãã¬ã¹ãéç¥ããã¦ããã°æ´æ°ããã*/633 /* データリンク層のアドレスが通知されていれば更新する。*/ 667 634 if (lladdr != NULL) 668 635 ln->ifaddr = *(T_IF_ADDR *)lladdr; 669 636 670 /* è¿é£è¦è«ã¸ã®å¿çãªã REACHABLE ã«é·ç§»ããã*/637 /* 近隣要請への応答なら REACHABLE に遷移する。*/ 671 638 if (nah->nd_na_flags_reserved & ND_NA_FLG_SOLICITED) { 672 639 ln->state = ND6_LLINFO_REACHABLE; … … 678 645 } 679 646 /* 680 * ãã¼ã¿ãªã³ã¯å±¤ã®ã¢ãã¬ã¹ãéç¥ããã681 * ç°ãªãã¢ãã¬ã¹ãªãæ´æ°ããã647 * データリンク層のアドレスが通知され、 648 * 異なるアドレスなら更新する。 682 649 */ 683 650 else if (lladdr != NULL && llchange) { … … 688 655 } 689 656 690 /* ã«ã¼ã¿éç¥ãã©ã°ã®å¦ç*/657 /* ルータ通知フラグの処理 */ 691 658 if ((ln->flags & ND6_LLIF_ROUTER ) != 0 && 692 659 (nah->nd_na_flags_reserved & ND_NA_FLG_ROUTER) == 0) { 693 660 /* 694 * éä¿¡ç¸æãã«ã¼ã¿éç¥ãã©ã°ãç¡å¹ã«ããå ´åã695 * ãã£ãã©ã«ãã»ã«ã¼ã¿ãªã¹ããã対象ã®ã«ã¼ã¿ãåé¤ãã696 * è¿é£æ¢ç´¢ãã£ãã·ã¥ãæ´æ°ããã661 * 送信相手がルータ通知フラグを無効にした場合。 662 * ディフォルト・ルータリストから対象のルータを削除し、 663 * 近隣探索キャッシュを更新する。 697 664 */ 698 665 T_DEF_ROUTER *dr = NULL; … … 712 679 ln->asked = 0; 713 680 714 /* ã¢ãã¬ã¹è§£æ±ºå¾ 715 ã¡ã®ãã¼ã¿ã°ã©ã ãããã°éä¿¡ããã*/ 681 /* アドレス解決待ちのデータグラムがあれば送信する。*/ 716 682 nd6_output_hold(ifp, ln); 717 683 … … 727 693 728 694 /* 729 * nd6_na_output -- è¿é£éç¥ãåºåããã695 * nd6_na_output -- 近隣通知を出力する。 730 696 */ 731 697 … … 745 711 746 712 /* 747 * è¿é£éç¥ãã¤ãã¼ãé·ãè¨ç®ããã748 * tlladdr ãçãªããããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã®ã¢ãã¬ã¹ã追å ããã713 * 近隣通知ペイロード長を計算する。 714 * tlladdr が真ならネットワークインタフェースのアドレスを追加する。 749 715 */ 750 716 if (tlladdr && IF_SOFTC_TO_IFADDR(ifp->ic)) … … 754 720 755 721 /* 756 * ä»ã®ãªã³ã¯ããã®å½é ããããã¼ã¿ã°ã©ã ã757 * æé¤ãããããããããªãããã« IPV6_MAXHLIM (255) ãè¨å®ããã722 * 他のリンクからの偽造されたデータグラムを 723 * 排除するため、ホップリミットに IPV6_MAXHLIM (255) を設定する。 758 724 */ 759 725 ipflags = IPV6_OUT_SET_HOP_LIMIT(IPV6_OUT_FLG_HOP_LIMIT, IPV6_MAXHLIM); 760 726 761 /* ãããã¯ã¼ã¯ãããã¡ãç²å¾ããIPv6 ããããè¨å®ããã*/727 /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/ 762 728 if (in6_get_datagram(&output, len, 0, daddr, NULL, 763 729 IPPROTO_ICMPV6, IPV6_MAXHLIM, … … 769 735 if (IN6_IS_ADDR_UNSPECIFIED(daddr)) { 770 736 /* 771 * å®å 772 ã¢ãã¬ã¹ãç¡æå®ã®å ´åã¯ã 773 * ãªã³ã¯ãã¼ã«ã«å 774 ¨ãã¼ãã»ãã«ããã£ã¹ãã¢ãã¬ã¹ãè¨å®ããã 737 * 宛先アドレスが無指定の場合は、 738 * リンクローカル全ノード・マルチキャストアドレスを設定する。 775 739 */ 776 740 ip6h->dst.s6_addr32[0] = IPV6_ADDR_INT32_MLL; … … 784 748 785 749 /* 786 * å®å 787 ã¢ãã¬ã¹ã«ãµããããéä¿¡å 788 ã¢ãã¬ã¹ãã 789 * ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ããæ¢ç´¢ãã¦å©ç¨ããã 750 * 宛先アドレスにふさわしい送信元アドレスを、 751 * ネットワークインタフェースから探索して利用する。 790 752 */ 791 753 if ((ifa = in6_ifawithifp(ifp, &ip6h->dst)) == NULL) { … … 795 757 memcpy(&ip6h->src, &ifa->addr, sizeof(T_IN6_ADDR)); 796 758 797 /* è¿é£éç¥ããããè¨å®ããã*/759 /* 近隣通知ヘッダを設定する。*/ 798 760 nah = GET_NEIGHBOR_ADVERT_HDR(output, IF_IP6_NEIGHBOR_ADVERT_HDR_OFFSET); 799 761 nah->hdr.type = ND_NEIGHBOR_ADVERT; … … 801 763 memcpy(&nah->target, taddr, sizeof(T_IN6_ADDR)); 802 764 803 /* tlladdr ãçãªããããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã®ã¢ãã¬ã¹ã追å ããã*/765 /* tlladdr が真ならネットワークインタフェースのアドレスを追加する。*/ 804 766 if (tlladdr && (mac = IF_SOFTC_TO_IFADDR(ifp->ic)) != NULL) { 805 767 … … 819 781 nah->nd_na_flags_reserved = flags; 820 782 821 /* ãã§ãã¯ãµã ãè¨ç®ããã*/783 /* チェックサムを計算する。*/ 822 784 nah->hdr.sum = 0; 823 785 nah->hdr.sum = in6_cksum(output, IPPROTO_ICMPV6, (uint8_t*)nah - output->buf, len); 824 786 825 /* éä¿¡ããã*/787 /* 送信する。*/ 826 788 NET_COUNT_ICMP6(net_count_nd6[NC_ICMP6_OUT_OCTETS], 827 789 output->len - GET_IF_IP6_HDR_SIZE(output)); … … 833 795 834 796 /* 835 * nd6_dad_start -- éè¤ã¢ãã¬ã¹æ¤åº (DAD) ãéå§ããã797 * nd6_dad_start -- 重複アドレス検出 (DAD) を開始する。 836 798 * 837 * 第3å¼æ°ã®tick ã¯ãã¤ã³ã¿ãã§ã¼ã¹ãèµ·åããã¦ãããéè¤æ¤åºã 838 * éä¿¡ããã¾ã§ã®æå°é 839 延å¤ã§ããã 799 * 第3引数のtick は、インタフェースが起動されてから、重複検出を 800 * 送信するまでの最小遅延値である。 840 801 */ 841 802 … … 843 804 nd6_dad_start (T_IFNET *ifp, T_IN6_IFADDR *ifa, int_t *tick) 844 805 { 845 /* ãã©ã°ããã§ãã¯ããã*/806 /* フラグをチェックする。*/ 846 807 if (!(ifa->flags & IN6_IFF_TENTATIVE)) 847 808 return; … … 860 821 return; 861 822 862 /* éè¤ã¢ãã¬ã¹æ¤åºã«ã¦ã³ã¿ããªã»ããããã*/823 /* 重複アドレス検出カウンタをリセットする。*/ 863 824 ifa->ns_icount = ifa->na_icount = ifa->ns_ocount = 0; 864 825 865 826 /* 866 * éè¤ã¢ãã¬ã¹æ¤åºè¦è«ãéä¿¡ããããã ããã¤ã³ã¿ãã§ã¼ã¹ã 867 * åæåããç´å¾ã«ãæåã«éä¿¡ããå ´åã¯ãã©ã³ãã ãªé 868 延ãè¡ãã 827 * 重複アドレス検出要請を送信する。ただし、インタフェースを 828 * 初期化した直後に、最初に送信する場合は、ランダムな遅延を行う。 869 829 */ 870 830 if (tick == NULL) { 871 831 nd6_dad_ns_output(ifp, ifa); 872 832 873 /* ã¿ã¤ã ã¢ã¦ããè¿é£æ¢ç´¢ã®éä¿¡ééã«è¨å®ããã*/833 /* タイムアウトを近隣探索の送信間隔に設定する。*/ 874 834 timeout((callout_func)nd6_dad_timer, ifa, ND6_RETRANS_TIME * NET_TIMER_HZ / SYSTIM_HZ); 875 835 } … … 877 837 int_t ntick; 878 838 879 if (*tick == 0) /* æåã®éä¿¡*/839 if (*tick == 0) /* 最初の送信 */ 880 840 ntick = net_rand() % (ND6_FIRST_DAD_DELAY_TIME * NET_TIMER_HZ / SYSTIM_HZ); 881 841 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
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 123 111 124 112 /* 125 * å¤é¨é¢æ°ã®å®ç¾©113 * 外部関数の定義 126 114 */ 127 115 … … 133 121 134 122 /* 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 126 SYSTIM nd6_base_reachable_time = ND6_DEF_REACHABLE_TIME; /* ルータから通知された値 */ 127 SYSTIM nd6_reachable_time = ND6_DEF_REACHABLE_TIME; /* ルータから通知された値の補正値 */ 128 SYSTIM nd6_recalc_reachtm_interval = ND6_RECALC_REACHTM_INTERVAL; /* 到達可能状態の有効時間再計算間隔 */ 129 SYSTIM nd6_retrans_time = ND6_DEF_RETRANS_TIME; /* 近隣探索の送信間隔 */ 130 uint8_t ip6_defhlim = IPV6_DEFHLIM; /* ホップリミットの規定値 */ 131 132 /* 133 * 局所変数 134 */ 135 136 /* 137 * プレフィックス・リスト 152 138 */ 153 139 … … 155 141 156 142 /* 157 * ãã£ãã©ã«ãã«ã¼ã¿ã»ãªã¹ã143 * ディフォルトルータ・リスト 158 144 */ 159 145 160 146 static T_DEF_ROUTER nd6_def_router[NUM_ND6_DEF_RTR_ENTRY]; 161 static uint_t def_router_count = 0; /* ãªã¹ãã«ããã«ã¼ã¿æ°*/162 163 /* 164 * make_mask -- ãããç¨ã®ãã¹ã¯ãçæããã147 static uint_t def_router_count = 0; /* リストにあるルータ数 */ 148 149 /* 150 * make_mask -- マップ用のマスクを生成する。 165 151 */ 166 152 … … 171 157 int_t ix; 172 158 173 /* ãã¹ã¯ãçæããã*/159 /* マスクを生成する。*/ 174 160 mask = 1; 175 161 for (ix = index; ix -- > 0; ) … … 181 167 /* 182 168 * find_pfxlist_reachable_router -- 183 * æå®ãããã¬ãã£ãã¯ã¹ãéç¥ããã«ã¼ã¿ããªã³ã¯ä¸ã«åå¨ããããã§ãã¯ããã169 * 指定したプレフィックスを通知したルータがリンク上に存在するかチェックする。 184 170 */ 185 171 … … 205 191 206 192 /* 207 * pfxlist_onlink_check -- ãã¬ãã£ãã¯ã¹ã»ãªã¹ãã®ãªã³ãªã³ã¯ç¶æ 208 ããã§ãã¯ããã 193 * pfxlist_onlink_check -- プレフィックス・リストのオンリンク状態をチェックする。 209 194 * 210 * 注æ: ãã®é¢æ°ãå¼ã³åºãã¨ãã¯ãSEM_ND6_DEFRTRLIST ã§ã211 * ããã¯ãã¦ããå¼ã³åºããã¨ã195 * 注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、 196 * ロックしてから呼び出すこと。 212 197 */ 213 198 … … 230 215 if (ix >= 0) { 231 216 /* 232 * ãªã³ãªã³ã¯ç¶æ 233 ã®ãã¬ãã£ãã¯ã¹ãæä½ä¸ã¤åå¨ããã¨ãã®å¦çã 234 * åãã¬ãã£ãã¯ã¹ã®ãªã³ãªã³ã¯ç¶æ 235 ããããããéç¥ãã¦ããã«ã¼ã¿ã® 236 * ç¶æ 237 ã«å¾ã£ã¦è¨å®ããã 217 * オンリンク状態のプレフィックスが最低一つ存在するときの処理。 218 * 各プレフィックスのオンリンク状態を、それらを通知してきたルータの 219 * 状態に従って設定する。 238 220 */ 239 221 … … 256 238 else { 257 239 /* 258 * ã©ã®ãã¬ãã£ãã¯ã¹ããªã³ãªã³ã¯ã§ã¯ãªãã 259 * ãã£ãã©ã«ãã«ã¼ã¿ãåå¨ããªãã¨ãã®å¦çã 260 * ãã¹ã¦ã®ãã¬ãã£ãã¯ã¹ã使ç¨å¯è½ç¶æ 261 ã«è¨å®ããã 240 * どのプレフィックスもオンリンクではなく、 241 * ディフォルトルータも存在しないときの処理。 242 * すべてのプレフィックスを使用可能状態に設定する。 262 243 */ 263 244 … … 275 256 276 257 /* 277 * åãã¬ãã£ãã¯ã¹æ¯ã«ãéç¥ãã¦ããã«ã¼ã¿ã®ç¶æ 278 㨠279 * ãªã³ãªã³ã¯ã®ç¶æ 280 ãä¸è´ããªããã°ããªã³ãªã³ã¯ç¶æ 281 ãæ´æ°ããã 258 * 各プレフィックス毎に、通知してきたルータの状態と 259 * オンリンクの状態が一致しなければ、オンリンク状態を更新する。 282 260 */ 283 261 for (ix = NUM_ND6_PREFIX_ENTRY; ix -- > 0; ) { … … 302 280 303 281 /* 304 * ãªã³ã¯ä¸ã«ãã¬ãã£ãã¯ã¹ãéç¥ãã¦ããã«ã¼ã¿ã305 * å°ãªãã¨ã 1 å°åå¨ããã確èªããã282 * リンク上にプレフィックスを通知しているルータが 283 * 少なくとも 1 台存在するか確認する。 306 284 */ 307 285 for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) { … … 317 295 if (ix >= 0) { 318 296 /* 319 * ãªã³ã¯ä¸ã«ãã¬ãã£ãã¯ã¹ãéç¥ãã¦ããã«ã¼ã¿ã320 * å°ãªãã¨ã 1 å°åå¨ããæã®å¦çã297 * リンク上にプレフィックスを通知しているルータが 298 * 少なくとも 1 台存在する時の処理。 321 299 */ 322 300 for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) { … … 334 312 else { 335 313 /* 336 * ãªã³ã¯ä¸ã«ãã¬ãã£ãã¯ã¹ãéç¥ãã¦ããã«ã¼ã¿ã 337 * 1 å°åå¨ããªãæã¯å 338 ¨ã¦ã®ã¢ãã¬ã¹ãå©ç¨ã§ããããã«ããã 314 * リンク上にプレフィックスを通知しているルータが 315 * 1 台存在しない時は全てのアドレスを利用できるようにする。 339 316 */ 340 317 for (ix = NUM_IN6_IFADDR_ENTRY; ix -- > 0; ) { … … 347 324 348 325 /* 349 * pfxrtr_add -- ãã¬ãã£ãã¯ã¹ã¨ã³ããªã¨ãã£ãã©ã«ãã«ã¼ã¿ã»ã¨ã³ããªããªã³ã¯ããã326 * pfxrtr_add -- プレフィックスエントリとディフォルトルータ・エントリをリンクする。 350 327 * 351 * 注æ: ãã®é¢æ°ãå¼ã³åºãã¨ãã¯ãSEM_ND6_DEFRTRLIST ã§ã352 * ããã¯ãã¦ããå¼ã³åºããã¨ã328 * 注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、 329 * ロックしてから呼び出すこと。 353 330 */ 354 331 … … 356 333 pfxrtr_add (int_t prefix_index, int_t rtr_index) 357 334 { 358 /* ãã¬ãã£ãã¯ã¹ã¨ã³ããªã¨ãã£ãã©ã«ãã«ã¼ã¿ã»ã¨ã³ããªããªã³ã¯ããã*/335 /* プレフィックスエントリとディフォルトルータ・エントリをリンクする。*/ 359 336 nd6_prefix[prefix_index].routermap |= make_mask(rtr_index); 360 337 nd6_def_router[rtr_index].plistmap |= make_mask(prefix_index); … … 364 341 365 342 /* 366 * nd6_pfxrtr_lookup -- ãã¬ãã£ãã¯ã¹ã¨ã³ããªããã«ã¼ã¿ãæ¢ç´¢ããã343 * nd6_pfxrtr_lookup -- プレフィックスエントリからルータを探索する。 367 344 */ 368 345 … … 374 351 375 352 /* 376 * defrouter_select -- åªå 377 ãã£ãã©ã«ãã»ã«ã¼ã¿ãé¸æããªããã 353 * defrouter_select -- 優先ディフォルト・ルータを選択しなおす。 378 354 * 379 * 注æ: ãã®é¢æ°ãå¼ã³åºãã¨ãã¯ãSEM_ND6_DEFRTRLIST ã§ã380 * ããã¯ãã¦ããå¼ã³åºããã¨ã355 * 注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、 356 * ロックしてから呼び出すこと。 381 357 */ 382 358 … … 392 368 if ((ln = nd6_lookup(&dr->addr, false)) != NULL && ND6_IS_LLINFO_PROBREACH(ln)) { 393 369 394 /* é¸æããã«ã¼ã¿ãå 395 é ã«ç§»ãã*/ 370 /* 選択したルータを先頭に移す。*/ 396 371 router = *dr; 397 372 for (tix = ix; tix > 0; tix --) … … 404 379 405 380 /* 406 * defrtrlist_update -- ãã£ãã©ã«ãã«ã¼ã¿ã»ãªã¹ããæ´æ°ããã381 * defrtrlist_update -- ディフォルトルータ・リストを更新する。 407 382 * 408 * æ»ãå¤ã¯ãã«ã¼ã¿ã®ã¤ã³ããã¯ã¹ã409 * ãã ããå¤ã -1 ãªãããã¬ãã£ãã¯ã¹ã»ãªã¹ãã¯æ´æ°ããªãã383 * 戻り値は、ルータのインデックス。 384 * ただし、値が -1 なら、プレフィックス・リストは更新しない。 410 385 */ 411 386 … … 420 395 syscall(wai_sem(SEM_ND6_DEFRTRLIST)); 421 396 422 /* ç»é²æ¸ã調ã¹ãã*/397 /* 登録済か調べる。*/ 423 398 if ((fdr = nd6_defrtrlist_lookup(src)) != NULL) { 424 /* ç»é²æ¸ã¿ã®å ´åã®å¦ç*/399 /* 登録済みの場合の処理 */ 425 400 if (lifetime == 0) { 426 401 nd6_defrtrlist_del(fdr); … … 429 404 } 430 405 else { 431 fdr->lifetime = lifetime * SYSTIM_HZ; /* lifetime ã®åä½ã¯ç§*/406 fdr->lifetime = lifetime * SYSTIM_HZ; /* lifetime の単位は秒 */ 432 407 fdr->flags = flags; 433 408 fdr->expire = now + fdr->lifetime; … … 443 418 if (fdr == NULL && def_router_count < NUM_ND6_DEF_RTR_ENTRY) { 444 419 /* 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]; が空きエントリ 447 422 */ 448 423 fdr = &nd6_def_router[def_router_count]; 449 424 } 450 425 451 /* 空ãã¨ã³ããªããªããã°ãæå¹æéãçãã¨ã³ããªãåé¤ããã*/426 /* 空きエントリがなければ、有効時間が短いエントリを削除する。*/ 452 427 if (fdr == NULL) { 453 428 T_DEF_ROUTER *sdr = NULL; … … 458 433 diff = (int32_t)(dr->expire - now); 459 434 if (diff <= 0) { /* dr->expire <= now */ 460 /* æ¢ã«ãæå¹æéãéãã¦ããã*/435 /* 既に、有効時間が過ぎている。*/ 461 436 sdr = dr; 462 437 break; … … 471 446 } 472 447 473 /* åã¡ã³ãã«å¤ãè¨å®ããã*/448 /* 各メンバに値を設定する。*/ 474 449 fdr->plistmap = 0; 475 450 memcpy(&fdr->addr, src, sizeof(T_IN6_ADDR)); 476 fdr->lifetime = lifetime * SYSTIM_HZ; /* lifetime ã®åä½ã¯ç§*/451 fdr->lifetime = lifetime * SYSTIM_HZ; /* lifetime の単位は秒 */ 477 452 fdr->flags = flags; 478 453 fdr->expire = now + fdr->lifetime; … … 481 456 482 457 /* 483 * ãã£ãã©ã«ãã«ã¼ã¿ã¨ãã¦ç»é²ãããã484 * æ¢ã«ãã£ãã©ã«ãã«ã¼ã¿ãããã°é¸æããªãããªãã458 * ディフォルトルータとして登録するが、 459 * 既にディフォルトルータがあれば選択しなおさない。 485 460 */ 486 461 if (fdr - nd6_def_router != 0) … … 492 467 493 468 /* 494 * in6_ifadd -- ã¤ã³ã¿ãã§ã¼ã¹ã«ã¢ãã¬ã¹ã追å ããã469 * in6_ifadd -- インタフェースにアドレスを追加する。 495 470 */ 496 471 … … 506 481 507 482 /* 508 * ãªã³ã¯ãã¼ã«ã«ã¢ãã¬ã¹ãæªç»é²ã§ããã°ä½ãããªãã483 * リンクローカルアドレスが未登録であれば何もしない。 509 484 */ 510 485 if ((lla->flags & IN6_IFF_DEFINED) == 0) … … 512 487 513 488 /* 514 * ã«ã¼ã¿ããéç¥ããããã¬ãã£ãã¯ã¹é·ãã515 * ãªã³ã¯ãã¼ã«ã«ã¢ãã¬ã¹ã®ãã¬ãã£ãã¯ã¹é·ã¨516 * ç°ãªã£ã¦ããã°ã¨ã©ã¼489 * ルータから通知されたプレフィックス長が、 490 * リンクローカルアドレスのプレフィックス長と 491 * 異なっていればエラー 517 492 */ 518 493 if (lla->prefix_len != pr->prefix_len) 519 494 return E_PAR; 520 495 521 /* ãã¬ãã£ãã¯ã¹ãã¹ã¯ãçæããã*/496 /* プレフィックスマスクを生成する。*/ 522 497 in6_plen2pmask(&mask, pr->prefix_len); 523 498 524 /* ã¢ãã¬ã¹ãçæããã*/499 /* アドレスを生成する。*/ 525 500 for (ix = 0; ix < 4; ix ++) 526 501 addr.s6_addr32[ix] = (pr->prefix.s6_addr32[ix] & mask.s6_addr32[ix]) 527 502 | ( lla->addr.s6_addr32[ix] & ~mask.s6_addr32[ix]); 528 503 529 /* ãã©ã°ãåæåããã*/504 /* フラグを初期化する。*/ 530 505 ia->flags = 0; 531 506 … … 536 511 537 512 /* 538 * nd6_prefix_lookup -- ãã¬ãã£ãã¯ã¹ãæ¢ç´¢ããã513 * nd6_prefix_lookup -- プレフィックスを探索する。 539 514 */ 540 515 … … 556 531 557 532 /* 558 * prelist_remove -- ãã¬ãã£ãã¯ã¹ãªã¹ããããã¬ãã£ãã¯ã¹ãåé¤ããã533 * prelist_remove -- プレフィックスリストからプレフィックスを削除する。 559 534 * 560 * 注æ: ãã®é¢æ°ãå¼ã³åºãã¨ãã¯ãSEM_ND6_DEFRTRLIST ã§ã561 * ããã¯ãã¦ããå¼ã³åºããã¨ã535 * 注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、 536 * ロックしてから呼び出すこと。 562 537 */ 563 538 … … 569 544 int_t rix; 570 545 571 /* æå¹æéåãã«ããã*/546 /* 有効時間切れにする。*/ 572 547 pr->vltime = 0; 573 548 pr->pltime = 0; … … 579 554 } 580 555 581 /* ãã¬ãã£ãã¯ã¹ã¨ã³ããªã¨ãã£ãã©ã«ãã«ã¼ã¿ã»ã¨ã³ããªã®ãªã³ã¯ã解é¤ããã*/556 /* プレフィックスエントリとディフォルトルータ・エントリのリンクを解除する。*/ 582 557 pr->routermap = 0; 583 558 mask = make_mask(pr - nd6_prefix); … … 585 560 nd6_def_router[rix].plistmap &= ~mask; 586 561 587 /* ãã¬ãã£ãã¯ã¹ãç¡å¹ã«ããã*/562 /* プレフィックスを無効にする。*/ 588 563 pr->flags &= ~ND6_PREFIX_STATE_BUSY; 589 564 … … 592 567 593 568 /* 594 * nd6_prefix_onlink -- ãã¬ãã£ãã¯ã¹ããªã³ãªã³ã¯ã«è¨å®ããã¢ãã¬ã¹ã使ç¨å¯è½ã«ããã569 * nd6_prefix_onlink -- プレフィックスをオンリンクに設定し、アドレスを使用可能にする。 595 570 * 596 * 注æ: ãã®é¢æ°ãå¼ã³åºãã¨ãã¯ãSEM_ND6_DEFRTRLIST ã§ã597 * ããã¯ãã¦ããå¼ã³åºããã¨ã571 * 注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、 572 * ロックしてから呼び出すこと。 598 573 */ 599 574 … … 605 580 int_t ix; 606 581 607 /* æ¢ã«ãªã³ãªã³ã¯ç¶æ 608 ã«ãªã£ã¦ããå ´åã¯ã¨ã©ã¼ã*/ 582 /* 既にオンリンク状態になっている場合はエラー。*/ 609 583 if ((pr->flags & ND6_PREFIX_STATE_ONLINK) != 0) 610 584 return E_OBJ; 611 585 612 /* ãªã³ã¯ãã¼ã«ã«ã¢ãã¬ã¹ãæªç»é²ã§ããã°ä½ãããªãã*/586 /* リンクローカルアドレスが未登録であれば何もしない。*/ 613 587 lla = &ifp->in6_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL]; 614 588 if ((lla->flags & IN6_IFF_DEFINED) == 0) … … 616 590 617 591 /* 618 * æå®ããããã¬ãã£ãã¯ã¹ãå²ãå½ã¦ããã¦ããã¤ã³ã¿ãã§ã¼ã¹ã® 619 * ã¢ãã¬ã¹æ 620 å ±ãæ¢ãã 592 * 指定されたプレフィックスが割り当てられているインタフェースの 593 * アドレス情報を探す。 621 594 */ 622 595 for (ix = NUM_IN6_IFADDR_ENTRY; ix --; ) { … … 628 601 if (ix >= 0) { 629 602 630 /* ã¢ãã¬ã¹æ 631 å ±ã使ç¨å¯è½ã«ããã*/ 603 /* アドレス情報を使用可能にする。*/ 632 604 ia->flags &= ~IN6_IFF_DETACHED; 633 605 634 /* ãã¬ãã£ãã¯ã¹ããªã³ãªã³ã¯ã«è¨å®ããã*/606 /* プレフィックスをオンリンクに設定する。*/ 635 607 pr->flags |= ND6_PREFIX_STATE_ONLINK; 636 608 } … … 640 612 641 613 /* 642 * nd6_prefix_offlink -- ãã¬ãã£ãã¯ã¹ããªããªã³ã¯ã«è¨å®ããã¢ãã¬ã¹ã使ç¨ä¸å¯ã«ããã614 * nd6_prefix_offlink -- プレフィックスをオフリンクに設定し、アドレスを使用不可にする。 643 615 * 644 * 注æ: ãã®é¢æ°ãå¼ã³åºãã¨ãã¯ãSEM_ND6_DEFRTRLIST ã§ã645 * ããã¯ãã¦ããå¼ã³åºããã¨ã616 * 注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、 617 * ロックしてから呼び出すこと。 646 618 */ 647 619 … … 653 625 int_t ix; 654 626 655 /* æ¢ã«ãªããªã³ã¯ç¶æ 656 ã«ãªã£ã¦ããå ´åã¯ã¨ã©ã¼ã*/ 627 /* 既にオフリンク状態になっている場合はエラー。*/ 657 628 if ((pr->flags & ND6_PREFIX_STATE_ONLINK) == 0) 658 629 return E_OBJ; 659 630 660 631 /* 661 * æå®ããããã¬ãã£ãã¯ã¹ãå²ãå½ã¦ããã¦ããã¤ã³ã¿ãã§ã¼ã¹ã® 662 * ã¢ãã¬ã¹æ 663 å ±ãæ¢ãã 632 * 指定されたプレフィックスが割り当てられているインタフェースの 633 * アドレス情報を探す。 664 634 */ 665 635 for (ix = NUM_IN6_IFADDR_ENTRY; ix --; ) { … … 671 641 if (ix >= 0) { 672 642 673 /* ã¢ãã¬ã¹æ 674 å ±ã使ç¨ä¸å¯ã«ããã*/ 643 /* アドレス情報を使用不可にする。*/ 675 644 ia->flags |= IN6_IFF_DETACHED; 676 645 677 /* ãã¬ãã£ãã¯ã¹ããªããªã³ã¯ã«è¨å®ããã*/646 /* プレフィックスをオフリンクに設定する。*/ 678 647 pr->flags &= ~ND6_PREFIX_STATE_ONLINK; 679 648 } … … 683 652 684 653 /* 685 * in6_init_prefix_ltimes -- ãã¬ãã£ãã¯ã¹ã®æå¹æéãè¨å®ããã654 * in6_init_prefix_ltimes -- プレフィックスの有効時間を設定する。 686 655 */ 687 656 … … 691 660 SYSTIM now; 692 661 693 /* æ¨å¥¨æå¹æéãæå¹æéããé·ãã¨ãã¯ã¨ã©ã¼*/662 /* 推奨有効時間が有効時間より長いときはエラー */ 694 663 if (pr->pltime > pr->vltime) 695 664 return E_PAR; … … 712 681 713 682 /* 714 * nd6_prelist_add -- ãã¬ãã£ãã¯ã¹ãªã¹ãã«ãã¬ãã£ãã¯ã¹ã追å ããã683 * nd6_prelist_add -- プレフィックスリストにプレフィックスを追加する。 715 684 * 716 * 注æ: ãã®é¢æ°ãå¼ã³åºãã¨ãã¯ãSEM_ND6_DEFRTRLIST ã§ã717 * ããã¯ãã¦ããå¼ã³åºããã¨ã685 * 注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、 686 * ロックしてから呼び出すこと。 718 687 */ 719 688 … … 724 693 int_t ix; 725 694 726 /* ãã¬ãã£ãã¯ã¹ãªã¹ããã空ãã®ãã¬ãã£ãã¯ã¹ã¨ã³ããªãæ¢ç´¢ããã*/695 /* プレフィックスリストから空きのプレフィックスエントリを探索する。*/ 727 696 for (ix = NUM_ND6_PREFIX_ENTRY; ix --; ) { 728 697 pr = &nd6_prefix[ix]; … … 731 700 } 732 701 733 /* ãã¬ãã£ãã¯ã¹ãªã¹ãã«ç©ºãããªããã°ã¨ã©ã¼*/702 /* プレフィックスリストに空きがなければエラー */ 734 703 if (ix < 0) 735 704 return NULL; … … 737 706 pr->flags |= ND6_PREFIX_STATE_BUSY; 738 707 739 /* ãã¬ãã£ãã¯ã¹ã追å ããã*/708 /* プレフィックスを追加する。*/ 740 709 pr->prefix = pi->prefix; 741 710 pr->prefix_len = pi->prefix_len; 742 711 743 /* ãã©ã°ãè¨å®ããã*/712 /* フラグを設定する。*/ 744 713 if ((pi->flags & ND_OPT_PI_FLAG_ONLINK) != 0) 745 714 pr->flags |= ND6_PREFIX_FLAG_ONLINK; … … 747 716 pr->flags |= ND6_PREFIX_FLAG_AUTO; 748 717 749 /* ãã¬ãã£ãã¯ã¹ã®æå¹æéãè¨å®ããã*/718 /* プレフィックスの有効時間を設定する。*/ 750 719 pr->vltime = ntohl(pi->valid); 751 720 pr->pltime = ntohl(pi->preferred); … … 757 726 } 758 727 759 /* ã«ã¼ã¿ããããåæåããã*/728 /* ルータマップを初期化する。*/ 760 729 pr->routermap = 0; 761 730 762 /* ã«ã¼ã¿ã追å ããã*/731 /* ルータを追加する。*/ 763 732 pfxrtr_add(pr - nd6_prefix, rtr_index); 764 733 … … 767 736 768 737 /* 769 * prelist_update -- ãã¬ãã£ãã¯ã¹ã»ãªã¹ããæ´æ°ããã738 * prelist_update -- プレフィックス・リストを更新する。 770 739 */ 771 740 … … 781 750 if ((pr = nd6_prefix_lookup(&pi->prefix, pi->prefix_len)) != NULL) { 782 751 /* 783 * ç»é²æ¸ã¿ã®å ´åã¯ããã¬ãã£ãã¯ã¹ãªã¹ããæ´æ°ããã752 * 登録済みの場合は、プレフィックスリストを更新する。 784 753 */ 785 754 786 755 /* 787 * ãã©ã°ã®æ´æ°ã®æ³¨æ:788 * on-link ããã㨠autonomous ãããã¯789 * 1 ãã 0 ã«å¤æ´ãã¦ã¯ãªããªãã756 * フラグの更新の注意: 757 * on-link ビットと autonomous ビットは 758 * 1 から 0 に変更してはならない。 790 759 */ 791 760 … … 797 766 if ((pi->flags & ND_OPT_PI_FLAG_ONLINK) != 0) { 798 767 /* 799 * éç¥ããããã¬ãã£ãã¯ã¹ããªã³ãªã³ã¯ã®æã¯ã800 * æå¹æéãæ´æ°ããã768 * 通知されたプレフィックスがオンリンクの時は、 769 * 有効時間を更新する。 801 770 */ 802 771 pr->vltime = ntohl(pi->valid); … … 808 777 (pr->flags & ND6_PREFIX_STATE_ONLINK) == 0) { 809 778 /* 810 * ãªããªã³ã¯ã®ãã¬ãã£ãã¯ã¹ããªã³ãªã³ã¯ã«ãªã£ãæã®å¦çãå®è¡ããã779 * オフリンクのプレフィックスがオンリンクになった時の処理を実行する。 811 780 */ 812 781 if (nd6_prefix_onlink(pr) != E_OK) { … … 820 789 pfxrtr_add(pr - nd6_prefix, router_index); 821 790 } 822 else { /* æªç»é²ã®å ´å*/823 824 /* æå¹æé 0 ã®ãã¬ãã£ãã¯ã¹ã¯è¿½å ããªãã*/791 else { /* 未登録の場合 */ 792 793 /* 有効時間 0 のプレフィックスは追加しない。*/ 825 794 if (pi->valid == 0) { 826 795 syscall(sig_sem(SEM_ND6_DEFRTRLIST)); … … 828 797 } 829 798 830 /* ãªããªã³ã¯ã§ã¢ãã¬ã¹èªåè¨å®ã«ä½¿ç¨ããªããã°è¿½å ããªãã*/799 /* オフリンクでアドレス自動設定に使用しなければ追加しない。*/ 831 800 if ((pi->flags & (ND_OPT_PI_FLAG_ONLINK | ND_OPT_PI_FLAG_AUTO)) != 832 801 (ND_OPT_PI_FLAG_ONLINK | ND_OPT_PI_FLAG_AUTO)) { … … 835 804 } 836 805 837 /* ãã¬ãã£ãã¯ã¹ã追å ããã*/806 /* プレフィックスを追加する。*/ 838 807 if ((pr = nd6_prelist_add(pi, router_index)) == NULL) { 839 808 syslog(LOG_ERROR, "[ND6 RTR] prefix add failed."); … … 842 811 } 843 812 844 #if 1 /* ãã¬ãã£ãã¯ã¹ãæªç»é²ã®å ´åã ã表示ããã*/813 #if 1 /* プレフィックスが未登録の場合だけ表示する。*/ 845 814 syslog(LOG_NOTICE, "[ND6 RTR] add prefix: flags[MOH]: %02x, addr: %s\n" 846 815 " from: %s.", … … 851 820 if ((pr->flags & ND6_PREFIX_FLAG_ONLINK) == 0) { 852 821 /* 853 * ãªããªã³ã¯ã»ãã¬ãã£ãã¯ã¹ã®å ´åã¯ãæå¹æéã 0 ã«è¨å®ããã854 * ãã¨ã§æå¹æéåãã¨ãªãããªã¹ãããåé¤ãããã822 * オフリンク・プレフィックスの場合は、有効時間を 0 に設定する。 823 * あとで有効期限切れとなり、リストから削除される。 855 824 */ 856 825 pr->vltime = 0; … … 861 830 862 831 /* 863 * ã¹ãã¼ãã¬ã¹ã»ã¢ãã¬ã¹èªåè¨å®ãè¡ãã832 * ステートレス・アドレス自動設定を行う。 864 833 */ 865 834 if ((pr->flags & ND6_PREFIX_FLAG_AUTO) == 0) { … … 869 838 870 839 /* 871 * éç¥ããããã¬ãã£ãã¯ã¹ãå²ãå½ã¦ããã¦ããã¤ã³ã¿ãã§ã¼ã¹ã® 872 * ã¢ãã¬ã¹æ 873 å ±ãæ¢ãã 840 * 通知されたプレフィックスが割り当てられているインタフェースの 841 * アドレス情報を探す。 874 842 */ 875 843 for (ix = NUM_IN6_IFADDR_ENTRY; ix --; ) { … … 881 849 } 882 850 883 if (ix >= 0) { /* ç»é²æ¸ã¿ã®ã¨ã*/851 if (ix >= 0) { /* 登録済みのとき */ 884 852 if ((ia->flags & IN6_IFF_AUTOCONF) == 0) { 885 853 /* 886 * ã¹ãã¼ãã¬ã¹ã»ã¢ãã¬ã¹èªåè¨å®ã«ãã887 * è¨å®ããã¦ããªããã°æ´æ°ããªãã854 * ステートレス・アドレス自動設定により 855 * 設定されていなければ更新しない。 888 856 */ 889 857 ; … … 891 859 else if (ia->flags & IN6_IFF_TENTATIVE) { 892 860 /* 893 * éè¤æ¤åºä¸ãªãæ´æ°ããªãã861 * 重複検出中なら更新しない。 894 862 */ 895 863 ; … … 902 870 int_t ix; 903 871 904 /* æå¹æéãè¨å®ããã*/872 /* 有効時間を設定する。*/ 905 873 syscall(get_tim(&now)); 906 874 … … 914 882 if (pr->vltime > (2 * 60 * 60) || pr->vltime > vltime) { 915 883 /* 916 * lifetime.expire ãpi->valid (æå¹æé) ã¨917 * pi->preferred ( æ¨å¥¨æå¹æé) ã®åä½ã¯ [s]ã918 * éç¥ãããæå¹æéã 2 æé以ä¸ããç¾å¨ã®æ®ãæéãã919 * é·ããã°ãæ°ããæå¹æéã«ã¯ãéç¥ãããæå¹æéãè¨å®ããã884 * lifetime.expire、pi->valid (有効時間) と 885 * pi->preferred (推奨有効時間) の単位は [s]。 886 * 通知された有効時間が 2 時間以上か、現在の残り時間より 887 * 長ければ、新しい有効時間には、通知された有効時間を設定する。 920 888 */ 921 889 vltime = pr->vltime; … … 925 893 else { 926 894 /* 927 * IPsec ã¯æªå®è£ 928 ã®ããã2 æéãè¨å®ããã 895 * IPsec は未実装のため、2 時間を設定する。 929 896 */ 930 897 vltime = 2 * 60 * 60; … … 933 900 lla = &ifp->in6_ifaddrs[IPV6_IFADDR_IX_LINKLOCAL]; 934 901 935 /* ãã¬ãã£ãã¯ã¹ãã¹ã¯ãçæããã*/902 /* プレフィックスマスクを生成する。*/ 936 903 in6_plen2pmask(&mask, pr->prefix_len); 937 904 938 /* ã¢ãã¬ã¹ãçæããã*/905 /* アドレスを生成する。*/ 939 906 for (ix = 0; ix < 4; ix ++) 940 907 addr.s6_addr32[ix] = (pr->prefix.s6_addr32[ix] & mask.s6_addr32[ix]) … … 947 914 } 948 915 949 else { /* æªç»é²ã®ã¨ã*/916 else { /* 未登録のとき */ 950 917 951 918 /* 952 * ãã¬ãã£ãã¯ã¹é·ããã§ãã¯ããã 953 * ããããã¬ãã£ãã¯ã¹é·ã¨ã¤ã³ã¿ãã§ã¼ã¹ ID ã®åè¨ã 954 * 128 ãããã«ä¸è´ããªãæã¯ããã¬ãã£ãã¯ã¹æ 955 å ±ãç¡è¦ããã 919 * プレフィックス長をチェックする。 920 * もし、プレフィックス長とインタフェース ID の合計が 921 * 128 ビットに一致しない時は、プレフィックス情報を無視する。 956 922 */ 957 923 if ((ifidlen = in6_if2idlen(ifp)) < 0) … … 978 944 979 945 /* 980 * nd6_prelist_timer -- ãã¬ãã£ãã¯ã¹ã»ãªã¹ãã®ç®¡çã¿ã¤ãã¼946 * nd6_prelist_timer -- プレフィックス・リストの管理タイマー 981 947 */ 982 948 … … 989 955 990 956 syscall(get_tim(&now)); 991 now /= SYSTIM_HZ; /* æå¹æéã®åä½ã¯[s] */957 now /= SYSTIM_HZ; /* 有効時間の単位は [s] */ 992 958 993 959 syscall(wai_sem(SEM_ND6_DEFRTRLIST)); … … 1002 968 1003 969 /* 1004 * nd6_rs_output -- ã«ã¼ã¿è¦è«ãåºåããã970 * nd6_rs_output -- ルータ要請を出力する。 1005 971 */ 1006 972 … … 1017 983 1018 984 /* 1019 * éä¿¡å 1020 ã¢ãã¬ã¹ã«ã¯ããªã³ã¯ãã¼ã«ã«ã¢ãã¬ã¹ãè¨å®ãããã 1021 * ã¾ã è¨å®ããããªããã°ãç¡æå®ãè¨å®ããã 985 * 送信元アドレスには、リンクローカルアドレスを設定するが、 986 * まだ設定されいなければ、無指定を設定する。 1022 987 */ 1023 988 if ((ifa = in6ifa_ifpwithix(IF_GET_IFNET(), IPV6_IFADDR_IX_LINKLOCAL)) != NULL && !IFA6_IS_NOTREADY(ifa)) … … 1028 993 len = (ROUTER_SOLICIT_HDR_SIZE + 7) >> 3 << 3; 1029 994 1030 /* ãããã¯ã¼ã¯ãããã¡ãç²å¾ããIPv6 ããããè¨å®ããã*/995 /* ネットワークバッファを獲得し、IPv6 ヘッダを設定する。*/ 1031 996 if (in6_get_datagram(&output, len, 0, &in6_addr_linklocal_allrouters, 1032 997 saddr, IPPROTO_ICMPV6, … … 1034 999 return; 1035 1000 1036 /* ã«ã¼ã¿è¦è«ããããè¨å®ããã*/1001 /* ルータ要請ヘッダを設定する。*/ 1037 1002 rsh = GET_ROUTER_SOLICIT_HDR(output, IF_IP6_ROUTER_SOLICIT_HDR_OFFSET); 1038 1003 rsh->hdr.type = ND_ROUTER_SOLICIT; … … 1040 1005 rsh->nd_rs_reserved = 0; 1041 1006 1042 /* ãã§ãã¯ãµã ãè¨ç®ããã*/1007 /* チェックサムを計算する。*/ 1043 1008 rsh->hdr.sum = 0; 1044 1009 rsh->hdr.sum = in6_cksum(output, IPPROTO_ICMPV6, (uint8_t*)rsh - output->buf, len); 1045 1010 1046 /* éä¿¡ããã*/1011 /* 送信する。*/ 1047 1012 NET_COUNT_ICMP6(net_count_nd6[NC_ICMP6_OUT_OCTETS], 1048 1013 output->len - GET_IF_IP6_HDR_SIZE(output)); … … 1054 1019 1055 1020 /* 1056 * nd6_defrtrlist_lookup -- ãã£ãã©ã«ãã«ã¼ã¿ã»ãªã¹ããæ¢ç´¢ããã1021 * nd6_defrtrlist_lookup -- ディフォルトルータ・リストを探索する。 1057 1022 */ 1058 1023 … … 1073 1038 1074 1039 /* 1075 * nd6_router_lookup -- ã«ã¼ã¿ã®ã¢ãã¬ã¹ãè¿ãã1040 * nd6_router_lookup -- ルータのアドレスを返す。 1076 1041 * 1077 1042 */ … … 1087 1052 1088 1053 /* 1089 * nd6_defrtrlist_del -- ãã£ãã©ã«ãã«ã¼ã¿ã»ãªã¹ãããã«ã¼ã¿ãåé¤ããã1054 * nd6_defrtrlist_del -- ディフォルトルータ・リストからルータを削除する。 1090 1055 * 1091 * 注æ: ãã®é¢æ°ãå¼ã³åºãã¨ãã¯ãSEM_ND6_DEFRTRLIST ã§ã1092 * ããã¯ãã¦ããå¼ã³åºããã¨ã1056 * 注意: この関数を呼び出すときは、SEM_ND6_DEFRTRLIST で、 1057 * ロックしてから呼び出すこと。 1093 1058 */ 1094 1059 … … 1104 1069 if ((ia = in6ifa_ifpwithrtrix(ifp, rtrix)) != NULL) { 1105 1070 /* 1106 * ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã®ãã¬ãã£ãã¯ã¹ãéç¥ãã1107 * ã«ã¼ã¿ãå°éä¸è½ã«ããã1071 * ネットワークインタフェースのプレフィックスを通知した 1072 * ルータを到達不能にする。 1108 1073 */ 1109 1074 ia->router_index = IN6_RTR_IX_UNREACH; 1110 1075 } 1111 1076 1112 /* ãã¬ãã£ãã¯ã¹ãªã¹ãããã«ã¼ã¿ãåé¤ããã*/1077 /* プレフィックスリストからルータを削除する。*/ 1113 1078 mask = make_mask(rtrix); 1114 1079 for (pix = NUM_ND6_PREFIX_ENTRY; pix --; ) 1115 1080 nd6_prefix[pix].routermap &= ~mask; 1116 1081 1117 /* åé¤ããã«ã¼ã¿ä»¥éãåã«è©°ããã*/1082 /* 削除したルータ以降を前に詰める。*/ 1118 1083 for (rix = rtrix + 1; rix < def_router_count; rix ++) 1119 1084 nd6_def_router[rix - 1] = nd6_def_router[rix]; 1120 1085 1121 /* ãã¬ãã£ãã¯ã¹ãªã¹ãã®ã«ã¼ã¿ãæ´æ°ããã*/1086 /* プレフィックスリストのルータも更新する。*/ 1122 1087 if (dr != nd6_def_router) { 1123 1088 1124 /* ãã¹ã¯ãçæããã*/1089 /* マスクを生成する。*/ 1125 1090 mask = 1; 1126 1091 for (ix = rtrix - 1; ix -- > 0; ) … … 1134 1099 def_router_count --; 1135 1100 1136 /* ãã¬ãã£ãã¯ã¹ã®ãªã³ãªã³ã¯ç¶æ 1137 ã確èªããã*/ 1101 /* プレフィックスのオンリンク状態を確認する。*/ 1138 1102 pfxlist_onlink_check(); 1139 1103 1140 1104 /* 1141 * åé¤ããã«ã¼ã¿ãåªå 1142 ãã£ãã©ã«ãã«ã¼ã¿ã®å ´åã¯ã 1143 * åªå 1144 ãã£ãã©ã«ãã«ã¼ã¿ãé¸æããªããã 1105 * 削除するルータが優先ディフォルトルータの場合は、 1106 * 優先ディフォルトルータを選択しなおす。 1145 1107 */ 1146 1108 if (rtrix == 0) … … 1149 1111 1150 1112 /* 1151 * nd6_defrtrlist_timer -- ãã£ãã©ã«ãã«ã¼ã¿ã»ãªã¹ãã®ç®¡çã¿ã¤ãã¼1113 * nd6_defrtrlist_timer -- ディフォルトルータ・リストの管理タイマー 1152 1114 */ 1153 1115 … … 1173 1135 1174 1136 /* 1175 * nd6_get_drl -- ãã£ãã©ã«ãã«ã¼ã¿ã»ãªã¹ããç²å¾ããã1137 * nd6_get_drl -- ディフォルトルータ・リストを獲得する。 1176 1138 */ 1177 1139 … … 1184 1146 1185 1147 /* 1186 * nd6_get_prl -- ãã¬ãã£ãã¯ã¹ã»ãªã¹ããç²å¾ããã1148 * nd6_get_prl -- プレフィックス・リストを獲得する。 1187 1149 */ 1188 1150 … … 1196 1158 1197 1159 /* 1198 * nd6_ra_input -- ã«ã¼ã¿éç¥ã®å 1199 ¥åå¦çã 1160 * nd6_ra_input -- ルータ通知の入力処理。 1200 1161 */ 1201 1162 … … 1221 1182 1222 1183 /* 1223 * ãããã®ãã§ãã¯ã以ä¸ã®å ´åã¯ç ´æ£ããã1224 * ã»ããããªãããã IPV6_MAXHLIM (255) 以å¤1225 * ã»ãããé·ãçã1226 * ã»å§ç¹ã¢ãã¬ã¹ãããªã³ã¯ãã¼ã«ã«ã§ã¯ãªã(RFC2461)1184 * ヘッダのチェック、以下の場合は破棄する。 1185 * ・ホップリミットが IPV6_MAXHLIM (255) 以外 1186 * ・ヘッダ長が短い 1187 * ・始点アドレスが、リンクローカルではない (RFC2461) 1227 1188 */ 1228 1189 if (ip6h->hlim != IPV6_MAXHLIM || … … 1233 1194 rah = GET_ROUTER_ADVERT_HDR(input, off); 1234 1195 1235 /* è¿é£æ¢ç´¢ãªãã·ã§ã³ã®ãªãã»ãããè¨é²ããã*/1196 /* 近隣探索オプションのオフセットを記録する。*/ 1236 1197 if (nd6_options(nd_opt_off, input->buf + (off + ROUTER_ADVERT_HDR_SIZE), 1237 1198 input->len - (off + ROUTER_ADVERT_HDR_SIZE)) != E_OK) 1238 1199 goto err_ret; 1239 1200 /* 1240 * å°éå¯è½ç¶æ 1241 ã®æå¹æéã®æ´æ° 1201 * 到達可能状態の有効時間の更新 1242 1202 1243 1203 */ 1244 1204 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 */ 1246 1206 if (advrea <= ND6_MAX_REACHABLE_TIME && 1247 1207 advrea != nd6_base_reachable_time) { … … 1255 1215 } 1256 1216 1257 /* è¿é£æ¢ç´¢ã®éä¿¡ééã®æ´æ°*/1217 /* 近隣探索の送信間隔の更新 */ 1258 1218 if (rah->retransmit) { 1259 1219 nd6_retrans_time = ntohl(rah->retransmit) * SYSTIM_HZ / 1000; 1260 /* rah->retransmit ã®åä½ã¯ms */1261 } 1262 1263 /* ããããªãããã®è¦å®å¤ã®æ´æ°*/1220 /* rah->retransmit の単位は ms */ 1221 } 1222 1223 /* ホップリミットの規定値の更新 */ 1264 1224 if (rah->nd_ra_current_hoplimit) { 1265 1225 ip6_defhlim = rah->nd_ra_current_hoplimit; 1266 1226 } 1267 1227 1268 /* ãã£ãã©ã«ãã«ã¼ã¿ãªã¹ãã®æ´æ°*/1228 /* ディフォルトルータリストの更新 */ 1269 1229 rix = defrtrlist_update(&ip6h->src, 1270 1230 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 /* プレフィックスリストの更新 */ 1274 1234 if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_PREFIX_INFO_COUNT)]) { 1275 1235 T_ND_OPT_PREFIX_INFO *pi; … … 1279 1239 pi_off = off + ROUTER_ADVERT_HDR_SIZE 1280 1240 + nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_PREFIX_INFORMATION)] - 8; 1281 /* 注æ: ãªãã·ã§ã³ãªãã»ããé 1282 åã«ã¯ããªãã»ãã + 8 ãè¨å®ããã¦ããã*/ 1241 /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/ 1283 1242 while (pi_count -- > 0) { 1284 1243 pi = (T_ND_OPT_PREFIX_INFO*)(input->buf + pi_off); 1285 1244 if (pi->type != ND_OPT_PREFIX_INFORMATION) 1286 /* ãªãã·ã§ã³ã¿ã¤ãããã¬ãã£ãã¯ã¹æ 1287 å ±ã§ãªããã°ä½ãããªãã*/ 1245 /* オプションタイプがプレフィックス情報でなければ何もしない。*/ 1288 1246 ; 1289 1247 else if (pi->len != 4) 1290 /* ãã¬ãã£ãã¯ã¹æ 1291 å ±ã®é·ãã 32 (8Ã4) ã§ãªããã°ä¸æ£ */ 1248 /* プレフィックス情報の長さが 32 (8×4) でなければ不正 */ 1292 1249 syslog(LOG_NOTICE, "[ND6 RTR] prefix opt len: %d.", pi->len); 1293 1250 else if (pi->prefix_len > 128) 1294 /* ãã¬ãã£ãã¯ã¹é·ã¯ 128 ããã以ä¸*/1251 /* プレフィックス長は 128 ビット以下 */ 1295 1252 syslog(LOG_NOTICE, "[ND6 RTR] prefix len: %d.", pi->prefix_len); 1296 1253 else if (IN6_IS_ADDR_MULTICAST(&pi->prefix) || 1297 1254 IN6_IS_ADDR_LINKLOCAL(&pi->prefix)) 1298 /* ãã«ããã£ã¹ãã¨ãªã³ã¯ãã¼ã«ã«ã¯ä¸æ£*/1255 /* マルチキャストとリンクローカルは不正 */ 1299 1256 syslog(LOG_NOTICE, "[ND6 RTR] invalid addr: %s from %s.", 1300 1257 ipv62str(NULL, &pi->prefix), ipv62str(NULL, &ip6h->src)); 1301 #if 0 /* FreeBSD 6.3 ã§åé¤ããã¦ããã*/1258 #if 0 /* FreeBSD 6.3 で削除されている。*/ 1302 1259 else if (IN6_IS_ADDR_AGGREGATE_UNICAST(&pi->prefix) && 1303 1260 (pi->prefix_len != 64) ) 1304 /* éç´å¯è½ã¦ããã£ã¹ãã§ããã¬ãã£ãã¯ã¹é·ã 64 ããã以å¤ã¯ä¸æ£*/1261 /* 集約可能ユニキャストで、プレフィックス長が 64 ビット以外は不正 */ 1305 1262 syslog(LOG_NOTICE, "[ND6 RTR] invalid prefix len for global: %d.", pi->prefix_len); 1306 1263 #endif 1307 1264 else if (ntohl(pi->preferred) > ntohl(pi->valid)) 1308 /* æ¨å¥¨æå¹æéãæå¹æéããé·ããã°ä¸æ£*/1265 /* 推奨有効時間が有効時間より長ければ不正 */ 1309 1266 syslog(LOG_NOTICE, "[ND6 RTR] preferred(%d) > valid time(%d).", ntohl(pi->preferred), ntohl(pi->valid)); 1310 1267 else { 1311 #if 0 /* ãã¬ãã£ãã¯ã¹ãæªç»é²ã®å ´åã ã表示ããã*/1268 #if 0 /* プレフィックスが未登録の場合だけ表示する。*/ 1312 1269 syslog(LOG_NOTICE, "[ND6 RTR] update prefix: flags[MOH]: %02x, addr: %s\n" 1313 1270 " from: %s.", … … 1316 1273 if (rix >= 0) { 1317 1274 /* 1318 * defrtrlist_update ã®æ»ãå¤ã¯ãã«ã¼ã¿ã®ã¤ã³ããã¯ã¹ã1319 * ãã ããå¤ã -1 ãªãããã¬ãã£ãã¯ã¹ã»ãªã¹ãã¯æ´æ°ããªãã1275 * defrtrlist_update の戻り値は、ルータのインデックス。 1276 * ただし、値が -1 なら、プレフィックス・リストは更新しない。 1320 1277 */ 1321 prelist_update(pi, rix); /* ãã¬ãã£ãã¯ã¹ã»ãªã¹ããæ´æ°ããã*/1278 prelist_update(pi, rix); /* プレフィックス・リストを更新する。*/ 1322 1279 } 1323 1280 } 1324 pi_off += pi->len << 3; /* ãªãã·ã§ã³é·ã®åä½ã¯ 8 ãã¤ã*/1325 } 1326 } 1327 1328 /* MTU ã®æ´æ°*/1281 pi_off += pi->len << 3; /* オプション長の単位は 8 バイト */ 1282 } 1283 } 1284 1285 /* MTU の更新 */ 1329 1286 if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_MTU)]) { 1330 1287 T_ND_OPT_MTU_HDR *optmtuh; … … 1335 1292 1336 1293 /* 1337 * å¤ã®ãã§ãã¯1294 * 値のチェック 1338 1295 * 1339 * ãªãã·ã§ã³é·: 11340 * äºç´: 01296 * オプション長: 1 1297 * 予約: 0 1341 1298 */ 1342 1299 if (optmtuh->len != 1 || optmtuh->reserved != 0) 1343 1300 goto err_ret; 1344 1301 1345 /* MTU ã IPv6 MMTUï¼1280 ãªã¯ãããï¼ä»¥ä¸ãªãç¡è¦ããã*/1302 /* MTU が IPv6 MMTU(1280 オクテット)以下なら無視する。*/ 1346 1303 mtu = ntohl(optmtuh->mtu); 1347 1304 if (mtu >= IPV6_MMTU) { … … 1352 1309 1353 1310 /* 1354 * ã«ã¼ã¿ã®å§ç¹ãªã³ã¯ã¢ãã¬ã¹ãè¿é£ãã£ãã·ã¥ã«ç»é²ããã1311 * ルータの始点リンクアドレスを近隣キャッシュに登録する。 1355 1312 */ 1356 1313 if (nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_SOURCE_LINKADDR)]) { 1357 1314 opth = (T_ND_OPT_HDR *)((uint8_t *)(input->buf + off + ROUTER_ADVERT_HDR_SIZE) + 1358 1315 nd_opt_off[ND_OPT_OFF_ARRAY_IX(ND_OPT_SOURCE_LINKADDR)] - 8); 1359 /* 注æ: ãªãã·ã§ã³ãªãã»ããé 1360 åã«ã¯ããªãã»ãã + 8 ãè¨å®ããã¦ããã*/ 1316 /* 注意: オプションオフセット配列には、オフセット + 8 が設定されている。*/ 1361 1317 lladdr = (uint8_t *)(opth + 1); 1362 1318 lladdr_len = (opth->len << 3); … … 1364 1320 1365 1321 /* 1366 * ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã®ã¢ãã¬ã¹é·ãä¸è´ããªããã°ã¨ã©ã¼1322 * ネットワークインタフェースのアドレス長が一致しなければエラー 1367 1323 */ 1368 1324 if (lladdr && lladdr_len != ((sizeof(T_IF_ADDR) + sizeof(T_ND_OPT_HDR) + 7) & ~7)) 1369 1325 goto err_ret; 1370 1326 1371 /* è¿é£ãã£ãã·ã¥ã«ç»é²ããã*/1327 /* 近隣キャッシュに登録する。*/ 1372 1328 nd6_cache_lladdr(ifp, &ip6h->src, (T_IF_ADDR *)lladdr, ND_ROUTER_ADVERT, 0); 1373 1329 1374 1330 /* 1375 * ã«ã¼ã¿ã®å§ç¹ãªã³ã¯ã¢ãã¬ã¹ãè¿é£ãã£ãã·ã¥ã«ç»é²ããã®ã§ã 1376 * ãªã³ãªã³ã¯ç¶æ 1377 ãå¤åããå¯è½æ§ããããããããããã§ãã¯ããã 1331 * ルータの始点リンクアドレスを近隣キャッシュに登録したので、 1332 * オンリンク状態が変化する可能性があるため、それをチェックする。 1378 1333 */ 1379 1334 pfxlist_onlink_check(); … … 1389 1344 1390 1345 /* 1391 * ã«ã¼ã¿éç¥ãåä¿¡ããªãå ´åã¯ãç ´æ£ãã¦çµäºããã1346 * ルータ通知を受信しない場合は、破棄して終了する。 1392 1347 */ 1393 1348 NET_COUNT_ICMP6(net_count_nd6[NC_ND6_RA_IN_PACKETS], 1); … … 1400 1355 1401 1356 /* 1402 * nd6_rtrsol_ctl -- ã«ã¼ã¿è¦è«åºåã®å¶å¾¡1357 * nd6_rtrsol_ctl -- ルータ要請出力の制御 1403 1358 */ 1404 1359 … … 1409 1364 int_t try; 1410 1365 1411 /* ãªã³ã¯ãã¼ã«ã«ã¢ãã¬ã¹ã®ã¢ãã¬ã¹æ 1412 å ±ãå¾ãã*/ 1366 /* リンクローカルアドレスのアドレス情報を得る。*/ 1413 1367 if ((ifa = in6ifa_ifpwithix(IF_GET_IFNET(), IPV6_IFADDR_IX_LINKLOCAL)) == NULL) 1414 1368 return; 1415 1369 1416 /* ãªã³ã¯ãã¼ã«ã«ã¢ãã¬ã¹ã®éè¤æ¤åºçµäºãå¾ 1417 ã¤ã*/ 1370 /* リンクローカルアドレスの重複検出終了を待つ。*/ 1418 1371 do { 1419 /* ãªã³ã¯ãã¼ã«ã«ã¢ãã¬ã¹ã®éè¤æ¤åºçµäºå¾ 1420 ã¡æéãè¨å®ããã*/ 1372 /* リンクローカルアドレスの重複検出終了待ち時間を設定する。*/ 1421 1373 syscall(dly_tsk(net_rand() % TMO_ND6_RTR_SOL_DELAY)); 1422 1374 1423 /* å¾ 1424 ã£ã¦ããéã«éè¤ãæ¤åºããããçµäºããã*/ 1375 /* 待っている間に重複が検出されたら終了する。*/ 1425 1376 if (ifa->flags & IN6_IFF_DUPLICATED) 1426 1377 return; … … 1430 1381 for (try = 0; try < NUM_ND6_RTR_SOL_RETRY; try ++) { 1431 1382 1432 /* ãã£ãã©ã«ãã«ã¼ã¿ã»ãªã¹ãã«ã¨ã³ããªãããã°çµäº*/1383 /* ディフォルトルータ・リストにエントリがあれば終了 */ 1433 1384 if (def_router_count > 0) 1434 1385 return; 1435 1386 1436 /* ã«ã¼ã¿è¦è«ãåºåããã*/1387 /* ルータ要請を出力する。*/ 1437 1388 nd6_rs_output(); 1438 1389 1439 /* åºåã® 2 åç®ä»¥éã®é 1440 延æéãè¨å®ããã*/ 1390 /* 出力の 2 回目以降の遅延時間を設定する。*/ 1441 1391 syscall(dly_tsk(TMO_ND6_RTR_SOL_INTERVAL)); 1442 1392 } … … 1446 1396 1447 1397 /* 1448 * nd6_onlink_prefix_lookup -- ãã¬ãã£ãã¯ã¹ãæ¢ç´¢ããã1398 * nd6_onlink_prefix_lookup -- プレフィックスを探索する。 1449 1399 */ 1450 1400 … … 1459 1409 now /= SYSTIM_HZ; 1460 1410 1461 /* æ¨å¥¨æå¹æéå 1462 ã®ãã¬ãã£ãã¯ã¹ãæ¢ç´¢ããã*/ 1411 /* 推奨有効時間内のプレフィックスを探索する。*/ 1463 1412 for (ix = NUM_ND6_PREFIX_ENTRY; ix -- > 0; ) { 1464 1413 pr = &nd6_prefix[ix]; … … 1472 1421 } 1473 1422 1474 /* æå¹æéå 1475 ã®ãã¬ãã£ãã¯ã¹ãæ¢ç´¢ããã*/ 1423 /* 有効時間内のプレフィックスを探索する。*/ 1476 1424 for (ix = NUM_ND6_PREFIX_ENTRY; ix -- > 0; ) { 1477 1425 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
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 115 103 #if 0 116 104 /* 117 * é信帯åãé£ãã¤ã¶ãæ»æã¸ã®å¯¾å¿ã®ããã 118 * ã¿ã¤ã 0 çµè·¯å¶å¾¡ãããã®å¦çãè¡ããªãã 119 */ 120 121 /* 122 * ip6_rthdr0 -- ã¿ã¤ã 0 çµè·¯å¶å¾¡ãããã®å 123 ¥åé¢æ° 105 * 通信帯域を食いつぶす攻撃への対応のため、 106 * タイプ 0 経路制御ヘッダの処理を行わない。 107 */ 108 109 /* 110 * ip6_rthdr0 -- タイプ 0 経路制御ヘッダの入力関数 124 111 */ 125 112 … … 128 115 { 129 116 if (rt0h->segleft == 0) { 130 /* ä¸ç¶ãã¼ãæ°ã¯ 0 ãªã®ã§ãçµç¹ãã¼ã*/117 /* 中継ノード数は 0 なので、終点ノード */ 131 118 return E_OK; 132 119 } 133 120 134 /* len 㨠segleft ã®æ£å½æ§ãã§ãã¯*/121 /* len と segleft の正当性チェック */ 135 122 #ifdef IP6_CFG_COMPAT_RFC1883 136 123 if ((rt0h->len % 2) || (rt0h->len > 46)) { … … 139 126 #endif 140 127 /* 141 * len ã¯å¶æ°ã§ã(23 * 2) ã¾ã§ã142 * ãã ãã(23 * 2) ã®å¶é㯠RFC 2462 ã§åé¤ããã¦ããã128 * len は偶数で、(23 * 2) まで。 129 * ただし、(23 * 2) の制限は RFC 2462 で削除されている。 143 130 */ 144 131 icmp6_error(input, ICMP6_PARAM_PROB, … … 148 135 } 149 136 150 /* len ãä¸ç¶ãã¼ãæ°ã¨çç¾ãã¦ããªãããã§ãã¯ããã*/137 /* len が中継ノード数と矛盾していないかチェックする。*/ 151 138 if ((rt0h->len / 2) < rt0h->segleft) { 152 139 /* 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 はエラー。 156 143 */ 157 144 icmp6_error(input, ICMP6_PARAM_PROB, … … 162 149 163 150 /* 164 * æ®ãã®ä¸ç¶ãã¼ãæ°ã 1 以ä¸ã§ããã°ããã®ãã¼ãã¯æçµç㪠165 * çµç¹ãã¼ãã§ã¯ãªããæ¬å®è£ 166 ã§ã¯ãä¸ç¶ãããªãã®ã§ã 167 * å 168 ¥åãã¼ã¿ã°ã©ã ã®å¦çãçµäºããã 151 * 残りの中継ノード数が 1 以上であれば、このノードは最終的な 152 * 終点ノードではない。本実装では、中継をしないので、 153 * 入力データグラムの処理を終了する。 169 154 */ 170 155 syscall(rel_net_buf(input)); … … 175 160 176 161 /* 177 * route6_input -- çµè·¯å¶å¾¡ãããã®å 178 ¥åé¢æ° 162 * route6_input -- 経路制御ヘッダの入力関数 179 163 */ 180 164 … … 186 170 uint_t len, off = *offp; 187 171 188 /* ãããã¯ã¼ã¯ãããã¡ã®æ®ãã®é·ãããã§ãã¯ããã*/172 /* ネットワークバッファの残りの長さをチェックする。*/ 189 173 if (input->len - off < sizeof(T_IP6_RT_HDR)) 190 174 goto buf_rel; … … 193 177 len = (rth->len + 1) << 3; 194 178 195 /* çµè·¯å¶å¾¡ãããã®é·ãããã§ãã¯ããã*/179 /* 経路制御ヘッダの長さをチェックする。*/ 196 180 if (input->len < off + len) 197 181 goto buf_rel; … … 199 183 #if 0 200 184 /* 201 * é信帯åãé£ãã¤ã¶ãæ»æã¸ã®å¯¾å¿ã®ããã202 * ã¿ã¤ã 0 çµè·¯å¶å¾¡ãããã®å¦çãè¡ããªãã185 * 通信帯域を食いつぶす攻撃への対応のため、 186 * タイプ 0 経路制御ヘッダの処理を行わない。 203 187 */ 204 188 if (rth->type == IPV6_RTHDR_TYPE_0) { 205 189 if (ip6_rthdr0(input, (T_IP6_RT0_HDR*)rth) != E_OK) { 206 190 207 /* ã¨ã©ã¼ã®å ´åã¯ãip6_rthdr0 ã§ãããã¡ãéæ¾ãã¦ããã*/191 /* エラーの場合は、ip6_rthdr0 でバッファを開放している。*/ 208 192 return IPPROTO_DONE; 209 193 } … … 212 196 213 197 /* 214 * æ®ãã®ä¸ç¶ãã¼ãæ°ã 1 以ä¸ã§ããã°ããã®ãã¼ãã¯æçµç㪠215 * çµç¹ãã¼ãã§ã¯ãªããæ¬å®è£ 216 ã§ã¯ãä¸ç¶ãããªãã®ã§ã 217 * ICMP6 ã¨ã©ã¼ãè¿éãã¦å¦çãçµäºããã 198 * 残りの中継ノード数が 1 以上であれば、このノードは最終的な 199 * 終点ノードではない。本実装では、中継をしないので、 200 * ICMP6 エラーを返送して処理を終了する。 218 201 */ 219 202 icmp6_error(input, ICMP6_PARAM_PROB, … … 226 209 227 210 /* 228 * æ®ãã®ä¸ç¶ãã¼ãæ°ã 1 以ä¸ã§ããã°ããã®ãã¼ãã¯æçµç㪠229 * çµç¹ãã¼ãã§ã¯ãªããæ¬å®è£ 230 ã§ã¯ãä¸ç¶ãããªãã®ã§ã 231 * ICMP6 ã¨ã©ã¼ãè¿éãã¦å¦çãçµäºããã 211 * 残りの中継ノード数が 1 以上であれば、このノードは最終的な 212 * 終点ノードではない。本実装では、中継をしないので、 213 * ICMP6 エラーを返送して処理を終了する。 232 214 */ 233 215 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
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 147 135 148 136 /* 149 * in6_addrscope -- ã¢ãã¬ã¹ã®ã¹ã³ã¼ã ID ãè¿ãã137 * in6_addrscope -- アドレスのスコープ ID を返す。 150 138 */ 151 139 -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/udp6_input.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 78 66 79 67 /* 80 * udp_reply_no_port -- éä¿¡å 81 ã«ãã¼ããå®ç¾©ããã¦ããªããã¨ãéç¥ããã 68 * udp_reply_no_port -- 送信元にポートが定義されていないことを通知する。 82 69 */ 83 70 … … 93 80 if (GET_IP_VER(input)==IPV6_VERSION) { 94 81 95 /* ãã«ããã£ã¹ãã¢ãã¬ã¹ã«å±ãããã¼ã¿ã°ã©ã 㯠ICMP ã¨ã©ã¼ãéç¥ããªãã*/82 /* マルチキャストアドレスに届いたデータグラムは ICMP エラーを通知しない。*/ 96 83 if (!IN6_IS_ADDR_MULTICAST(&GET_IP6_HDR(input)->dst)) { 97 84 syslog(LOG_INFO, "[UDP] unexp port: %d.", ntohs(udph->dport)); 98 85 99 /* icmp6_error ã§ããããã¯ã¼ã¯ãããã¡ input ãè¿å´ããã*/86 /* icmp6_error で、ネットワークバッファ input を返却する。*/ 100 87 icmp6_error(input, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_NOPORT, 0); 101 88 } … … 105 92 else /*if (GET_IP_VER(input)==IPV4_VERSION)*/ { 106 93 107 /* ãã¼ã«ã« IP ã¢ãã¬ã¹ã«å±ãããã¼ã¿ã°ã©ã ã®ã¿ ICMP ã¨ã©ã¼ãéç¥ããã*/94 /* ローカル IP アドレスに届いたデータグラムのみ ICMP エラーを通知する。*/ 108 95 if (ntohl(GET_IP4_HDR(input)->dst) == IF_GET_IFNET()->in4_ifaddr.addr) { 109 96 syslog(LOG_INFO, "[UDP] unexp port: %d.", ntohs(udph->dport)); 110 97 111 98 icmp_error(ICMP4_UNREACH_PORT, input); 112 /* icmp_error ã§ã¯ããããã¯ã¼ã¯ãããã¡ input ãè¿å´ããªãã®ã§ä¸ã¸æããã*/99 /* icmp_error では、ネットワークバッファ input を返却しないので下へ抜ける。*/ 113 100 } 114 101 syscall(rel_net_buf(input)); … … 119 106 NET_COUNT_MIB(udp_stats.udpNoPorts, 1); 120 107 121 /* ãã«ããã£ã¹ãã¢ãã¬ã¹ã«å±ãããã¼ã¿ã°ã©ã 㯠ICMP ã¨ã©ã¼ãéç¥ããªãã*/108 /* マルチキャストアドレスに届いたデータグラムは ICMP エラーを通知しない。*/ 122 109 if (!IN6_IS_ADDR_MULTICAST(&GET_IP6_HDR(input)->dst)) { 123 110 syslog(LOG_INFO, "[UDP] unexp port: %d.", ntohs(udph->dport)); 124 111 125 /* icmp6_error ã§ããããã¯ã¼ã¯ãããã¡ input ãè¿å´ããã*/112 /* icmp6_error で、ネットワークバッファ input を返却する。*/ 126 113 icmp6_error(input, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_NOPORT, 0); 127 114 } -
azure_iot_hub/trunk/asp3_dcre/tinet/netinet6/udp6_subr.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 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プロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 78 66 79 67 /* 80 * udp6_is_dstaddr_accept -- UDP ã®ãã¦å 81 ã¢ãã¬ã¹ãæ£ããããã§ãã¯ããã 68 * udp6_is_dstaddr_accept -- UDP のあて先アドレスが正しいかチェックする。 82 69 * 83 * 以ä¸ã®å ´åããã¼ã¿ã°ã©ã ãåä¿¡ããã70 * 以下の場合もデータグラムを受信する。 84 71 * 85 * ã»ãã¦å 86 ã¢ãã¬ã¹ããã«ããã£ã¹ã 72 * ・あて先アドレスがマルチキャスト 87 73 */ 88 74 … … 105 91 106 92 /* 107 * udpn_is_dstaddr_accept -- UDP ã®ãã¦å 108 ã¢ãã¬ã¹ãæ£ããããã§ãã¯ããã 93 * udpn_is_dstaddr_accept -- UDP のあて先アドレスが正しいかチェックする。 109 94 * 110 * DHCP_CFG ãå®ç¾©ããã¦ããã¨ãã¯ã以ä¸ã®ãã¼ã¿ã°ã©ã ãåä¿¡ããã95 * DHCP_CFG が定義されているときは、以下のデータグラムを受信する。 111 96 * 112 * ã»ãã¦å 113 ã¢ãã¬ã¹ãããã¼ããã£ã¹ã 114 * ã»ãã¼ã«ã«ã¢ãã¬ã¹ãæªå®ç¾© 97 * ・あて先アドレスがブロードキャスト 98 * ・ローカルアドレスが未定義 115 99 */ 116 100 … … 139 123 140 124 /* 141 * udpn_is_dstaddr_accept -- UDP ã®ãã¦å 142 ã¢ãã¬ã¹ãæ£ããããã§ãã¯ããã 125 * udpn_is_dstaddr_accept -- UDP のあて先アドレスが正しいかチェックする。 143 126 * 144 * 以ä¸ã®å ´åããã¼ã¿ã°ã©ã ãåä¿¡ããã127 * 以下の場合もデータグラムを受信する。 145 128 * 146 * ã»ãã¦å 147 ã¢ãã¬ã¹ãããã¼ããã£ã¹ã 129 * ・あて先アドレスがブロードキャスト 148 130 */ 149 131
Note:
See TracChangeset
for help on using the changeset viewer.