Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/trunk/asp3_dcre/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
    r388 r389  
    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$
     
    141129
    142130/*
    143  *  変数
     131 *  変数
    144132 */
    145133
     
    147135
    148136/*
    149  *  SNMP の 管理æƒ
    150 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     137 *  SNMP の 管理情報ベース (MIB)
    151138 */
    152139
     
    158145
    159146/*
    160  *  データグラム再構成キュー
     147 *  データグラム再構成キュー
    161148 */
    162149
     
    165152
    166153/*
    167  *  関数
     154 *  関数
    168155 */
    169156
     
    172159
    173160/*
    174  *  ip_get_frag_queue -- データグラム再構成キューを獲得する。
     161 *  ip_get_frag_queue -- データグラム再構成キューを獲得する。
    175162 */
    176163
     
    182169
    183170/*
    184  *  ip_freef -- データグラム再構成キューを解放する。
     171 *  ip_freef -- データグラム再構成キューを解放する。
    185172 */
    186173
     
    200187
    201188/*
    202  *  ip_frag_timer -- データグラム再構成管理タイマ
     189 *  ip_frag_timer -- データグラム再構成管理タイマ
    203190 */
    204191
     
    223210
    224211/*
    225  *  ip_reass -- データグラムを再構成する。
     212 *  ip_reass -- データグラムを再構成する。
    226213 */
    227214
     
    247234
    248235        /*
    249          *  ID、IPアドレス、上位プロトコルが異なるフラグメントがキューに有れば破棄する。
     236         *  ID、IPアドレス、上位プロトコルが異なるフラグメントがキューに有れば破棄する。
    250237         */
    251238        frag = ip_frag_queue[ix];
     
    264251                NET_COUNT_IP4(net_count_ip4[NC_IP4_FRAG_IN], 1);
    265252
    266                 /* 新規の ID なら、宛å
    267 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’保存して、キューにつなぐ。*/
     253                /* 新規の ID なら、宛先アドレスを保存して、キューにつなぐ。*/
    268254                frag_dst  [ix] = dst;
    269255                ip_frag_queue[ix] = input;
     
    271257                input = NULL;
    272258
    273                 /* 再構成タイムアウトを設定する。*/
     259                /* 再構成タイムアウトを設定する。*/
    274260                ip4h->ttl = IP4_FRAGTTL;
    275261                }
    276262        else {
    277263
    278                 /* 正しい位置に挿å
    279 ¥ã™ã‚‹ã€‚*/
     264                /* 正しい位置に挿入する。*/
    280265                prev = NULL;
    281266                while (frag != NULL &&
     
    294279                input = NULL;
    295280
    296                 /* å
    297 ¨ã¦ã®ãƒ•ãƒ©ã‚°ãƒ¡ãƒ³ãƒˆãŒæƒã£ã¦ã„るか調べる。*/
     281                /* 全てのフラグメントが揃っているか調べる。*/
    298282                off = 0;
    299283                for (frag = ip_frag_queue[ix]; frag != NULL; frag = GET_QIP4_HDR(frag)->next) {
    300284                        if ((IP4_FLGOFF_OFF(GET_QIP4_HDR(frag)->flg_off) << 3) != off) {
    301                                 /* 途中が抜けていたら終了する。*/
     285                                /* 途中が抜けていたら終了する。*/
    302286                                syscall(sig_sem(SEM_IP4_FRAG_QUEUE));
    303287                                return NULL;
     
    307291                        }
    308292
    309                 /* å
    310 ¨ã¦ã®ãƒ•ãƒ©ã‚°ãƒ¡ãƒ³ãƒˆãŒæƒã£ãŸã‚‰å†æ§‹æˆã™ã‚‹ã€‚*/
     293                /* 全てのフラグメントが揃ったら再構成する。*/
    311294                if ((GET_QIP4_HDR(prev)->flg_off & IP4_MF) == 0) {
    312295
    313                         /* ネットワークバッファを獲得する。*/
     296                        /* ネットワークバッファを獲得する。*/
    314297                        if (tget_net_buf(&input, IF_IP4_HDR_SIZE + off, TMO_IP4_FRAG_GET_NET_BUF) == E_OK) {
    315298                                NET_COUNT_IP4(net_count_ip4[NC_IP4_FRAG_IN_OK], 1);
    316299                                NET_COUNT_MIB(ip_stats.ipReasmOKs, 1);
    317300
    318                                 /* IPv4 ヘッダを設定する。*/
     301                                /* IPv4 ヘッダを設定する。*/
    319302                                frag  = ip_frag_queue[ix];
    320303                                ip4h  = GET_IP4_HDR(input);
     
    326309                                ip4h->flg_off = ip4h->id = 0;
    327310
    328                                 /* データグラムを再構成する。*/
     311                                /* データグラムを再構成する。*/
    329312                                off = IP4_HDR_SIZE;
    330313                                while (frag != NULL) {
     
    340323                                NET_COUNT_MIB(ip_stats.ipReasmFails, 1);
    341324                                }
    342                         /* キューを空にする。*/
     325                        /* キューを空にする。*/
    343326                        ip_freef(ix);
    344327                        }
     
    351334
    352335/*
    353  *  ip_init -- IP の初期化
     336 *  ip_init -- IP の初期化
    354337 */
    355338
     
    361344
    362345/*
    363  *  ip_remove_options -- IPv4 ヘッダのオプションを削除し、以降を前に詰める。
     346 *  ip_remove_options -- IPv4 ヘッダのオプションを削除し、以降を前に詰める。
    364347 */
    365348
     
    385368
    386369/*
    387  *  ip_input -- IP のå
    388 ¥åŠ›é–¢æ•°
     370 *  ip_input -- IP の入力関数
    389371 */
    390372
    391373#if defined(SUPPORT_IPSEC)
    392374/*
    393  * TODO: IPsec SPを検索し、パケットをリジェクトするかどうか判定する処理を実è£
    394 ã™ã‚‹
     375 * TODO: IPsec SPを検索し、パケットをリジェクトするかどうか判定する処理を実装する
    395376 */
    396377#endif /* of defined(SUPPORT_IPSEC) */
     
    408389        NET_COUNT_MIB(ip_stats.ipInReceives, 1);
    409390
    410         /* IP ヘッダの長さをチェックする。*/
     391        /* IP ヘッダの長さをチェックする。*/
    411392        if (input->len < IF_IP4_HDR_SIZE) {
    412393                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_SHORT], 1);
     
    418399        hlen = GET_IP4_HDR_SIZE(input);
    419400
    420         /* バージョンをチェックする。*/
     401        /* バージョンをチェックする。*/
    421402        if (IP4_VHL_V(ip4h->vhl) != IPV4_VERSION) {
    422403                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_VER], 1);
     
    425406                }
    426407
    427         /* IP ヘッダの長さをチェックし、オプションを解析する。*/
     408        /* IP ヘッダの長さをチェックし、オプションを解析する。*/
    428409        if (hlen > IP4_HDR_SIZE) {
    429410                NET_COUNT_IP4(net_count_ip4[NC_IP4_OPTS], 1);
    430                 /* %%% オプションの解析 %%% */
    431                 }
    432 
    433         /* データグラム長をチェックする。*/
     411                /* %%% オプションの解析 %%% */
     412                }
     413
     414        /* データグラム長をチェックする。*/
    434415        if (ntohs(ip4h->len) > input->len - IF_HDR_SIZE) {
    435416                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_SHORT], 1);
     
    438419                }
    439420
    440         /* ネットワークバッファの長さをデータグラム長に調整する。*/
     421        /* ネットワークバッファの長さをデータグラム長に調整する。*/
    441422        input->len = (uint16_t)(ntohs(ip4h->len) + IF_HDR_SIZE);
    442423
    443         /* チェックサムをチェックする。*/
     424        /* チェックサムをチェックする。*/
    444425        if (in_cksum(ip4h, hlen) != 0) {
    445426                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_CKSUM], 1);
     
    448429                }
    449430
    450         /* IP ヘッダの長さをチェックし、上位が ICMP 以外はオプションを消去する。*/
     431        /* IP ヘッダの長さをチェックし、上位が ICMP 以外はオプションを消去する。*/
    451432        if (hlen > IP4_HDR_SIZE && ip4h->proto != IPPROTO_ICMP) {
    452433                memset((uint8_t*)ip4h + IP4_HDR_SIZE, 0, hlen - IP4_HDR_SIZE);
    453434                }
    454435
    455         /* 送信å
    456 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’チェックする。*/
     436        /* 送信元アドレスをチェックする。*/
    457437        src = ntohl(ip4h->src);
    458438        bc  = (ifp->in4_ifaddr.addr & ifp->in4_ifaddr.mask) | ~ifp->in4_ifaddr.mask;
     
    476456#endif  /* of #ifdef SUPPORT_LOOP */
    477457
    478         /* あてå
    479 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’チェックする。*/
     458        /* あて先アドレスをチェックする。*/
    480459        dst = ntohl(ip4h->dst);
    481460
     
    483462
    484463        /*
    485          *  DHCP_CFG が定義されているときは、ローカルアドレスが未定義の
    486          *  場合もデータグラムを受信する。
     464         *  DHCP_CFG が定義されているときは、ローカルアドレスが未定義の
     465         *  場合もデータグラムを受信する。
    487466         */
    488467
     
    529508#ifdef IP4_CFG_FRAGMENT
    530509
    531         /* 分割されているかチェックする。*/
     510        /* 分割されているかチェックする。*/
    532511        if (ntohs(ip4h->flg_off) & (IP4_MF | IP4_OFFMASK)) {
    533512                if ((input = ip_reass(ip4h, input)) == NULL)
     
    537516#else   /* of #ifdef IP4_CFG_FRAGMENT */
    538517
    539         /* 分割されているかチェックする。*/
     518        /* 分割されているかチェックする。*/
    540519        if (ntohs(ip4h->flg_off) & (IP4_MF | IP4_OFFMASK)) {
    541520                T_IN4_ADDR      src;
     
    555534
    556535#if defined(SUPPORT_IPSEC)
    557         /* ここでipsec4_in_rejectを実行する */
     536        /* ここでipsec4_in_rejectを実行する */
    558537        if ((ip4h->proto != IPPROTO_ESP) && ipsec4_in_reject (input)) {
    559538                goto buf_rel;
     
    561540#endif /* of #if defined(SUPPORT_IPSEC) */
    562541
    563         /* プロトコルを選択する */
     542        /* プロトコルを選択する */
    564543        switch (ip4h->proto) {
    565544
     
    607586                NET_COUNT_MIB(ip_stats.ipInUnknownProtos, 1);
    608587
    609                 /* ローカル IP アドレスに届いたデータグラムのみ ICMP エラーを通知する。*/
     588                /* ローカル IP アドレスに届いたデータグラムのみ ICMP エラーを通知する。*/
    610589                if (dst == ifp->in4_ifaddr.addr) {
    611590                        T_IN4_ADDR      src;
     
    616595                        }
    617596                /*
    618                  *  icmp_error では、ネットワークバッファ input を返却しないので
    619                  *  開放してから終了する。
     597                 *  icmp_error では、ネットワークバッファ input を返却しないので
     598                 *  開放してから終了する。
    620599                 */
    621600                break;
Note: See TracChangeset for help on using the changeset viewer.