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/udpn_usrreq.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$
     
    8371
    8472/*
    85  *  udp_send_data -- パケット送信の主要部
     73 *  udp_send_data -- パケット送信の主要部
    8674 */
    8775
     
    10189        NET_COUNT_UDP(net_count_udp.out_packets, 1);
    10290
    103         /* IP データグラム割り当ての時間を tmout から減ずる。*/
     91        /* IP データグラム割り当ての時間を tmout から減ずる。*/
    10492        if (!(tmout == TMO_POL || tmout == TMO_FEVR))
    10593                syscall(get_tim(&before));
    10694
    107         /* IP データグラムを割り当てる。*/
     95        /* IP データグラムを割り当てる。*/
    10896        if ((error = IN_GET_DATAGRAM(&output, (uint_t)(UDP_HDR_SIZE + len), 0,
    10997                                     &p_dstaddr->ipaddr,
     
    113101                goto err_ret;
    114102
    115         /* IP データグラム割り当ての時間を tmout から減ずる。*/
     103        /* IP データグラム割り当ての時間を tmout から減ずる。*/
    116104        if (!(tmout == TMO_POL || tmout == TMO_FEVR)) {
    117105                syscall(get_tim(&after));
     
    124112                }
    125113
    126         /* UDP ヘッダにæƒ
    127 å ±ã‚’設定する。*/
     114        /* UDP ヘッダに情報を設定する。*/
    128115        udph            = GET_UDP_HDR(output, IF_IP_UDP_HDR_OFFSET(output));
    129116        udph->sport     = htons(cep->myaddr.portno);
     
    132119        udph->sum       = 0;
    133120
    134         /* データをコピーする。*/
     121        /* データをコピーする。*/
    135122        memcpy((void*)GET_UDP_SDU(output, IF_IP_UDP_HDR_OFFSET(output)), data, (size_t)len);
    136123
     
    139126        sum = IN_CKSUM(output, IPPROTO_UDP, IF_IP_UDP_HDR_OFFSET(output), (uint_t)(UDP_HDR_SIZE + len));
    140127
    141         /* 計算したチェックサムの値が 0 なら 0xffff をå
    142 ¥ã‚Œã‚‹ã€‚*/
     128        /* 計算したチェックサムの値が 0 なら 0xffff を入れる。*/
    143129        if (sum == 0)
    144130                sum = 0xffff;
     
    147133#endif  /* of #ifdef UDP_CFG_OUT_CHECKSUM */
    148134
    149         /* ネットワークバッファ長を調整する。*/
     135        /* ネットワークバッファ長を調整する。*/
    150136        output->len = (uint16_t)(IF_IP_UDP_HDR_SIZE(output) + len);
    151137
    152         /* ネットワーク層 (IP) の出力関数を呼び出す。*/
     138        /* ネットワーク層 (IP) の出力関数を呼び出す。*/
    153139        if ((error = IP_OUTPUT(output, tmout)) == E_OK) {
    154140                NET_COUNT_MIB(udp_stats.udpOutDatagrams, 1);
     
    166152
    167153/*
    168  *  udp_cancel_cep -- ペンディングしている処理をキャンセルする。
    169  *
    170  *    udp_can_cep から呼出されるメイン関数
     154 *  udp_cancel_cep -- ペンディングしている処理をキャンセルする。
     155 *
     156 *    udp_can_cep から呼出されるメイン関数
    171157 */
    172158
     
    178164        ER      error = E_OK, snd_err, rcv_err;
    179165
    180         /* UDP 通信端点をチェックする。*/
     166        /* UDP 通信端点をチェックする。*/
    181167        if (!VALID_UDP_CEP(cep))
    182168                return E_NOEXS;
    183169
    184         /* API 機能コードをチェックする。*/
     170        /* API 機能コードをチェックする。*/
    185171        if (!VALID_TFN_UDP_CAN(fncd))
    186172                return E_PAR;
    187173
    188         /* 通信端点をロックする。*/
     174        /* 通信端点をロックする。*/
    189175        syscall(wai_sem(cep->semid_lock));
    190176
    191         if (fncd == TFN_UDP_ALL) {      /* TFN_UDP_ALL の処理 */
     177        if (fncd == TFN_UDP_ALL) {      /* TFN_UDP_ALL の処理 */
    192178
    193179                snd_err = UDP_CAN_SND(cep, E_RLWAI);
     
    195181
    196182                /*
    197                  *  snd_err と rcv_err のどちらも EV_NOPND
    198                  *  なら、ペンディングしていないのでエラー
     183                 *  snd_err と rcv_err のどちらも EV_NOPND
     184                 *  なら、ペンディングしていないのでエラー
    199185                 */
    200186                if (snd_err == EV_NOPND && rcv_err == EV_NOPND)
     
    212198                        }
    213199                }
    214         else if (fncd == TFN_UDP_SND_DAT) {     /* 送信処理のキャンセル */
     200        else if (fncd == TFN_UDP_SND_DAT) {     /* 送信処理のキャンセル */
    215201                if ((error = UDP_CAN_SND(cep, E_RLWAI)) == EV_NOPND)
    216202                        error = E_OBJ;
    217203                }
    218         else if (fncd == TFN_UDP_RCV_DAT) {     /* 受信処理のキャンセル */
     204        else if (fncd == TFN_UDP_RCV_DAT) {     /* 受信処理のキャンセル */
    219205                if ((error = UDP_CAN_RCV(cep, E_RLWAI)) == EV_NOPND)
    220206                        error = E_OBJ;
     
    223209                error = E_PAR;
    224210
    225         /* 通信端点をロックを解除する。*/
     211        /* 通信端点をロックを解除する。*/
    226212        syscall(sig_sem(cep->semid_lock));
    227213
     
    236222
    237223/*
    238  *  udp_can_cep -- ペンディングしている処理のキャンセル【標準機能】
     224 *  udp_can_cep -- ペンディングしている処理のキャンセル【標準機能】
    239225 */
    240226
     
    246232        T_UDP_CEP       *cep;
    247233
    248         /* UDP 通信端点 ID をチェックする。*/
     234        /* UDP 通信端点 ID をチェックする。*/
    249235        if (!VALID_UDP_CEPID(cepid))
    250236                return E_ID;
    251237
    252         /* UDP 通信端点を得る。*/
     238        /* UDP 通信端点を得る。*/
    253239        cep = GET_UDP_CEP(cepid);
    254240
    255         /* メイン関数を呼び出す。*/
     241        /* メイン関数を呼び出す。*/
    256242        return UDP_CANCEL_CEP(cep, fncd);
    257243        }
     
    264250
    265251/*
    266  *  udp_cre_cep -- UDP 通信端点の生成【拡張機能】
     252 *  udp_cre_cep -- UDP 通信端点の生成【拡張機能】
    267253 */
    268254
     
    275261        ER              error;
    276262
    277         /* UDP 通信端点 ID をチェックする。*/
     263        /* UDP 通信端点 ID をチェックする。*/
    278264        if (!VALID_UDP_CEPID(cepid))
    279265                return E_ID;
    280266
    281         /* pk_ccep が NULL ならエラー */
     267        /* pk_ccep が NULL ならエラー */
    282268        if (pk_ccep == NULL)
    283269                return E_PAR;
     
    286272
    287273        /*
    288          * API が IPv6 で IPv4 射影アドレスが認められていないのにもかかわらず、
    289          * IPv4 射影アドレスが指定されたらエラー
     274         * API が IPv6 で IPv4 射影アドレスが認められていないのにもかかわらず、
     275         * IPv4 射影アドレスが指定されたらエラー
    290276         */
    291277        if (in6_is_addr_ipv4mapped(&pk_ccep->myaddr.ipaddr))
     
    294280#endif  /* of #if (API_PROTO == API_PROTO_IPV6) && !defined(DAPI_CFG_IP4MAPPED_ADDR) */
    295281
    296         /* UDP 通信端点を得る。*/
     282        /* UDP 通信端点を得る。*/
    297283        cep = GET_UDP_CEP(cepid);
    298284
    299         /* UDP 通信端点をチェックする。*/
     285        /* UDP 通信端点をチェックする。*/
    300286        if (VALID_UDP_CEP(cep))
    301287                return E_OBJ;
    302288
    303         /* UDP 通信端点が、動的生成用でなければエラー */
     289        /* UDP 通信端点が、動的生成用でなければエラー */
    304290        if (!DYNAMIC_UDP_CEP(cep))
    305291                return E_ID;
    306292
    307         /* 通信端点をロックする。*/
     293        /* 通信端点をロックする。*/
    308294        syscall(wai_sem(cep->semid_lock));
    309295
    310296        /*
    311          * UDP 通信端点をチェックする。生成済みであればエラー
     297         * UDP 通信端点をチェックする。生成済みであればエラー
    312298         */
    313299        if (VALID_UDP_CEP(cep))
     
    316302
    317303                /*
    318                  *  自ポート番号が UDP_PORTANY なら、自動で割り当てる。
     304                 *  自ポート番号が UDP_PORTANY なら、自動で割り当てる。
    319305                 */
    320306                if (pk_ccep->myaddr.portno == UDP_PORTANY)
     
    325311                if (error == E_OK) {
    326312
    327                         /* UDP 通信端点生成æƒ
    328 å ±ã‚’コピーする。*/
    329                         cep->cepatr        = pk_ccep->cepatr;                   /* 通信端点属性           */
    330                         cep->myaddr.ipaddr = pk_ccep->myaddr.ipaddr;            /* 自分のアドレス        */
    331                         cep->callback      = (void*)pk_ccep->callback;          /* コールバック           */
    332 
    333                         /* UDP 通信端点を生成済みにする。*/
     313                        /* UDP 通信端点生成情報をコピーする。*/
     314                        cep->cepatr        = pk_ccep->cepatr;                   /* 通信端点属性               */
     315                        cep->myaddr.ipaddr = pk_ccep->myaddr.ipaddr;            /* 自分のアドレス      */
     316                        cep->callback      = (void*)pk_ccep->callback;          /* コールバック               */
     317
     318                        /* UDP 通信端点を生成済みにする。*/
    334319                        cep->flags |= UDP_CEP_FLG_VALID;
    335320                        }
    336321                }
    337322
    338         /* 通信端点のロックを解除する。*/
     323        /* 通信端点のロックを解除する。*/
    339324        syscall(sig_sem(cep->semid_lock));
    340325
     
    347332
    348333/*
    349  *  udp_delete_cep -- UDP 通信端点を削除する。
    350  *
    351  *    udp_del_cep から呼出されるメイン関数
     334 *  udp_delete_cep -- UDP 通信端点を削除する。
     335 *
     336 *    udp_del_cep から呼出されるメイン関数
    352337 */
    353338
     
    357342        ER      error;
    358343
    359         /* UDP 通信端点をチェックする。*/
     344        /* UDP 通信端点をチェックする。*/
    360345        if (!VALID_UDP_CEP(cep))
    361346                return E_NOEXS;
    362347
    363         /* UDP 通信端点が、動的生成用でなければエラー */
     348        /* UDP 通信端点が、動的生成用でなければエラー */
    364349        if (!DYNAMIC_UDP_CEP(cep))
    365350                return E_ID;
    366351
    367         /* 通信端点をロックする。*/
     352        /* 通信端点をロックする。*/
    368353        syscall(wai_sem(cep->semid_lock));
    369354
    370355        /*
    371          * UDP 通信端点をチェックする。未生成の場合はエラー
    372          * ・未生成。
     356         * UDP 通信端点をチェックする。未生成の場合はエラー
     357         * ・未生成。
    373358         */
    374359        if (!VALID_UDP_CEP(cep))
     
    378363                UDP_CAN_RCV(cep, E_DLT);
    379364
    380                 /* UDP 通信端点を未生成にする。*/
     365                /* UDP 通信端点を未生成にする。*/
    381366                cep->flags &= ~UDP_CEP_FLG_VALID;
    382367                error = E_OK;
    383368                }
    384369
    385         /* 通信端点のロックを解除する。*/
     370        /* 通信端点のロックを解除する。*/
    386371        syscall(sig_sem(cep->semid_lock));
    387372
     
    390375
    391376/*
    392  *  udp_del_cep -- UDP 通信端点の削除【拡張機能】
     377 *  udp_del_cep -- UDP 通信端点の削除【拡張機能】
    393378 */
    394379
     
    398383        T_UDP_CEP       *cep;
    399384
    400         /* UDP 通信端点 ID をチェックする。*/
     385        /* UDP 通信端点 ID をチェックする。*/
    401386        if (!VALID_UDP_CEPID(cepid))
    402387                return E_ID;
    403388
    404         /* UDP 通信端点を得る。*/
     389        /* UDP 通信端点を得る。*/
    405390        cep = GET_UDP_CEP(cepid);
    406391
    407         /* メイン関数を呼び出す。*/
     392        /* メイン関数を呼び出す。*/
    408393        return UDP_DELETE_CEP(cep);
    409394        }
     
    414399
    415400/*
    416  *  udp_set_option -- UDP 通信端点オプションを設定する。
    417  *
    418  *    udp_set_opt から呼出されるメイン関数
     401 *  udp_set_option -- UDP 通信端点オプションを設定する。
     402 *
     403 *    udp_set_opt から呼出されるメイン関数
    419404 */
    420405
     
    422407UDP_SET_OPTION (T_UDP_CEP *cep, int_t optname, void *optval, int_t optlen)
    423408{
    424         /* UDP 通信端点をチェックする。*/
     409        /* UDP 通信端点をチェックする。*/
    425410        if (!VALID_UDP_CEP(cep))
    426411                return E_NOEXS;
     
    430415
    431416/*
    432  *  udp_set_opt -- UDP 通信端点オプションの設定【拡張機能】
    433  *
    434  *  注意: 設定可能な UDP 通信端点オプションは無いため、E_PAR が返される。
     417 *  udp_set_opt -- UDP 通信端点オプションの設定【拡張機能】
     418 *
     419 *  注意: 設定可能な UDP 通信端点オプションは無いため、E_PAR が返される。
    435420 */
    436421
     
    440425        T_UDP_CEP       *cep;
    441426
    442         /* UDP 通信端点 ID をチェックする。*/
     427        /* UDP 通信端点 ID をチェックする。*/
    443428        if (!VALID_UDP_CEPID(cepid))
    444429                return E_ID;
    445430
    446         /* UDP 通信端点を得る。*/
     431        /* UDP 通信端点を得る。*/
    447432        cep = GET_UDP_CEP(cepid);
    448433
    449         /* メイン関数を呼び出す。*/
     434        /* メイン関数を呼び出す。*/
    450435        return UDP_SET_OPTION(cep, optname, optval, optlen);
    451436        }
     
    456441
    457442/*
    458  *  udp_get_option -- UDP 通信端点オプションを獲得する。
    459  *
    460  *    udp_get_opt から呼出されるメイン関数
     443 *  udp_get_option -- UDP 通信端点オプションを獲得する。
     444 *
     445 *    udp_get_opt から呼出されるメイン関数
    461446 */
    462447
     
    464449UDP_GET_OPTION (T_UDP_CEP *cep, int_t optname, void *optval, int_t optlen)
    465450{
    466         /* UDP 通信端点をチェックする。*/
     451        /* UDP 通信端点をチェックする。*/
    467452        if (!VALID_UDP_CEP(cep))
    468453                return E_NOEXS;
     
    472457
    473458/*
    474  *  udp_get_opt -- UDP 通信端点オプションの獲得【拡張機能】
    475  *
    476  *  注意: 設定可能な UDP 通信端点オプションは無いため、E_PAR が返される。
     459 *  udp_get_opt -- UDP 通信端点オプションの獲得【拡張機能】
     460 *
     461 *  注意: 設定可能な UDP 通信端点オプションは無いため、E_PAR が返される。
    477462 */
    478463
     
    482467        T_UDP_CEP       *cep;
    483468
    484         /* UDP 通信端点 ID をチェックする。*/
     469        /* UDP 通信端点 ID をチェックする。*/
    485470        if (!VALID_UDP_CEPID(cepid))
    486471                return E_ID;
    487472
    488         /* UDP 通信端点を得る。*/
     473        /* UDP 通信端点を得る。*/
    489474        cep = GET_UDP_CEP(cepid);
    490475
    491         /* メイン関数を呼び出す。*/
     476        /* メイン関数を呼び出す。*/
    492477        return UDP_GET_OPTION(cep, optname, optval, optlen);
    493478        }
     
    504489
    505490/*
    506  *  udp_can_snd -- ペンディングしている送信のキャンセル
     491 *  udp_can_snd -- ペンディングしている送信のキャンセル
    507492 */
    508493
     
    510495UDP_CAN_SND (T_UDP_CEP *cep, ER error)
    511496{
    512         if (cep->snd_tskid != TA_NULL) {        /* 非ノンブロッキングコールでペンディング中 */
     497        if (cep->snd_tskid != TA_NULL) {        /* 非ノンブロッキングコールでペンディング中 */
    513498
    514499#ifdef UDP_CFG_EXTENTIONS
    515500
    516                 /* å¾
    517 ã¡ä¸­ã«ç™ºç”Ÿã—たエラーæƒ
    518 å ±ã‚’設定する。*/
     501                /* 待ち中に発生したエラー情報を設定する。*/
    519502                cep->error = error;
    520503
     
    524507                cep->snd_tskid = TA_NULL;
    525508                }
    526         else                                    /* どちらでもないならペンディングしていない */
     509        else                                    /* どちらでもないならペンディングしていない */
    527510                error = EV_NOPND;
    528511
     
    535518
    536519/*
    537  *  udp_can_rcv -- ペンディングしている受信のキャンセル
     520 *  udp_can_rcv -- ペンディングしている受信のキャンセル
    538521 */
    539522
     
    541524UDP_CAN_RCV (T_UDP_CEP *cep, ER error)
    542525{
    543         if (cep->rcv_tskid != TA_NULL) {        /* 非ノンブロッキングコールでペンディング中 */
     526        if (cep->rcv_tskid != TA_NULL) {        /* 非ノンブロッキングコールでペンディング中 */
    544527
    545528#ifdef UDP_CFG_EXTENTIONS
    546529
    547                 /* å¾
    548 ã¡ä¸­ã«ç™ºç”Ÿã—たエラーæƒ
    549 å ±ã‚’設定する。*/
     530                /* 待ち中に発生したエラー情報を設定する。*/
    550531                cep->error = error;
    551532
     
    555536                cep->rcv_tskid = TA_NULL;
    556537                }
    557         else                                    /* どちらでもないならペンディングしていない */
     538        else                                    /* どちらでもないならペンディングしていない */
    558539                error = EV_NOPND;
    559540
     
    566547
    567548/*
    568  *  udp_snd_dat -- パケットの送信【標準機能】
     549 *  udp_snd_dat -- パケットの送信【標準機能】
    569550 */
    570551
     
    575556        ER              error;
    576557
    577         /* p_dstaddr または data が NULL か、tmout が TMO_NBLK ならエラー */
     558        /* p_dstaddr または data が NULL か、tmout が TMO_NBLK ならエラー */
    578559        if (p_dstaddr == NULL || data == NULL || tmout == TMO_NBLK)
    579560                return E_PAR;
    580561
    581         /* データ長をチェックする。*/
     562        /* データ長をチェックする。*/
    582563        if (len < 0 || len + IP_HDR_SIZE + UDP_HDR_SIZE > IF_MTU)
    583564                return E_PAR;
     
    586567
    587568        /*
    588          * API が IPv6 で IPv4 射影アドレスが認められていないのにもかかわらず、
    589          * IPv4 射影アドレスが指定されたらエラー
     569         * API が IPv6 で IPv4 射影アドレスが認められていないのにもかかわらず、
     570         * IPv4 射影アドレスが指定されたらエラー
    590571         */
    591572        if (in6_is_addr_ipv4mapped(&p_dstaddr->ipaddr))
     
    594575#endif  /* of #if (API_PROTO == API_PROTO_IPV6) && !defined(DAPI_CFG_IP4MAPPED_ADDR) */
    595576
    596         /* UDP 通信端点 ID をチェックする。*/
     577        /* UDP 通信端点 ID をチェックする。*/
    597578        if (!VALID_UDP_CEPID(cepid))
    598579                return E_ID;
    599580
    600         /* UDP 通信端点を得る。*/
     581        /* UDP 通信端点を得る。*/
    601582        cep = GET_UDP_CEP(cepid);
    602583
    603         /* UDP 通信端点をチェックする。*/
     584        /* UDP 通信端点をチェックする。*/
    604585        if (!VALID_UDP_CEP(cep))
    605586                return E_NOEXS;
    606587
    607588        /*
    608          *  自ポート番号が UDP_PORTANY なら、自動で割り当てる。
     589         *  自ポート番号が UDP_PORTANY なら、自動で割り当てる。
    609590         */
    610591        if (cep->myaddr.portno == UDP_PORTANY) {
     
    613594                }
    614595       
    615         /* 通信端点をロックする。*/
     596        /* 通信端点をロックする。*/
    616597        syscall(wai_sem(cep->semid_lock));
    617598
    618599        if (cep->snd_tskid != TA_NULL) {
    619600
    620                 /* 非ノンブロッキングコールでペンディング中 */
     601                /* 非ノンブロッキングコールでペンディング中 */
    621602                error = E_QOVR;
    622603
    623                 /* 通信端点をロックを解除する。*/
     604                /* 通信端点をロックを解除する。*/
    624605                syscall(sig_sem(cep->semid_lock));
    625606                }
    626607        else {
    627                 /* 現在のタスク識別子を記録する。*/
     608                /* 現在のタスク識別子を記録する。*/
    628609                get_tid(&(cep->snd_tskid));
    629610
    630611#ifdef UDP_CFG_EXTENTIONS
    631612
    632                 /* å¾
    633 ã¡ä¸­ã«ç™ºç”Ÿã—たエラーæƒ
    634 å ±ã‚’リセットする。*/
     613                /* 待ち中に発生したエラー情報をリセットする。*/
    635614                cep->error = E_OK;
    636615
    637616#endif  /* of #ifdef UDP_CFG_EXTENTIONS */
    638617
    639                 /* 通信端点をロックを解除する。*/
     618                /* 通信端点をロックを解除する。*/
    640619                syscall(sig_sem(cep->semid_lock));
    641620
    642                 /* パケットを送信する。*/
     621                /* パケットを送信する。*/
    643622                error = UDP_SEND_DATA(cep, p_dstaddr, data, len, tmout);
    644623
    645624#ifdef UDP_CFG_EXTENTIONS
    646625
    647                 /* å¾
    648 ã¡ä¸­ã«ç™ºç”Ÿã—たエラーæƒ
    649 å ±ã‚’返す。*/
     626                /* 待ち中に発生したエラー情報を返す。*/
    650627                if (error == E_RLWAI)
    651628                        error = cep->error;
     
    662639
    663640/*
    664  *  udp_rcv_dat -- パケットの受信【標準機能】
     641 *  udp_rcv_dat -- パケットの受信【標準機能】
    665642 */
    666643
     
    674651        uint_t          ulen, uhoff;
    675652
    676         /* p_dstaddr または data が NULL 、len < 0 か、tmout が TMO_NBLK ならエラー */
     653        /* p_dstaddr または data が NULL 、len < 0 か、tmout が TMO_NBLK ならエラー */
    677654        if (p_dstaddr == NULL || data == NULL || len < 0 || tmout == TMO_NBLK)
    678655                return E_PAR;
    679656
    680         /* UDP 通信端点 ID をチェックする。*/
     657        /* UDP 通信端点 ID をチェックする。*/
    681658        if (!VALID_UDP_CEPID(cepid))
    682659                return E_ID;
    683660
    684         /* UDP 通信端点を得る。*/
     661        /* UDP 通信端点を得る。*/
    685662        cep = GET_UDP_CEP(cepid);
    686663
    687         /* UDP 通信端点をチェックする。*/
     664        /* UDP 通信端点をチェックする。*/
    688665        if (!VALID_UDP_CEP(cep))
    689666                return E_NOEXS;
    690667
    691         /* 通信端点をロックする。*/
     668        /* 通信端点をロックする。*/
    692669        syscall(wai_sem(cep->semid_lock));
    693670
    694671        if (cep->rcv_tskid != TA_NULL) {
    695672
    696                 /* 非ノンブロッキングコールでペンディング中 */
     673                /* 非ノンブロッキングコールでペンディング中 */
    697674                error = E_QOVR;
    698675
    699                 /* 通信端点をロックを解除する。*/
     676                /* 通信端点をロックを解除する。*/
    700677                syscall(sig_sem(cep->semid_lock));
    701678                }
    702679        else {
    703680
    704                 /* 現在のタスク識別子を記録する。*/
     681                /* 現在のタスク識別子を記録する。*/
    705682                get_tid(&(cep->rcv_tskid));
    706683
    707684#ifdef UDP_CFG_EXTENTIONS
    708685
    709                 /* å¾
    710 ã¡ä¸­ã«ç™ºç”Ÿã—たエラーæƒ
    711 å ±ã‚’リセットする。*/
     686                /* 待ち中に発生したエラー情報をリセットする。*/
    712687                cep->error = E_OK;
    713688
    714689#endif  /* of #ifdef UDP_CFG_EXTENTIONS */
    715690
    716                 /* 通信端点をロックを解除する。*/
     691                /* 通信端点をロックを解除する。*/
    717692                syscall(sig_sem(cep->semid_lock));
    718693
    719                 /* å
    720 ¥åŠ›ãŒã‚るまでå¾
    721 ã¤ã€‚*/
     694                /* 入力があるまで待つ。*/
    722695                if (cep->cb_netbuf != NULL) {
    723696
    724697                        /*
    725                          *  ここにくる場合は、コールバック関数の中から
    726                          *  udp_rcv_dat を呼び出していることになり、
    727                          *  すでにå
    728 ¥åŠ›æ¸ˆã¿ã§ã‚る。
     698                         *  ここにくる場合は、コールバック関数の中から
     699                         *  udp_rcv_dat を呼び出していることになり、
     700                         *  すでに入力済みである。
    729701                         */
    730702                        input = cep->cb_netbuf;
     
    735707#ifdef UDP_CFG_EXTENTIONS
    736708
    737                         /* å¾
    738 ã¡ä¸­ã«ç™ºç”Ÿã—たエラーæƒ
    739 å ±ã‚’返す。*/
     709                        /* 待ち中に発生したエラー情報を返す。*/
    740710                        if (error == E_RLWAI)
    741711                                error = cep->error;
     
    747717                        }
    748718
    749                 /* p_dstaddr を設定する。*/
     719                /* p_dstaddr を設定する。*/
    750720                uhoff = (uint_t)GET_UDP_HDR_OFFSET(input);
    751721                udph = GET_UDP_HDR(input, uhoff);
     
    753723                IN_COPY_TO_HOST(&p_dstaddr->ipaddr, input);
    754724
    755                 /* データをバッファに移す。*/
     725                /* データをバッファに移す。*/
    756726                ulen = ntohs(udph->ulen);
    757727                if (ulen - UDP_HDR_SIZE > len)
Note: See TracChangeset for help on using the changeset viewer.