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

文字コードを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/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
    r270 r321  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
    36  *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    122110
    123111/*
    124  *  変数
     112 *  変数
    125113 */
    126114
     
    128116
    129117/*
    130  *  SNMP の 管理æƒ
    131 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     118 *  SNMP の 管理情報ベース (MIB)
    132119 */
    133120
     
    137124
    138125/*
    139  *  関数
     126 *  関数
    140127 */
    141128
     
    150137
    151138/*
    152  *  icmp_echo -- エコー要求を受信したときの処理
    153  *
    154  *    input には IF ヘッダと IP ヘッダも含まれている。
     139 *  icmp_echo -- エコー要求を受信したときの処理
     140 *
     141 *    input には IF ヘッダと IP ヘッダも含まれている。
    155142 */
    156143
     
    164151        NET_COUNT_MIB(icmp_stats.icmpInEchos, 1);
    165152
    166         /* メッセージの型をエコー要求 (8) から エコー応答 (0) に   */
    167         /* 変更して送り返す。                                  */
     153        /* メッセージの型をエコー要求 (8) から エコー応答 (0) に     */
     154        /* 変更して送り返す。                                    */
    168155
    169156        icmp4h = GET_ICMP4_HDR(input, ihoff);
    170157        icmp4h->type = ICMP4_ECHO_REPLY;
    171158
    172         /* IP ヘッダの宛å
    173 ˆã¨ç™ºä¿¡å
    174 ƒã‚’交換する。*/
     159        /* IP ヘッダの宛先と発信元を交換する。*/
    175160        ip4h      = GET_IP4_HDR(input);
    176161        addr      = ip4h->src;
     
    178163        ip4h->dst = addr;
    179164
    180         /* チェックサムを計算する。*/
     165        /* チェックサムを計算する。*/
    181166        icmp4h->sum = 0;
    182167        icmp4h->sum = in_cksum(icmp4h,
    183168                               (uint_t)(((input->len - GET_IF_IP4_HDR_SIZE(input)) + 3) >> 2 << 2));
    184169
    185         /* 送信する。*/
     170        /* 送信する。*/
    186171        NET_COUNT_ICMP4(net_count_icmp4.out_octets,
    187172                       input->len - GET_IF_IP4_HDR_SIZE(input));
     
    193178
    194179/*
    195  *  icmp_unreach -- ICMP4_UNREACH を受信したときの処理
     180 *  icmp_unreach -- ICMP4_UNREACH を受信したときの処理
    196181 */
    197182
     
    245230
    246231/*
    247  *  icmp_redirect -- 向け直しメッセージを受信したときの処理
    248  *
    249  *    input には IF ヘッダと IP ヘッダも含まれている。
     232 *  icmp_redirect -- 向け直しメッセージを受信したときの処理
     233 *
     234 *    input には IF ヘッダと IP ヘッダも含まれている。
    250235 */
    251236
     
    261246
    262247        /*
    263          *  å†
    264 å®¹ãƒã‚§ãƒƒã‚¯ã€ä»¥ä¸‹ã®å ´åˆã¯ã‚¨ãƒ©ãƒ¼
     248         *  内容チェック、以下の場合はエラー
    265249         *
    266          *    ・ICMP コードが、ICMP4_REDIRECT_PORT_AND_HOST (3) 以上
    267          *    ・データグラム長が、ICMP の最小長より短い (IP ヘッダ + ICMP ヘッダ + IP ヘッダ + 8)
    268          *    ・データグラム長が、ICMP の最大長より短い
    269          *    ・
     250         *    ・ICMP コードが、ICMP4_REDIRECT_PORT_AND_HOST (3) 以上
     251         *    ・データグラム長が、ICMP の最小長より短い (IP ヘッダ + ICMP ヘッダ + IP ヘッダ + 8)
     252         *    ・データグラム長が、ICMP の最大長より短い
     253         *   
    270254         */
    271255        if (icmp4h->code > ICMP4_REDIRECT_PORT_AND_HOST ||
     
    282266
    283267/*
    284  *  icmp_input -- ICMP のå
    285 ¥åŠ›é–¢æ•°
    286  *
    287  *    input には IF ヘッダと IP ヘッダも含まれている。
     268 *  icmp_input -- ICMP の入力関数
     269 *
     270 *    input には IF ヘッダと IP ヘッダも含まれている。
    288271 */
    289272
     
    300283        NET_COUNT_ICMP4(net_count_icmp4.in_packets, 1);
    301284
    302         /* ICMP ヘッダの長さをチェックする。*/
     285        /* ICMP ヘッダの長さをチェックする。*/
    303286        if (input->len < IF_IP4_ICMP4_HDR_SIZE) {
    304287                NET_COUNT_ICMP4(net_count_icmp4.in_err_packets, 1);
     
    309292        icmp4h = (T_ICMP4_HDR *)(input->buf + *offp);
    310293
    311         /* 4 オクテット境界のデータ長 */
     294        /* 4 オクテット境界のデータ長 */
    312295        len   = input->len - *offp;
    313296        align = (len + 3) >> 2 << 2;
    314297
    315         /* 4 オクテット境界までパディングで埋める。*/
     298        /* 4 オクテット境界までパディングで埋める。*/
    316299        if (align > len)
    317300                memset((uint8_t*)input->buf + input->len, 0, (size_t)(align - len));
    318301
    319         /* チェックサムを計算する。*/
     302        /* チェックサムを計算する。*/
    320303        if (in_cksum(icmp4h, align) != 0) {
    321304                NET_COUNT_ICMP4(net_count_icmp4.in_err_packets, 1);
     
    323306                }
    324307
    325         /* メッセージの型により分岐する。*/
     308        /* メッセージの型により分岐する。*/
    326309        switch (icmp4h->type) {
    327310        case ICMP4_ECHO_REQUEST:
     
    371354
    372355/*
    373  *  icmp_error -- ICMP エラー送信関数。
    374  *
    375  *    input には IF ヘッダと IP ヘッダも含まれている。
    376  *    icmp_error では、ネットワークバッファ input を返却しないので、
    377  *    呼出し側で、開放してから終了する。       
     356 *  icmp_error -- ICMP エラー送信関数。
     357 *
     358 *    input には IF ヘッダと IP ヘッダも含まれている。
     359 *    icmp_error では、ネットワークバッファ input を返却しないので、
     360 *    呼出し側で、開放してから終了する。
    378361 */
    379362
     
    390373        ip4hl = GET_IP4_HDR_SIZE(ip4h);
    391374
    392         /* 送信用の IP データグラムを獲得する。*/
     375        /* 送信用の IP データグラムを獲得する。*/
    393376        if (input->len - ip4hl < 8)
    394377                len = input->len - ip4hl;
     
    402385                return;
    403386
    404         /* ICMP ヘッダを設定する。*/
     387        /* ICMP ヘッダを設定する。*/
    405388        icmp4h          = GET_ICMP4_HDR(output, IF_IP4_ICMP4_HDR_OFFSET);
    406389        icmp4h->type    = ICMP4_UNREACH;
     
    408391        icmp4h->data.addr= 0;
    409392
    410         /* エラーが発生した IP ヘッダと データ 8 オクテットをコピーする。*/
     393        /* エラーが発生した IP ヘッダと データ 8 オクテットをコピーする。*/
    411394        memcpy(GET_ICMP4_SDU(output, IF_IP4_ICMP4_HDR_OFFSET),
    412395               GET_IP4_HDR(input), (size_t)(ip4hl + len));
    413396
    414         /* 4 オクテット境界のデータ長 */
     397        /* 4 オクテット境界のデータ長 */
    415398        align = (len + 3) >> 2 << 2;
    416399
    417         /* 4 オクテット境界までパディングで埋める。*/
     400        /* 4 オクテット境界までパディングで埋める。*/
    418401        if (align > len)
    419402                memset((uint8_t*)GET_ICMP4_SDU(output, IF_IP4_ICMP4_HDR_OFFSET) + ip4hl + len,
    420403                       0, (size_t)(align - len));
    421404
    422         /* チェックサムを計算する。*/
     405        /* チェックサムを計算する。*/
    423406        icmp4h->sum = 0;
    424407        icmp4h->sum = in_cksum(icmp4h, (uint_t)(ICMP4_HDR_SIZE + ip4hl + align));
    425408
    426         /* 送信する。*/
     409        /* 送信する。*/
    427410        NET_COUNT_ICMP4(net_count_icmp4.out_octets,
    428411                       output->len - GET_IF_IP4_HDR_SIZE(output));
Note: See TracChangeset for help on using the changeset viewer.