Ignore:
Timestamp:
Aug 3, 2017, 10:46:41 PM (7 years ago)
Author:
coas-nagasima
Message:

プロパティの文字コードにUTF-8を追加、キーワードを削除

File:
1 edited

Legend:

Unmodified
Added
Removed
  • asp3_gr_sakura/trunk/tinet/netinet/ip_icmp.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
    36  *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    129117
    130118/*
    131  *  変数
     119 *  変数
    132120 */
    133121
     
    135123
    136124/*
    137  *  SNMP の 管理æƒ
    138 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     125 *  SNMP の 管理情報ベース (MIB)
    139126 */
    140127
     
    144131
    145132/*
    146  *  関数
     133 *  関数
    147134 */
    148135
     
    159146
    160147/*
    161  *  icmp_echo -- エコー要求を受信したときの処理
    162  *
    163  *    input には IF ヘッダと IP ヘッダも含まれている。
     148 *  icmp_echo -- エコー要求を受信したときの処理
     149 *
     150 *    input には IF ヘッダと IP ヘッダも含まれている。
    164151 */
    165152
     
    173160        NET_COUNT_MIB(icmp_stats.icmpInEchos, 1);
    174161
    175         /* IPv4 アドレスが未定義の時は応答しない。*/
     162        /* IPv4 アドレスが未定義の時は応答しない。*/
    176163        if (!IN4_IS_ADDR_ANY(&ifp->in4_ifaddr.addr)) {
    177164
    178165                /*
    179                  *  メッセージの型をエコー要求 (8) から
    180                  *  エコー応答 (0) に変更して送り返す。
     166                 *  メッセージの型をエコー要求 (8) から
     167                 *  エコー応答 (0) に変更して送り返す。
    181168                 */
    182169
     
    185172
    186173                /*
    187                  *  宛å
    188 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¯å—信したメッセージの送信å
    189 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã€‚
    190                  *  送信å
    191 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã¯è‡ª IPv4 アドレス。
     174                 *  宛先アドレスは受信したメッセージの送信元アドレス。
     175                 *  送信元アドレスは自 IPv4 アドレス。
    192176                 */
    193177                ip4h      = GET_IP4_HDR(input);
     
    195179                ip4h->src = htonl(ifp->in4_ifaddr.addr);
    196180
    197                 /* チェックサムを計算する。*/
     181                /* チェックサムを計算する。*/
    198182                icmp4h->sum = 0;
    199183                icmp4h->sum = in_cksum(icmp4h,
    200184                                       (uint_t)(((input->len - GET_IF_IP4_HDR_SIZE(input)) + 3) >> 2 << 2));
    201185
    202                 /* 送信する。*/
     186                /* 送信する。*/
    203187                NET_COUNT_ICMP4(net_count_icmp4.out_octets,
    204188                               input->len - GET_IF_IP4_HDR_SIZE(input));
     
    211195
    212196/*
    213  *  icmp_unreach -- ICMP4_UNREACH を受信したときの処理
     197 *  icmp_unreach -- ICMP4_UNREACH を受信したときの処理
    214198 */
    215199
     
    246230        error = code2error[code];
    247231
    248         /* 最終ヘッダが TCP/UDP のみ対応する。*/
     232        /* 最終ヘッダが TCP/UDP のみ対応する。*/
    249233        if (ip4h->proto == IPPROTO_TCP || ip4h->proto == IPPROTO_UDP) {
    250234
     
    275259
    276260/*
    277  *  icmp_redirect -- 向け直しメッセージを受信したときの処理
    278  *
    279  *    input には IF ヘッダと IP ヘッダも含まれている。
     261 *  icmp_redirect -- 向け直しメッセージを受信したときの処理
     262 *
     263 *    input には IF ヘッダと IP ヘッダも含まれている。
    280264 */
    281265
     
    291275
    292276        /*
    293          *  å†
    294 å®¹ãƒã‚§ãƒƒã‚¯ã€ä»¥ä¸‹ã®å ´åˆã¯ã‚¨ãƒ©ãƒ¼
     277         *  内容チェック、以下の場合はエラー
    295278         *
    296          *    ・ICMP コードが、ICMP4_REDIRECT_PORT_AND_HOST (3) 以上
    297          *    ・データグラム長が、ICMP の最小長より短い (IP ヘッダ + ICMP ヘッダ + IP ヘッダ + 8)
    298          *    ・データグラム長が、ICMP の最大長より短い
    299          *    ・
     279         *    ・ICMP コードが、ICMP4_REDIRECT_PORT_AND_HOST (3) 以上
     280         *    ・データグラム長が、ICMP の最小長より短い (IP ヘッダ + ICMP ヘッダ + IP ヘッダ + 8)
     281         *    ・データグラム長が、ICMP の最大長より短い
     282         *   
    300283         */
    301284        if (icmp4h->code > ICMP4_REDIRECT_PORT_AND_HOST ||
     
    313296
    314297/*
    315  *  icmp_input -- ICMP のå
    316 ¥åŠ›é–¢æ•°
    317  *
    318  *    input には IF ヘッダと IP ヘッダも含まれている。
     298 *  icmp_input -- ICMP の入力関数
     299 *
     300 *    input には IF ヘッダと IP ヘッダも含まれている。
    319301 */
    320302
     
    331313        NET_COUNT_ICMP4(net_count_icmp4.in_packets, 1);
    332314
    333         /* ICMP ヘッダの長さをチェックする。*/
     315        /* ICMP ヘッダの長さをチェックする。*/
    334316        if (input->len < IF_IP4_ICMP4_HDR_SIZE) {
    335317                NET_COUNT_ICMP4(net_count_icmp4.in_err_packets, 1);
     
    340322        icmp4h = (T_ICMP4_HDR *)(input->buf + *offp);
    341323
    342         /* 4 オクテット境界のデータ長 */
     324        /* 4 オクテット境界のデータ長 */
    343325        len   = input->len - *offp;
    344326        align = (len + 3) >> 2 << 2;
    345327
    346         /* 4 オクテット境界までパディングで埋める。*/
     328        /* 4 オクテット境界までパディングで埋める。*/
    347329        if (align > len)
    348330                memset((uint8_t*)input->buf + input->len, 0, (size_t)(align - len));
    349331
    350         /* チェックサムを計算する。*/
     332        /* チェックサムを計算する。*/
    351333        if (in_cksum(icmp4h, align) != 0) {
    352334                NET_COUNT_ICMP4(net_count_icmp4.in_err_packets, 1);
     
    354336                }
    355337
    356         /* メッセージの型により分岐する。*/
     338        /* メッセージの型により分岐する。*/
    357339        switch (icmp4h->type) {
    358340        case ICMP4_ECHO_REQUEST:
     
    409391
    410392/*
    411  *  icmp_error -- ICMP エラー送信関数。
    412  *
    413  *    input には IF ヘッダと IP ヘッダも含まれている。
    414  *    icmp_error では、ネットワークバッファ input を返却しないので、
    415  *    呼出し側で、開放してから終了する。       
     393 *  icmp_error -- ICMP エラー送信関数。
     394 *
     395 *    input には IF ヘッダと IP ヘッダも含まれている。
     396 *    icmp_error では、ネットワークバッファ input を返却しないので、
     397 *    呼出し側で、開放してから終了する。
    416398 */
    417399
     
    428410        ip4hl = GET_IP4_HDR_SIZE(input);
    429411
    430         /* 送信用の IP データグラムを獲得する。*/
     412        /* 送信用の IP データグラムを獲得する。*/
    431413        if (input->len - ip4hl < 8)
    432414                len = input->len - ip4hl;
     
    440422                return;
    441423
    442         /* ICMP ヘッダを設定する。*/
     424        /* ICMP ヘッダを設定する。*/
    443425        icmp4h          = GET_ICMP4_HDR(output, IF_IP4_ICMP4_HDR_OFFSET);
    444426        icmp4h->type    = ICMP4_UNREACH;
     
    446428        icmp4h->data.addr= 0;
    447429
    448         /* エラーが発生した IP ヘッダと データ 8 オクテットをコピーする。*/
     430        /* エラーが発生した IP ヘッダと データ 8 オクテットをコピーする。*/
    449431        memcpy(GET_ICMP4_SDU(output, IF_IP4_ICMP4_HDR_OFFSET),
    450432               GET_IP4_HDR(input), (size_t)(ip4hl + len));
    451433
    452         /* 4 オクテット境界のデータ長 */
     434        /* 4 オクテット境界のデータ長 */
    453435        align = (len + 3) >> 2 << 2;
    454436
    455         /* 4 オクテット境界までパディングで埋める。*/
     437        /* 4 オクテット境界までパディングで埋める。*/
    456438        if (align > len)
    457439                memset((uint8_t*)GET_ICMP4_SDU(output, IF_IP4_ICMP4_HDR_OFFSET) + ip4hl + len,
    458440                       0, (size_t)(align - len));
    459441
    460         /* チェックサムを計算する。*/
     442        /* チェックサムを計算する。*/
    461443        icmp4h->sum = 0;
    462444        icmp4h->sum = in_cksum(icmp4h, (uint_t)(ICMP4_HDR_SIZE + ip4hl + align));
    463445
    464         /* 送信する。*/
     446        /* 送信する。*/
    465447        NET_COUNT_ICMP4(net_count_icmp4.out_octets,
    466448                       output->len - GET_IF_IP4_HDR_SIZE(output));
Note: See TracChangeset for help on using the changeset viewer.