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/udp_input.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$
     
    129117
    130118/*
    131  *  SNMP の 管理æƒ
    132 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     119 *  SNMP の 管理情報ベース (MIB)
    133120 */
    134121
     
    142129
    143130/*
    144  *  udp_dstaddr_accept -- UDP のあてå
    145 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒæ­£ã—いかチェックする。
    146  *
    147  *    DHCP_CFG が定義されているときは、以下のデータグラムを受信する。
    148  *
    149  *      ・あてå
    150 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒ–ロードキャスト
    151  *      ・ローカルアドレスが未定義
     131 *  udp_dstaddr_accept -- UDP のあて先アドレスが正しいかチェックする。
     132 *
     133 *    DHCP_CFG が定義されているときは、以下のデータグラムを受信する。
     134 *
     135 *      ・あて先アドレスがブロードキャスト
     136 *      ・ローカルアドレスが未定義
    152137 */
    153138
     
    168153
    169154/*
    170  *  udp_dstaddr_accept -- UDP のあてå
    171 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒæ­£ã—いかチェックする。
    172  *
    173  *    以下の場合もデータグラムを受信する。
    174  *
    175  *      ・あてå
    176 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒ–ロードキャスト
     155 *  udp_dstaddr_accept -- UDP のあて先アドレスが正しいかチェックする。
     156 *
     157 *    以下の場合もデータグラムを受信する。
     158 *
     159 *      ・あて先アドレスがブロードキャスト
    177160 */
    178161
     
    194177
    195178/*
    196  *  udp_dstaddr_accept -- UDP のあてå
    197 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒæ­£ã—いかチェックする。
    198  *
    199  *    以下の場合もデータグラムを受信する。
    200  *
    201  *      ・あてå
    202 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒ–ロードキャスト
     179 *  udp_dstaddr_accept -- UDP のあて先アドレスが正しいかチェックする。
     180 *
     181 *    以下の場合もデータグラムを受信する。
     182 *
     183 *      ・あて先アドレスがブロードキャスト
    203184 */
    204185
     
    222203
    223204/*
    224  *  udp_dstaddr_accept -- UDP のあてå
    225 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒæ­£ã—いかチェックする。
    226  *
    227  *    以下の場合もデータグラムを受信する。
    228  *
    229  *      ・あてå
    230 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆ
     205 *  udp_dstaddr_accept -- UDP のあて先アドレスが正しいかチェックする。
     206 *
     207 *    以下の場合もデータグラムを受信する。
     208 *
     209 *      ・あて先アドレスがマルチキャスト
    231210 */
    232211
     
    243222
    244223/*
    245  *  udp_input -- UDP のå
    246 ¥åŠ›é–¢æ•°
     224 *  udp_input -- UDP の入力関数
    247225 */
    248226
     
    263241        NET_COUNT_MIB(udp_stats.udpInDatagrams, 1);
    264242
    265         /* ヘッダ長をチェックする。*/
     243        /* ヘッダ長をチェックする。*/
    266244        if (input->len < hlen + UDP_HDR_SIZE)
    267245                goto buf_rel;
     
    269247        udph = (T_UDP_HDR *)(input->buf + *offp);
    270248
    271         /* データグラム長をチェックする */
     249        /* データグラム長をチェックする */
    272250        ulen  = ntohs(udph->ulen);
    273251        if (ulen != input->len - hlen)
    274252                goto buf_rel;
    275253
    276         /* 宛å
    277 ˆãƒãƒ¼ãƒˆãŒ 0 のデータグラムは破棄する。RFC768 */
     254        /* 宛先ポートが 0 のデータグラムは破棄する。RFC768 */
    278255        if (udph->dport == 0)
    279256                goto buf_rel;
     
    281258#ifdef UDP_CFG_IN_CHECKSUM
    282259
    283         /* チェックサムをチェックする */
     260        /* チェックサムをチェックする */
    284261        if (udph->sum && IN_CKSUM(input, IPPROTO_UDP, *offp, ulen) != 0)
    285262                goto buf_rel;
     
    289266        iph = GET_IP_HDR(input);
    290267
    291         /* 宛å
    292 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ãƒãƒ¼ãƒˆã‚’チェックする */
     268        /* 宛先アドレスとポートをチェックする */
    293269        for (ix = tmax_udp_ccepid; ix -- > 0; ) {
    294270                cep = &udp_cep[ix];
     
    298274                        len = (uint_t)(ntohs(udph->ulen) - UDP_HDR_SIZE);
    299275
    300                         if (cep->rcv_tskid != TA_NULL) {        /* 非ノンブロッキングコールでペンディング中 */
     276                        if (cep->rcv_tskid != TA_NULL) {        /* 非ノンブロッキングコールでペンディング中 */
    301277                                if (psnd_dtq(cep->rcvqid, (intptr_t)input) != E_OK)
    302278                                        goto buf_rel;
     
    305281#ifdef UDP_CFG_NON_BLOCKING
    306282
    307                         else if (cep->rcv_p_dstaddr != NULL) {  /* ノンブロッキングコールでペンディング中 */
    308 
    309                                 /* p_dstaddr を設定する。*/
     283                        else if (cep->rcv_p_dstaddr != NULL) {  /* ノンブロッキングコールでペンディング中 */
     284
     285                                /* p_dstaddr を設定する。*/
    310286                                cep->rcv_p_dstaddr->portno = ntohs(udph->sport);
    311287                                IN_COPY_TO_HOST(&cep->rcv_p_dstaddr->ipaddr, &GET_IP_HDR(input)->src);
    312288
    313                                 /* データをバッファに移す。*/
     289                                /* データをバッファに移す。*/
    314290                                memcpy(cep->rcv_data, GET_UDP_SDU(input, *offp),
    315291                                       (size_t)(len < cep->rcv_len ? len : cep->rcv_len));
     
    337313                        else if (IS_PTR_DEFINED(cep->callback)) {
    338314
    339                                 /* コールバック関数を呼び出す。*/
     315                                /* コールバック関数を呼び出す。*/
    340316                                cep->cb_netbuf = input;
    341317
     
    351327
    352328                                /*
    353                                  *  ネットワークバッファがそのままであれば、コールバック関数å†
    354 ã§
    355                                  *  データを読み出さなかったことになるので、捨てる。
     329                                 *  ネットワークバッファがそのままであれば、コールバック関数内で
     330                                 *  データを読み出さなかったことになるので、捨てる。
    356331                                 */
    357332                                if (cep->cb_netbuf != NULL)
     
    369344#if defined(SUPPORT_INET4)
    370345
    371         /* ローカル IP アドレスに届いたデータグラムのみ ICMP エラーを通知する。*/
     346        /* ローカル IP アドレスに届いたデータグラムのみ ICMP エラーを通知する。*/
    372347        if (ntohl(iph->dst) == IF_GET_IFNET()->in_ifaddr.addr) {
    373348                syslog(LOG_INFO, "[UDP] unexp port: %d.", ntohs(udph->dport));
    374349
    375350                icmp_error(ICMP4_UNREACH_PORT, input);
    376                 /* icmp_error では、ネットワークバッファ input を返却しないので下へ抜ける。*/
     351                /* icmp_error では、ネットワークバッファ input を返却しないので下へ抜ける。*/
    377352                }
    378353
     
    381356#if defined(SUPPORT_INET6)
    382357
    383         /* マルチキャストアドレスに届いたデータグラムは ICMP エラーを通知しない。*/
     358        /* マルチキャストアドレスに届いたデータグラムは ICMP エラーを通知しない。*/
    384359        if (!IN6_IS_ADDR_MULTICAST(&iph->dst)) {
    385360                syslog(LOG_INFO, "[UDP] unexp port: %d.", ntohs(udph->dport));
    386361
    387                 /* icmp6_error で、ネットワークバッファ input を返却する。*/
     362                /* icmp6_error で、ネットワークバッファ input を返却する。*/
    388363                icmp6_error(input, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_NOPORT, 0);
    389364
Note: See TracChangeset for help on using the changeset viewer.