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/in4_subr.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 è²¬ã™ã‚‹ã“と.
    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$
     
    125113
    126114/*
    127  *  in_rtinit -- ルーティング表を初期化する。
     115 *  in_rtinit -- ルーティング表を初期化する。
    128116 */
    129117
     
    141129
    142130/*
    143  *  in_rtnewentry -- 新しいエントリを獲得する。
     131 *  in_rtnewentry -- 新しいエントリを獲得する。
    144132 */
    145133
     
    151139        int_t           ix;
    152140
    153         /* 空きエントリを探す。*/
     141        /* 空きエントリを探す。*/
    154142        for (ix = NUM_IN4_STATIC_ROUTE_ENTRY; ix < NUM_IN4_ROUTE_ENTRY; ix ++) {
    155143                rt = &routing4_tbl[ix];
     
    160148                }
    161149
    162         /* expire の単位は [s]。*/
     150        /* expire の単位は [s]。*/
    163151        syscall(get_tim(&now));
    164152        now /= SYSTIM_HZ;
    165153
    166154        if (frt == NULL) {
    167                 /* 空きがなければ、有効時間がもっとも短いエントリを空きにする。*/
     155                /* 空きがなければ、有効時間がもっとも短いエントリを空きにする。*/
    168156                T_IN4_RTENTRY   *srt = NULL;
    169157                int_t           diff, sdiff = INT_MAX;
     
    174162                        diff = (int_t)(rt->expire - now);
    175163                        if (diff <= 0) {        /* rt->expire <= now */
    176                                 /* 既に、有効時間が過ぎている。*/
     164                                /* 既に、有効時間が過ぎている。*/
    177165                                frt = rt;
    178166                                break;
     
    195183
    196184/*
    197  *  in_rttimer -- ルーティング表の管理タイマー
     185 *  in_rttimer -- ルーティング表の管理タイマー
    198186 */
    199187
     
    204192        int_t   ix;
    205193
    206         /* expire の単位は [s]。*/
     194        /* expire の単位は [s]。*/
    207195        syscall(get_tim(&now));
    208196        now /= SYSTIM_HZ;
     
    219207
    220208/*
    221  *  in4_get_maxnum_ifaddr -- インタフェースに設定可能な最大アドレス数を返す。
     209 *  in4_get_maxnum_ifaddr -- インタフェースに設定可能な最大アドレス数を返す。
    222210 */
    223211
     
    229217
    230218/*
    231  *  in4_get_ifaddr -- インタフェースに設定されているアドレスを返す。
     219 *  in4_get_ifaddr -- インタフェースに設定されているアドレスを返す。
    232220 */
    233221
     
    241229
    242230/*
    243  *  in4_set_header -- IPv4 ヘッダを設定する。
     231 *  in4_set_header -- IPv4 ヘッダを設定する。
    244232 */
    245233
     
    251239        T_IFNET         *ifp = IF_GET_IFNET();
    252240
    253         /* IP ヘッダを設定する。*/
     241        /* IP ヘッダを設定する。*/
    254242        ip4h->vhl       = IP4_MAKE_VHL(IPV4_VERSION, IP4_HDR_SIZE >> 2);
    255243        ip4h->len       = htons(IP4_HDR_SIZE + len);
     
    259247        ip4h->id        = ip4h->flg_off = ip4h->sum = 0;
    260248
    261         /* IP アドレスを設定する。*/
     249        /* IP アドレスを設定する。*/
    262250        ip4h->dst       = htonl(*dstaddr);
    263251
     
    271259
    272260/*
    273  *  in4_get_datagram -- IPv4 データグラムを獲得し、ヘッダを設定する。
     261 *  in4_get_datagram -- IPv4 データグラムを獲得し、ヘッダを設定する。
    274262 */
    275263
     
    282270        uint_t  align;
    283271
    284         /* データ長を 4 オクテット境界に調整する。*/
     272        /* データ長を 4 オクテット境界に調整する。*/
    285273        align = (len + 3) >> 2 << 2;
    286274
    287         /* ネットワークバッファを獲得する。*/
     275        /* ネットワークバッファを獲得する。*/
    288276        if ((error = tget_net_buf_ex(nbuf, (uint_t)(IF_IP4_HDR_SIZE + align),
    289277                                           (uint_t)(IF_IP4_HDR_SIZE + maxlen), nbatr, tmout)) != E_OK)
     
    291279
    292280        /*
    293          *  より大きなサイズのネットワークバッファを獲得する場合のみ長さを調整する。
    294          *  より小さなサイズのネットワークバッファの獲得は、送信ウィンドバッファの
    295          *  省コピー機能で使用され、実際に送信するまで、データサイズは決定できない。
     281         *  より大きなサイズのネットワークバッファを獲得する場合のみ長さを調整する。
     282         *  より小さなサイズのネットワークバッファの獲得は、送信ウィンドバッファの
     283         *  省コピー機能で使用され、実際に送信するまで、データサイズは決定できない。
    296284         */
    297285        if ((nbatr & NBA_SEARCH_ASCENT) != 0)
    298286                (*nbuf)->len = (uint16_t)(IF_IP4_HDR_SIZE + len);
    299287
    300         /* IP ヘッダを設定する。*/
     288        /* IP ヘッダを設定する。*/
    301289        if ((error = in4_set_header(*nbuf, len, dstaddr, srcaddr, proto, ttl)) != E_OK) {
    302290                syscall(rel_net_buf(*nbuf));
     
    305293                }
    306294
    307         /* 4 オクテット境界までパディングで埋める。*/
     295        /* 4 オクテット境界までパディングで埋める。*/
    308296        if (align > len)
    309297                memset((GET_IP4_SDU(*nbuf) + len), 0, (size_t)(align - len));
     
    313301
    314302/*
    315  *  in4_cksum -- IPv4 のトランスポート層ヘッダのチェックサムを計算する。
    316  *
    317  *  注意: 戻り値はネットワークバイトオーダ
     303 *  in4_cksum -- IPv4 のトランスポート層ヘッダのチェックサムを計算する。
     304 *
     305 *  注意: 戻り値はネットワークバイトオーダ
    318306 */
    319307
     
    324312        uint_t          align;
    325313
    326         /* 4 オクテット境界のデータ長 */
     314        /* 4 オクテット境界のデータ長 */
    327315        align = (len + 3) >> 2 << 2;
    328316
    329         /* 4 オクテット境界までパディングで埋める。*/
     317        /* 4 オクテット境界までパディングで埋める。*/
    330318        if (align > len)
    331319                memset((uint8_t*)nbuf->buf + off + len, 0, (size_t)(align - len));
     
    340328
    341329/*
    342  *  in_cksum -- チェックサム計算関数、IPv4、ICMPv4 用
    343  *
    344  *  注意: data は 4 オクテット単位でパディングすること。
    345  *        data が 2 オクテット単位にアラインされていないと
    346  *        例外が発生する可能性がある。
    347  *        len  は 4 オクテット単位にアラインされていること。
    348  *
    349  *        戻り値はネットワークバイトオーダ
     330 *  in_cksum -- チェックサム計算関数、IPv4、ICMPv4 用
     331 *
     332 *  注意: data は 4 オクテット単位でパディングすること。
     333 *        data が 2 オクテット単位にアラインされていないと
     334 *        例外が発生する可能性がある。
     335 *        len  は 4 オクテット単位にアラインされていること。
     336 *
     337 *        戻り値はネットワークバイトオーダ
    350338 */
    351339
    352340uint16_t
    353 in_cksum (void *data, uint_t len /*オクテット単位*/)
     341in_cksum (void *data, uint_t len /*オクテット単位*/)
    354342{
    355343        uint16_t        sum;
     
    360348
    361349/*
    362  *  in4_is_dstaddr_accept -- 宛å
    363 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—て正しいかチェックする。
    364  *
    365  *    注意: dstaddr は、
    366  *          TINET-1.2 からネットワークバイトオーダ、
    367  *          TINET-1.1 までは、ホストバイトオーダ
     350 *  in4_is_dstaddr_accept -- 宛先アドレスとして正しいかチェックする。
     351 *
     352 *    注意: dstaddr は、
     353 *          TINET-1.2 からネットワークバイトオーダ、
     354 *          TINET-1.1 までは、ホストバイトオーダ
    368355 */
    369356
     
    378365
    379366/*
    380  *  inn4_is_dstaddr_accept -- 宛å
    381 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—て正しいかチェックする。
    382  *
    383  *    注意: dstaddr は、
    384  *          TINET-1.2 からネットワークバイトオーダ、
    385  *          TINET-1.1 までは、ホストバイトオーダ
     367 *  inn4_is_dstaddr_accept -- 宛先アドレスとして正しいかチェックする。
     368 *
     369 *    注意: dstaddr は、
     370 *          TINET-1.2 からネットワークバイトオーダ、
     371 *          TINET-1.1 までは、ホストバイトオーダ
    386372 */
    387373
     
    399385
    400386/*
    401  * in4_addrwithifp -- 宛å
    402 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    403 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    404  *                   ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã‹ã‚‰æŽ¢ç´¢ã™ã‚‹ã€‚
    405  *                   in6_addrwithifp をシミュレートするだけで、
    406  *                   ã‚¨ãƒ©ãƒ¼ã‚’返すことはない。
     387 * in4_addrwithifp -- 宛先アドレスにふさわしい送信元アドレスを、
     388 *                   ネットワークインタフェースから探索する。
     389 *                   in6_addrwithifp をシミュレートするだけで、
     390 *                   エラーを返すことはない。
    407391 */
    408392
     
    415399
    416400/*
    417  *  in4_add_ifaddr -- インタフェースに IPv4 アドレスを設定する。
     401 *  in4_add_ifaddr -- インタフェースに IPv4 アドレスを設定する。
    418402 */
    419403
     
    431415
    432416/*
    433  *  in4_add_route -- 経路表にエントリを設定する。
     417 *  in4_add_route -- 経路表にエントリを設定する。
    434418 */
    435419
     
    451435
    452436/*
    453  *  in4_rtalloc -- ルーティング表を探索する。
     437 *  in4_rtalloc -- ルーティング表を探索する。
    454438 */
    455439
     
    477461
    478462/*
    479  *  in4_rtredirect -- ルーティング表にエントリを登録する。
    480  *
    481  *    注意: 引数 tmo の単位は [ms]。
     463 *  in4_rtredirect -- ルーティング表にエントリを登録する。
     464 *
     465 *    注意: 引数 tmo の単位は [ms]。
    482466 */
    483467
     
    496480
    497481/*
    498  *  in4_timer -- IPv4 å
    499 ±é€šã‚¿ã‚¤ãƒžãƒ¼
    500  *
    501  *    1秒周期で起動される。
     482 *  in4_timer -- IPv4 共通タイマー
     483 *
     484 *    1秒周期で起動される。
    502485 */
    503486
     
    521504
    522505/*
    523  *  in4_init -- IPv4 å
    524 ±é€šæ©Ÿèƒ½ã‚’初期化する。
     506 *  in4_init -- IPv4 共通機能を初期化する。
    525507 */
    526508
Note: See TracChangeset for help on using the changeset viewer.