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_input.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 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    140128
    141129/*
    142  *  変数
     130 *  変数
    143131 */
    144132
     
    146134
    147135/*
    148  *  SNMP の 管理æƒ
    149 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     136 *  SNMP の 管理情報ベース (MIB)
    150137 */
    151138
     
    157144
    158145/*
    159  *  データグラム再構成キュー
     146 *  データグラム再構成キュー
    160147 */
    161148
     
    164151
    165152/*
    166  *  関数
     153 *  関数
    167154 */
    168155
     
    171158
    172159/*
    173  *  ip_get_frag_queue -- データグラム再構成キューを獲得する。
     160 *  ip_get_frag_queue -- データグラム再構成キューを獲得する。
    174161 */
    175162
     
    181168
    182169/*
    183  *  ip_freef -- データグラム再構成キューを解放する。
     170 *  ip_freef -- データグラム再構成キューを解放する。
    184171 */
    185172
     
    199186
    200187/*
    201  *  ip_frag_timer -- データグラム再構成管理タイマ
     188 *  ip_frag_timer -- データグラム再構成管理タイマ
    202189 */
    203190
     
    222209
    223210/*
    224  *  ip_reass -- データグラムを再構成する。
     211 *  ip_reass -- データグラムを再構成する。
    225212 */
    226213
     
    246233
    247234        /*
    248          *  ID、IPアドレス、上位プロトコルが異なるフラグメントがキューに有れば破棄する。
     235         *  ID、IPアドレス、上位プロトコルが異なるフラグメントがキューに有れば破棄する。
    249236         */
    250237        frag = ip_frag_queue[ix];
     
    263250                NET_COUNT_IP4(net_count_ip4[NC_IP4_FRAG_IN], 1);
    264251
    265                 /* 新規の ID なら、宛å
    266 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’保存して、キューにつなぐ。*/
     252                /* 新規の ID なら、宛先アドレスを保存して、キューにつなぐ。*/
    267253                frag_dst  [ix] = dst;
    268254                ip_frag_queue[ix] = input;
     
    270256                input = NULL;
    271257
    272                 /* 再構成タイムアウトを設定する。*/
     258                /* 再構成タイムアウトを設定する。*/
    273259                ip4h->ttl = IP4_FRAGTTL;
    274260                }
    275261        else {
    276262
    277                 /* 正しい位置に挿å
    278 ¥ã™ã‚‹ã€‚*/
     263                /* 正しい位置に挿入する。*/
    279264                prev = NULL;
    280265                while (frag != NULL &&
     
    293278                input = NULL;
    294279
    295                 /* å
    296 ¨ã¦ã®ãƒ•ãƒ©ã‚°ãƒ¡ãƒ³ãƒˆãŒæƒã£ã¦ã„るか調べる。*/
     280                /* 全てのフラグメントが揃っているか調べる。*/
    297281                off = 0;
    298282                for (frag = ip_frag_queue[ix]; frag != NULL; frag = GET_QIP4_HDR(frag)->next) {
    299283                        if ((IP4_FLGOFF_OFF(GET_QIP4_HDR(frag)->flg_off) << 3) != off) {
    300                                 /* 途中が抜けていたら終了する。*/
     284                                /* 途中が抜けていたら終了する。*/
    301285                                syscall(sig_sem(SEM_IP4_FRAG_QUEUE));
    302286                                return NULL;
     
    306290                        }
    307291
    308                 /* å
    309 ¨ã¦ã®ãƒ•ãƒ©ã‚°ãƒ¡ãƒ³ãƒˆãŒæƒã£ãŸã‚‰å†æ§‹æˆã™ã‚‹ã€‚*/
     292                /* 全てのフラグメントが揃ったら再構成する。*/
    310293                if ((GET_QIP4_HDR(prev)->flg_off & IP4_MF) == 0) {
    311294
    312                         /* ネットワークバッファを獲得する。*/
     295                        /* ネットワークバッファを獲得する。*/
    313296                        if (tget_net_buf(&input, IF_IP4_HDR_SIZE + off, TMO_IP4_FRAG_GET_NET_BUF) == E_OK) {
    314297                                NET_COUNT_IP4(net_count_ip4[NC_IP4_FRAG_IN_OK], 1);
    315298                                NET_COUNT_MIB(ip_stats.ipReasmOKs, 1);
    316299
    317                                 /* IPv4 ヘッダを設定する。*/
     300                                /* IPv4 ヘッダを設定する。*/
    318301                                frag  = ip_frag_queue[ix];
    319302                                ip4h  = GET_IP4_HDR(input);
     
    325308                                ip4h->flg_off = ip4h->id = 0;
    326309
    327                                 /* データグラムを再構成する。*/
     310                                /* データグラムを再構成する。*/
    328311                                off = IP4_HDR_SIZE;
    329312                                while (frag != NULL) {
     
    339322                                NET_COUNT_MIB(ip_stats.ipReasmFails, 1);
    340323                                }
    341                         /* キューを空にする。*/
     324                        /* キューを空にする。*/
    342325                        ip_freef(ix);
    343326                        }
     
    350333
    351334/*
    352  *  ip_init -- IP の初期化
     335 *  ip_init -- IP の初期化
    353336 */
    354337
     
    360343
    361344/*
    362  *  ip_remove_options -- IPv4 ヘッダのオプションを削除し、以降を前に詰める。
     345 *  ip_remove_options -- IPv4 ヘッダのオプションを削除し、以降を前に詰める。
    363346 */
    364347
     
    384367
    385368/*
    386  *  ip_input -- IP のå
    387 ¥åŠ›é–¢æ•°
     369 *  ip_input -- IP の入力関数
    388370 */
    389371
    390372#if defined(SUPPORT_IPSEC)
    391373/*
    392  * TODO: IPsec SPを検索し、パケットをリジェクトするかどうか判定する処理を実è£
    393 ã™ã‚‹
     374 * TODO: IPsec SPを検索し、パケットをリジェクトするかどうか判定する処理を実装する
    394375 */
    395376#endif /* of defined(SUPPORT_IPSEC) */
     
    407388        NET_COUNT_MIB(ip_stats.ipInReceives, 1);
    408389
    409         /* IP ヘッダの長さをチェックする。*/
     390        /* IP ヘッダの長さをチェックする。*/
    410391        if (input->len < IF_IP4_HDR_SIZE) {
    411392                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_SHORT], 1);
     
    417398        hlen = GET_IP4_HDR_SIZE(input);
    418399
    419         /* バージョンをチェックする。*/
     400        /* バージョンをチェックする。*/
    420401        if (IP4_VHL_V(ip4h->vhl) != IPV4_VERSION) {
    421402                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_VER], 1);
     
    424405                }
    425406
    426         /* IP ヘッダの長さをチェックし、オプションを解析する。*/
     407        /* IP ヘッダの長さをチェックし、オプションを解析する。*/
    427408        if (hlen > IP4_HDR_SIZE) {
    428409                NET_COUNT_IP4(net_count_ip4[NC_IP4_OPTS], 1);
    429                 /* %%% オプションの解析 %%% */
    430                 }
    431 
    432         /* データグラム長をチェックする。*/
     410                /* %%% オプションの解析 %%% */
     411                }
     412
     413        /* データグラム長をチェックする。*/
    433414        if (ntohs(ip4h->len) > input->len - IF_HDR_SIZE) {
    434415                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_SHORT], 1);
     
    437418                }
    438419
    439         /* ネットワークバッファの長さをデータグラム長に調整する。*/
     420        /* ネットワークバッファの長さをデータグラム長に調整する。*/
    440421        input->len = (uint16_t)(ntohs(ip4h->len) + IF_HDR_SIZE);
    441422
    442         /* チェックサムをチェックする。*/
     423        /* チェックサムをチェックする。*/
    443424        if (in_cksum(ip4h, hlen) != 0) {
    444425                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_CKSUM], 1);
     
    447428                }
    448429
    449         /* IP ヘッダの長さをチェックし、上位が ICMP 以外はオプションを消去する。*/
     430        /* IP ヘッダの長さをチェックし、上位が ICMP 以外はオプションを消去する。*/
    450431        if (hlen > IP4_HDR_SIZE && ip4h->proto != IPPROTO_ICMP) {
    451432                memset((uint8_t*)ip4h + IP4_HDR_SIZE, 0, hlen - IP4_HDR_SIZE);
    452433                }
    453434
    454         /* 送信å
    455 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’チェックする。*/
     435        /* 送信元アドレスをチェックする。*/
    456436        src = ntohl(ip4h->src);
    457437        bc  = (ifp->in4_ifaddr.addr & ifp->in4_ifaddr.mask) | ~ifp->in4_ifaddr.mask;
     
    475455#endif  /* of #ifdef SUPPORT_LOOP */
    476456
    477         /* あてå
    478 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’チェックする。*/
     457        /* あて先アドレスをチェックする。*/
    479458        dst = ntohl(ip4h->dst);
    480459
     
    482461
    483462        /*
    484          *  DHCP_CFG が定義されているときは、ローカルアドレスが未定義の
    485          *  場合もデータグラムを受信する。
     463         *  DHCP_CFG が定義されているときは、ローカルアドレスが未定義の
     464         *  場合もデータグラムを受信する。
    486465         */
    487466
     
    507486#ifdef IP4_CFG_FRAGMENT
    508487
    509         /* 分割されているかチェックする。*/
     488        /* 分割されているかチェックする。*/
    510489        if (ntohs(ip4h->flg_off) & (IP4_MF | IP4_OFFMASK)) {
    511490                if ((input = ip_reass(ip4h, input)) == NULL)
     
    515494#else   /* of #ifdef IP4_CFG_FRAGMENT */
    516495
    517         /* 分割されているかチェックする。*/
     496        /* 分割されているかチェックする。*/
    518497        if (ntohs(ip4h->flg_off) & (IP4_MF | IP4_OFFMASK)) {
    519498                T_IN4_ADDR      src;
     
    533512
    534513#if defined(SUPPORT_IPSEC)
    535         /* ここでipsec4_in_rejectを実行する */
     514        /* ここでipsec4_in_rejectを実行する */
    536515        if ((ip4h->proto != IPPROTO_ESP) && ipsec4_in_reject (input)) {
    537516                goto buf_rel;
     
    539518#endif /* of #if defined(SUPPORT_IPSEC) */
    540519
    541         /* プロトコルを選択する */
     520        /* プロトコルを選択する */
    542521        switch (ip4h->proto) {
    543522
     
    577556                NET_COUNT_MIB(ip_stats.ipInUnknownProtos, 1);
    578557
    579                 /* ローカル IP アドレスに届いたデータグラムのみ ICMP エラーを通知する。*/
     558                /* ローカル IP アドレスに届いたデータグラムのみ ICMP エラーを通知する。*/
    580559                if (dst == ifp->in4_ifaddr.addr) {
    581560                        T_IN4_ADDR      src;
     
    586565                        }
    587566                /*
    588                  *  icmp_error では、ネットワークバッファ input を返却しないので
    589                  *  開放してから終了する。
     567                 *  icmp_error では、ネットワークバッファ input を返却しないので
     568                 *  開放してから終了する。
    590569                 */
    591570                break;
Note: See TracChangeset for help on using the changeset viewer.