Ignore:
Timestamp:
Jul 23, 2017, 2:29:40 PM (7 years ago)
Author:
coas-nagasima
Message:

SVNプロパティを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rubycfg_asp/trunk/asp_dcre/tinet/netinet/in4_subr.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r313 r315  
    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$
     
    120108
    121109/*
    122  *  in_rtinit -- ルーティング表を初期化する。
     110 *  in_rtinit -- ルーティング表を初期化する。
    123111 */
    124112
     
    136124
    137125/*
    138  *  in_rtnewentry -- 新しいエントリを獲得する。
     126 *  in_rtnewentry -- 新しいエントリを獲得する。
    139127 */
    140128
     
    146134        int_t           ix;
    147135
    148         /* 空きエントリを探す。*/
     136        /* 空きエントリを探す。*/
    149137        for (ix = NUM_IN4_STATIC_ROUTE_ENTRY; ix < NUM_IN4_ROUTE_ENTRY; ix ++) {
    150138                rt = &routing4_tbl[ix];
     
    155143                }
    156144
    157         /* expire の単位は [s]。*/
     145        /* expire の単位は [s]。*/
    158146        syscall(get_tim(&now));
    159147        now /= SYSTIM_HZ;
    160148
    161149        if (frt == NULL) {
    162                 /* 空きがなければ、有効時間がもっとも短いエントリを空きにする。*/
     150                /* 空きがなければ、有効時間がもっとも短いエントリを空きにする。*/
    163151                T_IN4_RTENTRY   *srt = NULL;
    164152                int_t           diff, sdiff = INT_MAX;
     
    169157                        diff = (int_t)(rt->expire - now);
    170158                        if (diff <= 0) {        /* rt->expire <= now */
    171                                 /* 既に、有効時間が過ぎている。*/
     159                                /* 既に、有効時間が過ぎている。*/
    172160                                frt = rt;
    173161                                break;
     
    190178
    191179/*
    192  *  in_rttimer -- ルーティング表の管理タイマー
     180 *  in_rttimer -- ルーティング表の管理タイマー
    193181 */
    194182
     
    199187        int_t   ix;
    200188
    201         /* expire の単位は [s]。*/
     189        /* expire の単位は [s]。*/
    202190        syscall(get_tim(&now));
    203191        now /= SYSTIM_HZ;
     
    214202
    215203/*
    216  *  in4_get_maxnum_ifaddr -- インタフェースに設定可能な最大アドレス数を返す。
     204 *  in4_get_maxnum_ifaddr -- インタフェースに設定可能な最大アドレス数を返す。
    217205 */
    218206
     
    224212
    225213/*
    226  *  in4_get_ifaddr -- インタフェースに設定されているアドレスを返す。
     214 *  in4_get_ifaddr -- インタフェースに設定されているアドレスを返す。
    227215 */
    228216
     
    236224
    237225/*
    238  *  in4_set_header -- IPv4 ヘッダを設定する。
     226 *  in4_set_header -- IPv4 ヘッダを設定する。
    239227 */
    240228
     
    246234        T_IFNET         *ifp = IF_GET_IFNET();
    247235
    248         /* IP ヘッダを設定する。*/
     236        /* IP ヘッダを設定する。*/
    249237        ip4h->vhl       = IP4_MAKE_VHL(IPV4_VERSION, IP4_HDR_SIZE >> 2);
    250238        ip4h->len       = htons(IP4_HDR_SIZE + len);
     
    254242        ip4h->id        = ip4h->flg_off = ip4h->sum = 0;
    255243
    256         /* IP アドレスを設定する。*/
     244        /* IP アドレスを設定する。*/
    257245        ip4h->dst       = htonl(*dstaddr);
    258246
     
    266254
    267255/*
    268  *  in4_get_datagram -- IPv4 データグラムを獲得し、ヘッダを設定する。
     256 *  in4_get_datagram -- IPv4 データグラムを獲得し、ヘッダを設定する。
    269257 */
    270258
     
    277265        uint_t  align;
    278266
    279         /* データ長を 4 オクテット境界に調整する。*/
     267        /* データ長を 4 オクテット境界に調整する。*/
    280268        align = (len + 3) >> 2 << 2;
    281269
    282         /* ネットワークバッファを獲得する。*/
     270        /* ネットワークバッファを獲得する。*/
    283271        if ((error = tget_net_buf_ex(nbuf, (uint_t)(IF_IP4_HDR_SIZE + align),
    284272                                           (uint_t)(IF_IP4_HDR_SIZE + maxlen), nbatr, tmout)) != E_OK)
     
    286274
    287275        /*
    288          *  より大きなサイズのネットワークバッファを獲得する場合のみ長さを調整する。
    289          *  より小さなサイズのネットワークバッファの獲得は、送信ウィンドバッファの
    290          *  省コピー機能で使用され、実際に送信するまで、データサイズは決定できない。
     276         *  より大きなサイズのネットワークバッファを獲得する場合のみ長さを調整する。
     277         *  より小さなサイズのネットワークバッファの獲得は、送信ウィンドバッファの
     278         *  省コピー機能で使用され、実際に送信するまで、データサイズは決定できない。
    291279         */
    292280        if ((nbatr & NBA_SEARCH_ASCENT) != 0)
    293281                (*nbuf)->len = (uint16_t)(IF_IP4_HDR_SIZE + len);
    294282
    295         /* IP ヘッダを設定する。*/
     283        /* IP ヘッダを設定する。*/
    296284        if ((error = in4_set_header(*nbuf, len, dstaddr, srcaddr, proto, ttl)) != E_OK)
    297285                return error;
    298286
    299         /* 4 オクテット境界までパディングで埋める。*/
     287        /* 4 オクテット境界までパディングで埋める。*/
    300288        if (align > len)
    301289                memset((GET_IP4_SDU(*nbuf) + len), 0, (size_t)(align - len));
     
    305293
    306294/*
    307  *  in4_cksum -- IPv4 のトランスポート層ヘッダのチェックサムを計算する。
    308  *
    309  *  注意: 戻り値はネットワークバイトオーダ
     295 *  in4_cksum -- IPv4 のトランスポート層ヘッダのチェックサムを計算する。
     296 *
     297 *  注意: 戻り値はネットワークバイトオーダ
    310298 */
    311299
     
    316304        uint_t          align;
    317305
    318         /* 4 オクテット境界のデータ長 */
     306        /* 4 オクテット境界のデータ長 */
    319307        align = (len + 3) >> 2 << 2;
    320308
    321         /* 4 オクテット境界までパディングで埋める。*/
     309        /* 4 オクテット境界までパディングで埋める。*/
    322310        if (align > len)
    323311                memset((uint8_t*)nbuf->buf + off + len, 0, (size_t)(align - len));
     
    332320
    333321/*
    334  *  in_cksum -- チェックサム計算関数、IPv4、ICMPv4 用
    335  *
    336  *  注意: data は 4 オクテット単位でパディングすること。
    337  *        data が 2 オクテット単位にアラインされていないと
    338  *        例外が発生する可能性がある。
    339  *        len  は 4 オクテット単位にアラインされていること。
    340  *
    341  *        戻り値はネットワークバイトオーダ
     322 *  in_cksum -- チェックサム計算関数、IPv4、ICMPv4 用
     323 *
     324 *  注意: data は 4 オクテット単位でパディングすること。
     325 *        data が 2 オクテット単位にアラインされていないと
     326 *        例外が発生する可能性がある。
     327 *        len  は 4 オクテット単位にアラインされていること。
     328 *
     329 *        戻り値はネットワークバイトオーダ
    342330 */
    343331
    344332uint16_t
    345 in_cksum (void *data, uint_t len /*オクテット単位*/)
     333in_cksum (void *data, uint_t len /*オクテット単位*/)
    346334{
    347335        uint16_t        sum;
     
    352340
    353341/*
    354  *  in4_is_dstaddr_accept -- 宛å
    355 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—て正しいかチェックする。
    356  *
    357  *    注意: dstaddr は、
    358  *          TINET-1.2 からネットワークバイトオーダ、
    359  *          TINET-1.1 までは、ホストバイトオーダ
     342 *  in4_is_dstaddr_accept -- 宛先アドレスとして正しいかチェックする。
     343 *
     344 *    注意: dstaddr は、
     345 *          TINET-1.2 からネットワークバイトオーダ、
     346 *          TINET-1.1 までは、ホストバイトオーダ
    360347 */
    361348
     
    370357
    371358/*
    372  *  inn4_is_dstaddr_accept -- 宛å
    373 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—て正しいかチェックする。
    374  *
    375  *    注意: dstaddr は、
    376  *          TINET-1.2 からネットワークバイトオーダ、
    377  *          TINET-1.1 までは、ホストバイトオーダ
     359 *  inn4_is_dstaddr_accept -- 宛先アドレスとして正しいかチェックする。
     360 *
     361 *    注意: dstaddr は、
     362 *          TINET-1.2 からネットワークバイトオーダ、
     363 *          TINET-1.1 までは、ホストバイトオーダ
    378364 */
    379365
     
    391377
    392378/*
    393  * in4_addrwithifp -- 宛å
    394 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    395 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    396  *                   ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã‹ã‚‰æŽ¢ç´¢ã™ã‚‹ã€‚
    397  *                   in6_addrwithifp をシミュレートするだけで、
    398  *                   ã‚¨ãƒ©ãƒ¼ã‚’返すことはない。
     379 * in4_addrwithifp -- 宛先アドレスにふさわしい送信元アドレスを、
     380 *                   ネットワークインタフェースから探索する。
     381 *                   in6_addrwithifp をシミュレートするだけで、
     382 *                   エラーを返すことはない。
    399383 */
    400384
     
    407391
    408392/*
    409  *  in4_add_ifaddr -- インタフェースに IPv4 アドレスを設定する。
     393 *  in4_add_ifaddr -- インタフェースに IPv4 アドレスを設定する。
    410394 */
    411395
     
    423407
    424408/*
    425  *  in4_add_route -- 経路表にエントリを設定する。
     409 *  in4_add_route -- 経路表にエントリを設定する。
    426410 */
    427411
     
    443427
    444428/*
    445  *  in4_rtalloc -- ルーティング表を探索する。
     429 *  in4_rtalloc -- ルーティング表を探索する。
    446430 */
    447431
     
    466450
    467451/*
    468  *  in4_rtredirect -- ルーティング表にエントリを登録する。
    469  *
    470  *    注意: 引数 tmo の単位は [ms]。
     452 *  in4_rtredirect -- ルーティング表にエントリを登録する。
     453 *
     454 *    注意: 引数 tmo の単位は [ms]。
    471455 */
    472456
     
    485469
    486470/*
    487  *  in4_timer -- IPv4 å
    488 ±é€šã‚¿ã‚¤ãƒžãƒ¼
    489  *
    490  *    1秒周期で起動される。
     471 *  in4_timer -- IPv4 共通タイマー
     472 *
     473 *    1秒周期で起動される。
    491474 */
    492475
     
    510493
    511494/*
    512  *  in4_init -- IPv4 å
    513 ±é€šæ©Ÿèƒ½ã‚’初期化する。
     495 *  in4_init -- IPv4 共通機能を初期化する。
    514496 */
    515497
Note: See TracChangeset for help on using the changeset viewer.