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/in_subr.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  *  in4_get_ifaddr -- インタフェースに設定されているアドレスを返す。
     112 *  in4_get_ifaddr -- インタフェースに設定されているアドレスを返す。
    125113 */
    126114
     
    134122
    135123/*
    136  *  ip2str -- IPv4 アドレスを文字列に変換する。
     124 *  ip2str -- IPv4 アドレスを文字列に変換する。
    137125 */
    138126
     
    166154
    167155/*
    168  *  in4_set_header -- IPv4 ヘッダを設定する。
     156 *  in4_set_header -- IPv4 ヘッダを設定する。
    169157 */
    170158
     
    176164        T_IFNET         *ifp = IF_GET_IFNET();
    177165
    178         /* IP ヘッダを設定する。*/
     166        /* IP ヘッダを設定する。*/
    179167        ip4h->vhl       = IP4_MAKE_VHL(IPV4_VERSION, IP4_HDR_SIZE >> 2);
    180168        ip4h->len       = htons(IP4_HDR_SIZE + len);
     
    184172        ip4h->id        = ip4h->flg_off = ip4h->sum = 0;
    185173
    186         /* IP アドレスを設定する。*/
     174        /* IP アドレスを設定する。*/
    187175        ip4h->dst       = htonl(*dstaddr);
    188176
     
    196184
    197185/*
    198  *  in4_get_datagram -- IPv4 データグラムを獲得し、ヘッダを設定する。
     186 *  in4_get_datagram -- IPv4 データグラムを獲得し、ヘッダを設定する。
    199187 */
    200188
     
    207195        uint_t  align;
    208196
    209         /* データ長を 4 オクテット境界に調整する。*/
     197        /* データ長を 4 オクテット境界に調整する。*/
    210198        align = (len + 3) >> 2 << 2;
    211199
    212         /* ネットワークバッファを獲得する。*/
     200        /* ネットワークバッファを獲得する。*/
    213201        if ((error = tget_net_buf_ex(nbuf, (uint_t)(IF_IP4_HDR_SIZE + align),
    214202                                           (uint_t)(IF_IP4_HDR_SIZE + maxlen), nbatr, tmout)) != E_OK)
     
    216204
    217205        /*
    218          *  より大きなサイズのネットワークバッファを獲得する場合のみ長さを調整する。
    219          *  より小さなサイズのネットワークバッファの獲得は、送信ウィンドバッファの
    220          *  省コピー機能で使用され、実際に送信するまで、データサイズは決定できない。
     206         *  より大きなサイズのネットワークバッファを獲得する場合のみ長さを調整する。
     207         *  より小さなサイズのネットワークバッファの獲得は、送信ウィンドバッファの
     208         *  省コピー機能で使用され、実際に送信するまで、データサイズは決定できない。
    221209         */
    222210        if ((nbatr & NBA_SEARCH_ASCENT) != 0)
    223211                (*nbuf)->len = (uint16_t)(IF_IP4_HDR_SIZE + len);
    224212
    225         /* IP ヘッダを設定する。*/
     213        /* IP ヘッダを設定する。*/
    226214        if ((error = in4_set_header(*nbuf, len, dstaddr, srcaddr, proto, ttl)) != E_OK)
    227215                return error;
    228216
    229         /* 4 オクテット境界までパディングで埋める。*/
     217        /* 4 オクテット境界までパディングで埋める。*/
    230218        if (align > len)
    231219                memset((GET_IP4_SDU(*nbuf) + len), 0, (size_t)(align - len));
     
    235223
    236224/*
    237  *  in4_cksum -- IPv4 のトランスポート層ヘッダのチェックサムを計算する。
    238  *
    239  *  注意: 戻り値はネットワークバイトオーダ
     225 *  in4_cksum -- IPv4 のトランスポート層ヘッダのチェックサムを計算する。
     226 *
     227 *  注意: 戻り値はネットワークバイトオーダ
    240228 */
    241229
     
    246234        uint_t          align;
    247235
    248         /* 4 オクテット境界のデータ長 */
     236        /* 4 オクテット境界のデータ長 */
    249237        align = (len + 3) >> 2 << 2;
    250238
    251         /* 4 オクテット境界までパディングで埋める。*/
     239        /* 4 オクテット境界までパディングで埋める。*/
    252240        if (align > len)
    253241                memset((uint8_t*)nbuf->buf + off + len, 0, (size_t)(align - len));
     
    262250
    263251/*
    264  *  in_cksum -- チェックサム計算関数、IPv4、ICMPv4 用
    265  *
    266  *  注意: data は 4 オクテット単位でパディングすること。
    267  *        data が 2 オクテット単位にアラインされていないと
    268  *        例外が発生する可能性がある。
    269  *        len  は 4 オクテット単位にアラインされていること。
    270  *
    271  *        戻り値はネットワークバイトオーダ
     252 *  in_cksum -- チェックサム計算関数、IPv4、ICMPv4 用
     253 *
     254 *  注意: data は 4 オクテット単位でパディングすること。
     255 *        data が 2 オクテット単位にアラインされていないと
     256 *        例外が発生する可能性がある。
     257 *        len  は 4 オクテット単位にアラインされていること。
     258 *
     259 *        戻り値はネットワークバイトオーダ
    272260 */
    273261
    274262uint16_t
    275 in_cksum (void *data, uint_t len /*オクテット単位*/)
     263in_cksum (void *data, uint_t len /*オクテット単位*/)
    276264{
    277265        uint16_t        sum;
     
    282270
    283271/*
    284  *  in4_is_dstaddr_accept -- 宛å
    285 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—て正しいかチェックする。
    286  *
    287  *    注意: dstaddr は、
    288  *          TINET-1.2 からネットワークバイトオーダ、
    289  *          TINET-1.1 までは、ホストバイトオーダ
     272 *  in4_is_dstaddr_accept -- 宛先アドレスとして正しいかチェックする。
     273 *
     274 *    注意: dstaddr は、
     275 *          TINET-1.2 からネットワークバイトオーダ、
     276 *          TINET-1.1 までは、ホストバイトオーダ
    290277 */
    291278
     
    300287
    301288/*
    302  * in4_ifawithifp -- 宛å
    303 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    304 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    305  *                   ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã‹ã‚‰æŽ¢ç´¢ã™ã‚‹ã€‚
    306  *                   in6_ifawithifp をシミュレートするだけで、
    307  *                   ã‚¨ãƒ©ãƒ¼ã‚’返すことはない。
     289 * in4_ifawithifp -- 宛先アドレスにふさわしい送信元アドレスを、
     290 *                   ネットワークインタフェースから探索する。
     291 *                   in6_ifawithifp をシミュレートするだけで、
     292 *                   エラーを返すことはない。
    308293 */
    309294
     
    315300
    316301/*
    317  *  in4_add_ifaddr -- インタフェースに IPv4 アドレスを設定する。
     302 *  in4_add_ifaddr -- インタフェースに IPv4 アドレスを設定する。
    318303 */
    319304
     
    331316
    332317/*
    333  *  in4_add_route -- 経路表にエントリを設定する。
     318 *  in4_add_route -- 経路表にエントリを設定する。
    334319 */
    335320
     
    351336
    352337/*
    353  *  in4_rtalloc -- ルーティング表を探索する。
     338 *  in4_rtalloc -- ルーティング表を探索する。
    354339 */
    355340
     
    374359
    375360/*
    376  *  in4_rtredirect -- ルーティング表にエントリを登録する。
    377  *
    378  *    注意: 引数 tmo の単位は [ms]。
     361 *  in4_rtredirect -- ルーティング表にエントリを登録する。
     362 *
     363 *    注意: 引数 tmo の単位は [ms]。
    379364 */
    380365
     
    393378
    394379/*
    395  *  in4_timer -- IPv4 å
    396 ±é€šã‚¿ã‚¤ãƒžãƒ¼
    397  *
    398  *    1秒周期で起動される。
     380 *  in4_timer -- IPv4 共通タイマー
     381 *
     382 *    1秒周期で起動される。
    399383 */
    400384
     
    418402
    419403/*
    420  *  in4_init -- IPv4 å
    421 ±é€šæ©Ÿèƒ½ã‚’初期化する。
     404 *  in4_init -- IPv4 共通機能を初期化する。
    422405 */
    423406
     
    439422
    440423/*
    441  *  in_rtinit -- ルーティング表を初期化する。
     424 *  in_rtinit -- ルーティング表を初期化する。
    442425 */
    443426
     
    455438
    456439/*
    457  *  in_rtnewentry -- 新しいエントリを獲得する。
     440 *  in_rtnewentry -- 新しいエントリを獲得する。
    458441 */
    459442
     
    465448        int_t           ix;
    466449
    467         /* 空きエントリを探す。*/
     450        /* 空きエントリを探す。*/
    468451        for (ix = NUM_STATIC_ROUTE_ENTRY; ix < NUM_ROUTE_ENTRY; ix ++) {
    469452                rt = &routing_tbl[ix];
     
    474457                }
    475458
    476         /* expire の単位は [s]。*/
     459        /* expire の単位は [s]。*/
    477460        syscall(get_tim(&now));
    478461        now /= SYSTIM_HZ;
    479462
    480463        if (frt == NULL) {
    481                 /* 空きがなければ、有効時間がもっとも短いエントリを空きにする。*/
     464                /* 空きがなければ、有効時間がもっとも短いエントリを空きにする。*/
    482465                T_IN_RTENTRY    *srt = NULL;
    483466                int_t           diff, sdiff = INT_MAX;
     
    488471                        diff = (int_t)(rt->expire - now);
    489472                        if (diff <= 0) {        /* rt->expire <= now */
    490                                 /* 既に、有効時間が過ぎている。*/
     473                                /* 既に、有効時間が過ぎている。*/
    491474                                frt = rt;
    492475                                break;
     
    509492
    510493/*
    511  *  in_rttimer -- ルーティング表の管理タイマー
     494 *  in_rttimer -- ルーティング表の管理タイマー
    512495 */
    513496
     
    518501        int_t   ix;
    519502
    520         /* expire の単位は [s]。*/
     503        /* expire の単位は [s]。*/
    521504        syscall(get_tim(&now));
    522505        now /= SYSTIM_HZ;
     
    533516
    534517/*
    535  *  in_cksum_sum -- チェックサムの合計計算関数
    536  *
    537  *  注意: data は 4 オクテット単位でパディングすること。
    538  *        data が 2 オクテット単位にアラインされていないと
    539  *        例外が発生する可能性がある。
    540  *        len  は 4 オクテット単位にアラインされていること。
    541  *
    542  *        戻り値はホストバイトオーダ
     518 *  in_cksum_sum -- チェックサムの合計計算関数
     519 *
     520 *  注意: data は 4 オクテット単位でパディングすること。
     521 *        data が 2 オクテット単位にアラインされていないと
     522 *        例外が発生する可能性がある。
     523 *        len  は 4 オクテット単位にアラインされていること。
     524 *
     525 *        戻り値はホストバイトオーダ
    543526 */
    544527
    545528uint32_t
    546 in_cksum_sum (void *data, uint_t len /*オクテット単位*/)
     529in_cksum_sum (void *data, uint_t len /*オクテット単位*/)
    547530{
    548531        uint32_t sum = 0;
     
    562545
    563546/*
    564  *  in_cksum_carry -- チェックサムの桁上げ計算関数
    565  *
    566  *  注意: data は 4 オクテット単位でパディングすること。
    567  *        data が 2 オクテット単位にアラインされていないと
    568  *        例外が発生する可能性がある。
    569  *        len  は 4 オクテット単位にアラインされていること。
     547 *  in_cksum_carry -- チェックサムの桁上げ計算関数
     548 *
     549 *  注意: data は 4 オクテット単位でパディングすること。
     550 *        data が 2 オクテット単位にアラインされていないと
     551 *        例外が発生する可能性がある。
     552 *        len  は 4 オクテット単位にアラインされていること。
    570553 */
    571554
     
    584567
    585568/*
    586  *  in_strtfn -- API 機能コードの文字表現を返す。
     569 *  in_strtfn -- API 機能コードの文字表現を返す。
    587570 */
    588571
     
    592575        switch (fncd) {
    593576
    594         /* TCP 関係 */
     577        /* TCP 関係 */
    595578
    596579        case TFN_TCP_CRE_REP:
     
    655638                break;
    656639
    657         /* UDP 関係 */
     640        /* UDP 関係 */
    658641
    659642        case TFN_UDP_CRE_CEP:
Note: See TracChangeset for help on using the changeset viewer.