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