Ignore:
Timestamp:
Aug 3, 2017, 10:46:41 PM (7 years ago)
Author:
coas-nagasima
Message:

プロパティの文字コードにUTF-8を追加、キーワードを削除

Location:
asp3_gr_sakura/trunk/tinet/netinet
Files:
51 edited

Legend:

Unmodified
Added
Removed
  • asp3_gr_sakura/trunk/tinet/netinet/icmp6.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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$
     
    115103
    116104/*
    117  *  ICMPv6 ヘッダ
     105 *  ICMPv6 ヘッダ
    118106 */
    119107
    120108typedef struct t_icmp6_hdr {
    121         uint8_t         type;           /* メッセージの型        */
    122         uint8_t         code;           /* サブ型            */
    123         uint16_t        sum;            /* チェックサム           */
     109        uint8_t         type;           /* メッセージの型      */
     110        uint8_t         code;           /* サブ型          */
     111        uint16_t        sum;            /* チェックサム               */
    124112        union {
    125113                uint32_t        data32;
     
    132120#define icmp6_data16                    data.data16
    133121#define icmp6_data8                     data.data8
    134 #define icmp6_pptr                      data.data32             /* パラメータ異常        */
    135 #define icmp6_mtu                       data.data32             /* パラメータ異常        */
    136 #define icmp6_id                        data.data16[0]          /* エコー要求と応答     */
    137 #define icmp6_seq                       data.data16[1]          /* エコー要求と応答     */
     122#define icmp6_pptr                      data.data32             /* パラメータ異常      */
     123#define icmp6_mtu                       data.data32             /* パラメータ異常      */
     124#define icmp6_id                        data.data16[0]          /* エコー要求と応答     */
     125#define icmp6_seq                       data.data16[1]          /* エコー要求と応答     */
    138126
    139127#define ICMP6_HDR_SIZE                  (sizeof(T_ICMP6_HDR))
     
    147135
    148136/*
    149  *  ICMP6 タイプ
    150  */
    151 
    152 #define ICMP6_DST_UNREACH               UINT_C(1)       /* 宛å
    153 ˆåˆ°é”不可能                */
    154 #define ICMP6_PACKET_TOO_BIG            UINT_C(2)       /* パケットが大きすぎる。    */
    155 #define ICMP6_TIME_EXCEEDED             UINT_C(3)       /* TTL をè¶
    156 éŽã—た。            */
    157 #define ICMP6_PARAM_PROB                UINT_C(4)       /* IPv6 ヘッダが不正。           */
    158 
    159 #define ICMP6_ECHO_REQUEST              UINT_C(128)     /* エコー要求                      */
    160 #define ICMP6_ECHO_REPLY                UINT_C(129)     /* エコー応答                      */
    161 
    162 #define ICMP6_MEMBERSHIP_QUERY          UINT_C(130)     /* グループメンバç
    163 §ä¼š            */
    164 #define ICMP6_MEMBERSHIP_REPORT         UINT_C(131)     /* グループメンバ報告          */
    165 #define ICMP6_MEMBERSHIP_REDUCTION      UINT_C(132)     /* グループメンバ終了          */
    166 
    167 #define MLD_LISTENER_QUERY              UINT_C(130)     /* マルチキャスト受信è€
    168 ç
    169 §ä¼š    */
    170 #define MLD_LISTENER_REPORT             UINT_C(131)     /* マルチキャスト受信è€
    171 å ±å‘Š  */
    172 #define MLD_LISTENER_DONE               UINT_C(132)     /* マルチキャスト受信è€
    173 çµ‚了  */
    174 
    175 #define ND_ROUTER_SOLICIT               UINT_C(133)     /* ルータ要請                      */
    176 #define ND_ROUTER_ADVERT                UINT_C(134)     /* ルータ通知                      */
    177 #define ND_NEIGHBOR_SOLICIT             UINT_C(135)     /* 近隣要請                 */
    178 #define ND_NEIGHBOR_ADVERT              UINT_C(136)     /* 近隣通知                 */
    179 #define ND_REDIRECT                     UINT_C(137)     /* 向け直し                 */
    180 
    181 #define ICMP6_ROUTER_RENUMBERING        UINT_C(138)     /* ルータ番号再設定             */
    182 
    183 #define ICMP6_WRU_REQUEST               UINT_C(139)     /* 要求ノード探索                */
    184 #define ICMP6_WRU_REPLY                 UINT_C(140)     /* 応答ノード探索                */
    185 
    186 #define ICMP6_FQDN_QUERY                UINT_C(139)     /* FQDN ç
    187 §ä¼š                    */
    188 #define ICMP6_FQDN_REPLY                UINT_C(140)     /* FQDN 応答                  */
    189 
    190 #define ICMP6_NI_QUERY                  UINT_C(139)     /* ノードæƒ
    191 å ±ç
    192 §ä¼š            */
    193 #define ICMP6_NI_REPLY                  UINT_C(140)     /* ノードæƒ
    194 å ±å¿œç­”               */
    195 
    196 #define ICMP6_MAX_TYPE                  UINT_C(203)     /* ICMP6 タイプの最大値          */
    197 
    198 /*
    199  *  ICMP6 コード
    200  */
    201 
    202 /* 宛å
    203 ˆåˆ°é”不可能 */
    204 
    205 #define ICMP6_DST_UNREACH_NOROUTE       UINT_C(0)       /* 到達ルートなし。             */
    206 #define ICMP6_DST_UNREACH_ADMIN         UINT_C(1)       /* 管理è€
    207 ã«ã‚ˆã‚Šç„¡åŠ¹åŒ–中。        */
    208 #define ICMP6_DST_UNREACH_NOTEIGHBOR    UINT_C(2)       /* 近隣è€
    209 ã§ã¯ãªããªã£ãŸã€‚        */
    210 #define ICMP6_DST_UNREACH_BEYOND_SCOPE  UINT_C(2)       /* スコープをè¶
    211 ãˆã¦ã„る。 */
    212 #define ICMP6_DST_UNREACH_ADDR          UINT_C(3)       /* 宛å
    213 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«åˆ°é”不可能。      */
    214 #define ICMP6_DST_UNREACH_NOPORT        UINT_C(4)       /* 宛å
    215 ˆãƒãƒ¼ãƒˆã«åˆ°é”不可能。 */
    216 
    217 /* TTL è¶
    218 éŽ */
    219 
    220 #define ICMP6_TIME_EXCEED_TRANSIT       UINT_C(0)       /* 転送時に TTL==0 になった。  */
    221 #define ICMP6_TIME_EXCEED_REASSEMBLY    UINT_C(1)       /* IP 再構成でタイムアウトした。*/
    222 
    223 /* ヘッダ不正 */
    224 
    225 #define ICMP6_PARAMPROB_HEADER          UINT_C(0)       /* ヘッダに不正があった。    */
    226 #define ICMP6_PARAMPROB_NEXT_HEADER     UINT_C(1)       /* 次ヘッダが認識できない。 */
    227 #define ICMP6_PARAMPROB_OPTION          UINT_C(2)       /* オプションが認識できない。      */
    228 
    229 /* å†
    230 éƒ¨ä½¿ç”¨ */
    231 #define ND_REDIRECT_ONLINK              UINT_C(0)       /* オンリンクへの向け直し    */
    232 #define ND_REDIRECT_ROUTER              UINT_C(1)       /* ルータへの向け直し          */
    233 
    234 /*
    235  *  制限値
    236  */
    237 
    238                                                         /* ICMPv6 の最大ペイロード長   */
     137 *  ICMP6 タイプ
     138 */
     139
     140#define ICMP6_DST_UNREACH               UINT_C(1)       /* 宛先到達不可能              */
     141#define ICMP6_PACKET_TOO_BIG            UINT_C(2)       /* パケットが大きすぎる。  */
     142#define ICMP6_TIME_EXCEEDED             UINT_C(3)       /* TTL を超過した。           */
     143#define ICMP6_PARAM_PROB                UINT_C(4)       /* IPv6 ヘッダが不正。         */
     144
     145#define ICMP6_ECHO_REQUEST              UINT_C(128)     /* エコー要求                        */
     146#define ICMP6_ECHO_REPLY                UINT_C(129)     /* エコー応答                        */
     147
     148#define ICMP6_MEMBERSHIP_QUERY          UINT_C(130)     /* グループメンバ照会            */
     149#define ICMP6_MEMBERSHIP_REPORT         UINT_C(131)     /* グループメンバ報告            */
     150#define ICMP6_MEMBERSHIP_REDUCTION      UINT_C(132)     /* グループメンバ終了            */
     151
     152#define MLD_LISTENER_QUERY              UINT_C(130)     /* マルチキャスト受信者照会 */
     153#define MLD_LISTENER_REPORT             UINT_C(131)     /* マルチキャスト受信者報告 */
     154#define MLD_LISTENER_DONE               UINT_C(132)     /* マルチキャスト受信者終了 */
     155
     156#define ND_ROUTER_SOLICIT               UINT_C(133)     /* ルータ要請                        */
     157#define ND_ROUTER_ADVERT                UINT_C(134)     /* ルータ通知                        */
     158#define ND_NEIGHBOR_SOLICIT             UINT_C(135)     /* 近隣要請                 */
     159#define ND_NEIGHBOR_ADVERT              UINT_C(136)     /* 近隣通知                 */
     160#define ND_REDIRECT                     UINT_C(137)     /* 向け直し                 */
     161
     162#define ICMP6_ROUTER_RENUMBERING        UINT_C(138)     /* ルータ番号再設定             */
     163
     164#define ICMP6_WRU_REQUEST               UINT_C(139)     /* 要求ノード探索              */
     165#define ICMP6_WRU_REPLY                 UINT_C(140)     /* 応答ノード探索              */
     166
     167#define ICMP6_FQDN_QUERY                UINT_C(139)     /* FQDN 照会                      */
     168#define ICMP6_FQDN_REPLY                UINT_C(140)     /* FQDN 応答                      */
     169
     170#define ICMP6_NI_QUERY                  UINT_C(139)     /* ノード情報照会              */
     171#define ICMP6_NI_REPLY                  UINT_C(140)     /* ノード情報応答              */
     172
     173#define ICMP6_MAX_TYPE                  UINT_C(203)     /* ICMP6 タイプの最大値                */
     174
     175/*
     176 *  ICMP6 コード
     177 */
     178
     179/* 宛先到達不可能 */
     180
     181#define ICMP6_DST_UNREACH_NOROUTE       UINT_C(0)       /* 到達ルートなし。             */
     182#define ICMP6_DST_UNREACH_ADMIN         UINT_C(1)       /* 管理者により無効化中。  */
     183#define ICMP6_DST_UNREACH_NOTEIGHBOR    UINT_C(2)       /* 近隣者ではなくなった。  */
     184#define ICMP6_DST_UNREACH_BEYOND_SCOPE  UINT_C(2)       /* スコープを超えている。  */
     185#define ICMP6_DST_UNREACH_ADDR          UINT_C(3)       /* 宛先アドレスに到達不可能。        */
     186#define ICMP6_DST_UNREACH_NOPORT        UINT_C(4)       /* 宛先ポートに到達不可能。 */
     187
     188/* TTL 超過 */
     189
     190#define ICMP6_TIME_EXCEED_TRANSIT       UINT_C(0)       /* 転送時に TTL==0 になった。    */
     191#define ICMP6_TIME_EXCEED_REASSEMBLY    UINT_C(1)       /* IP 再構成でタイムアウトした。*/
     192
     193/* ヘッダ不正 */
     194
     195#define ICMP6_PARAMPROB_HEADER          UINT_C(0)       /* ヘッダに不正があった。  */
     196#define ICMP6_PARAMPROB_NEXT_HEADER     UINT_C(1)       /* 次ヘッダが認識できない。 */
     197#define ICMP6_PARAMPROB_OPTION          UINT_C(2)       /* オプションが認識できない。        */
     198
     199/* 内部使用 */
     200#define ND_REDIRECT_ONLINK              UINT_C(0)       /* オンリンクへの向け直し  */
     201#define ND_REDIRECT_ROUTER              UINT_C(1)       /* ルータへの向け直し            */
     202
     203/*
     204 *  制限値
     205 */
     206
     207                                                        /* ICMPv6 の最大ペイロード長     */
    239208#define ICMPV6_PAYLOAD_MAXLEN           (IPV6_MMTU - (IP6_HDR_SIZE + ICMP6_HDR_SIZE))
    240209
    241210/*
    242  *  近隣要請
     211 *  近隣要請
    243212 */
    244213
     
    246215        T_ICMP6_HDR     hdr;
    247216        T_IN6_ADDR      target;
    248         /* この後にオプションが続く */
     217        /* この後にオプションが続く */
    249218        } T_NEIGHBOR_SOLICIT_HDR;
    250219
     
    264233
    265234/*
    266  *  近隣通知
     235 *  近隣通知
    267236 */
    268237
     
    270239        T_ICMP6_HDR     hdr;
    271240        T_IN6_ADDR      target;
    272         /* この後にオプションが続く */
     241        /* この後にオプションが続く */
    273242        } T_NEIGHBOR_ADVERT_HDR;
    274243
    275 /* ICMP6 ヘッダのデータ部の定義 */
     244/* ICMP6 ヘッダのデータ部の定義 */
    276245
    277246#define nd_na_flags_reserved            hdr.data.data32
     
    295264
    296265/*
    297  *  近隣通知フラグ、nd_na_flags_reserved (hdr.data32) に設定する。
     266 *  近隣通知フラグ、nd_na_flags_reserved (hdr.data32) に設定する。
    298267 */
    299268
    300269#if _NET_CFG_BYTE_ORDER == _NET_CFG_BIG_ENDIAN
    301270
    302 #define ND_NA_FLG_OVERRIDE              ULONG_C(0x20000000)     /* 近隣キャッシュ上書き       */
    303 #define ND_NA_FLG_SOLICITED             ULONG_C(0x40000000)     /* 近隣要請への応答     */
    304 #define ND_NA_FLG_ROUTER                ULONG_C(0x80000000)     /* ルータ通知              */
     271#define ND_NA_FLG_OVERRIDE              ULONG_C(0x20000000)     /* 近隣キャッシュ上書き   */
     272#define ND_NA_FLG_SOLICITED             ULONG_C(0x40000000)     /* 近隣要請への応答     */
     273#define ND_NA_FLG_ROUTER                ULONG_C(0x80000000)     /* ルータ通知                */
    305274
    306275#elif _NET_CFG_BYTE_ORDER == _NET_CFG_LITTLE_ENDIAN
    307276
    308 #define ND_NA_FLG_OVERRIDE              ULONG_C(0x00000020)     /* 近隣キャッシュ上書き       */
    309 #define ND_NA_FLG_SOLICITED             ULONG_C(0x00000040)     /* 近隣要請への応答     */
    310 #define ND_NA_FLG_ROUTER                ULONG_C(0x00000080)     /* ルータ通知              */
     277#define ND_NA_FLG_OVERRIDE              ULONG_C(0x00000020)     /* 近隣キャッシュ上書き   */
     278#define ND_NA_FLG_SOLICITED             ULONG_C(0x00000040)     /* 近隣要請への応答     */
     279#define ND_NA_FLG_ROUTER                ULONG_C(0x00000080)     /* ルータ通知                */
    311280
    312281#endif  /* #if _NET_CFG_BYTE_ORDER == _NET_CFG_BIG_ENDIAN */
    313282
    314283/*
    315  *  ルータ通知
     284 *  ルータ通知
    316285 *
    317286 *    RFC4291: IP Version 6 Addressing Architecture
     
    322291typedef struct t_router_advert_hdr {
    323292        T_ICMP6_HDR     hdr;
    324         uint32_t        reachable;              /* [ms] 到達可能時間      */
    325         uint32_t        retransmit;             /* [ms] 近隣要請送信間隔        */
    326         /* この後にオプションが続く */
     293        uint32_t        reachable;              /* [ms] 到達可能時間  */
     294        uint32_t        retransmit;             /* [ms] 近隣要請送信間隔        */
     295        /* この後にオプションが続く */
    327296        } T_ROUTER_ADVERT_HDR;
    328297
    329 /* ICMP6 ヘッダのデータ部の定義 */
     298/* ICMP6 ヘッダのデータ部の定義 */
    330299
    331300#define nd_ra_current_hoplimit          hdr.data.data8[0]
    332301#define nd_ra_flags                     hdr.data.data8[1]
    333 #define nd_ra_router_lifetime           hdr.data.data16[1]      /* [s] ルータ有効時間    */
     302#define nd_ra_router_lifetime           hdr.data.data16[1]      /* [s] ルータ有効時間  */
    334303
    335304#define ROUTER_ADVERT_HDR_SIZE          (sizeof(T_ROUTER_ADVERT_HDR))
     
    349318
    350319/*
    351  *  ルータ通知ヘッダのフラグ
     320 *  ルータ通知ヘッダのフラグ
    352321 */
    353322
     
    357326
    358327/*
    359  *  M: RA以外の方法で自動的にアドレスを設定することを許可する。
    360  *  O: RA以外の方法で自動的にアドレス以外のæƒ
    361 å ±ã‚’設定することをを許可する。
     328 *  M: RA以外の方法で自動的にアドレスを設定することを許可する。
     329 *  O: RA以外の方法で自動的にアドレス以外の情報を設定することをを許可する。
    362330 *
    363331 *   M   O
    364  *  ON  ON      アドレスとそれ以外のæƒ
    365 å ±ã‚’DHCPv6で設定する(statefull)
    366  *  ON  OFF     ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯DHCPv6で設定するが、それ以外は手動で設定する。
    367  *  OFF ON      アドレスは RA で設定するが、それ以外のæƒ
    368 å ±ã‚’DHCPv6で設定する(stateless)
    369  *  OFF OFF     DHCPv6 は使用しない。
    370  */
    371 
    372 /*
    373  *  ルータ要請
     332 *  ON  ON      アドレスとそれ以外の情報をDHCPv6で設定する(statefull)
     333 *  ON  OFF     アドレスはDHCPv6で設定するが、それ以外は手動で設定する。
     334 *  OFF ON      アドレスは RA で設定するが、それ以外の情報をDHCPv6で設定する(stateless)
     335 *  OFF OFF     DHCPv6 は使用しない。
     336 */
     337
     338/*
     339 *  ルータ要請
    374340 */
    375341
     
    378344        } T_ROUTER_SOLICIT_HDR;
    379345
    380 /* ICMP6 ヘッダのデータ部の定義 */
     346/* ICMP6 ヘッダのデータ部の定義 */
    381347
    382348#define nd_rs_reserved                  hdr.data.data32
     
    399365
    400366/*
    401  *  近隣探索オプション
    402  */
    403 
    404 /* 近隣探索ヘッダ */
     367 *  近隣探索オプション
     368 */
     369
     370/* 近隣探索ヘッダ */
    405371
    406372typedef struct t_neighbor_hdr {
     
    409375        } T_NEIGHBOR_HDR;
    410376
    411 /* 近隣探索オプションヘッダ */
     377/* 近隣探索オプションヘッダ */
    412378
    413379typedef struct t_nd_opt_hdr {
    414         uint8_t         type;                   /* オプションタイプ                     */
    415         uint8_t         len;                    /* オプション長、単位は 8 バイト   */
     380        uint8_t         type;                   /* オプションタイプ                     */
     381        uint8_t         len;                    /* オプション長、単位は 8 バイト     */
    416382        } T_ND_OPT_HDR;
    417383
    418384#define ND_OPT_HDR_SIZE                 (sizeof(T_ND_OPT_HDR))
    419385
    420 #define ND_OPT_SOURCE_LINKADDR          UINT_C(1)       /* 送信å
    421 ˆãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ */
    422 #define ND_OPT_TARGET_LINKADDR          UINT_C(2)       /* 対象ネットワークインタフェースのアドレス */
    423 #define ND_OPT_PREFIX_INFORMATION       UINT_C(3)       /* プレフィックスæƒ
    424 å ±                             */
    425 #define ND_OPT_REDIRECTED_HEADER        UINT_C(4)       /* リダイレクト・ヘッダ                               */
     386#define ND_OPT_SOURCE_LINKADDR          UINT_C(1)       /* 送信先ネットワークインタフェースのアドレス        */
     387#define ND_OPT_TARGET_LINKADDR          UINT_C(2)       /* 対象ネットワークインタフェースのアドレス */
     388#define ND_OPT_PREFIX_INFORMATION       UINT_C(3)       /* プレフィックス情報                            */
     389#define ND_OPT_REDIRECTED_HEADER        UINT_C(4)       /* リダイレクト・ヘッダ                           */
    426390#define ND_OPT_MTU                      UINT_C(5)       /* MTU                                          */
    427391
    428 #define ND_OPT_PREFIX_INFO_COUNT        UINT_C(6)       /* プレフィックスæƒ
    429 å ±ã®å€‹æ•°                    */
    430 #define ND_OPT_OFF_ARRAY_SIZE           UINT_C(7)       /* ND オプションのオフセットを記録するé
    431 åˆ—サイズ*/
    432 
    433 #define ND_OPT_OFF_ARRAY_IX(t)          ((t)-1)         /* オフセットé
    434 åˆ—のインデックス                       */
    435 
    436 /* プレフィックスオプション */
     392#define ND_OPT_PREFIX_INFO_COUNT        UINT_C(6)       /* プレフィックス情報の個数                 */
     393#define ND_OPT_OFF_ARRAY_SIZE           UINT_C(7)       /* ND オプションのオフセットを記録する配列サイズ*/
     394
     395#define ND_OPT_OFF_ARRAY_IX(t)          ((t)-1)         /* オフセット配列のインデックス                       */
     396
     397/* プレフィックスオプション */
    437398
    438399typedef struct t_nd_opt_prefix_info {
    439         uint8_t         type;           /* 近隣探索オプションタイプ = 3     */
    440         uint8_t         len;            /* オプション長 = 8×4=32 */
    441         uint8_t         prefix_len;     /* プレフィックス長             */
    442         uint8_t         flags;          /* フラグ                    */
    443         uint32_t        valid;          /* [s] 有効時間                     */
    444         uint32_t        preferred;      /* [s] 推奨有効時間               */
     400        uint8_t         type;           /* 近隣探索オプションタイプ = 3     */
     401        uint8_t         len;            /* オプション長 = 8×4=32      */
     402        uint8_t         prefix_len;     /* プレフィックス長             */
     403        uint8_t         flags;          /* フラグ                  */
     404        uint32_t        valid;          /* [s] 有効時間                     */
     405        uint32_t        preferred;      /* [s] 推奨有効時間           */
    445406        uint32_t        reserved;
    446         T_IN6_ADDR      prefix;         /* プレフィックス                */
     407        T_IN6_ADDR      prefix;         /* プレフィックス              */
    447408        } T_ND_OPT_PREFIX_INFO;
    448409
    449 #define ND_OPT_PI_FLAG_ONLINK   UINT_C(0x80)            /* オンリンクプレフィックス */
    450 #define ND_OPT_PI_FLAG_AUTO     UINT_C(0x40)            /* ステートレス・アドレス自動設定*/
    451 
    452 /* MTU オプションヘッダ */
     410#define ND_OPT_PI_FLAG_ONLINK   UINT_C(0x80)            /* オンリンクプレフィックス */
     411#define ND_OPT_PI_FLAG_AUTO     UINT_C(0x40)            /* ステートレス・アドレス自動設定*/
     412
     413/* MTU オプションヘッダ */
    453414
    454415typedef struct t_nd_opt_mtu_hdr {
    455         uint8_t         type;           /* オプションタイプ             */
    456         uint8_t         len;            /* オプション長、単位は 8 バイト*/
     416        uint8_t         type;           /* オプションタイプ             */
     417        uint8_t         len;            /* オプション長、単位は 8 バイト*/
    457418        uint16_t        reserved;
    458419        uint32_t        mtu;            /* MTU                          */
     
    460421
    461422/*
    462  *  向け直し
     423 *  向け直し
    463424 */
    464425
    465426typedef struct t_nd_redirect_hdr {
    466427        T_ICMP6_HDR     hdr;
    467         T_IN6_ADDR      target;         /* ルータのアドレス             */
    468         T_IN6_ADDR      dst;            /* 向け直しの終点アドレス            */
    469         /* この後にオプションが続く */
     428        T_IN6_ADDR      target;         /* ルータのアドレス             */
     429        T_IN6_ADDR      dst;            /* 向け直しの終点アドレス          */
     430        /* この後にオプションが続く */
    470431        } T_ND_REDIRECT_HDR;
    471432
     
    475436
    476437/*
    477  *  SNMP の 管理æƒ
    478 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     438 *  SNMP の 管理情報ベース (MIB)
    479439 */
    480440
     
    521481
    522482/*
    523  *  関数
     483 *  関数
    524484 */
    525485
  • asp3_gr_sakura/trunk/tinet/netinet/icmp_var.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8674
    8775/*
    88  *  SNMP の 管理æƒ
    89 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     76 *  SNMP の 管理情報ベース (MIB)
    9077 */
    9178
  • asp3_gr_sakura/trunk/tinet/netinet/if_ether.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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  *  ARP キャッシュエントリ
     112 *  ARP キャッシュエントリ
    125113 */
    126114
     
    128116
    129117/*
    130  *  関数
     118 *  関数
    131119 */
    132120
     
    135123
    136124/*
    137  *  in_arpinput -- TCP/IP 用 ARP のå
    138 ¥åŠ›é–¢æ•°
     125 *  in_arpinput -- TCP/IP 用 ARP の入力関数
    139126 */
    140127
     
    152139        et_arph = GET_ETHER_ARP_HDR(input);
    153140
    154         ntoahl(saddr, et_arph->sproto);         /* 送信å
    155 ƒ IP アドレス       */
    156         ntoahl(taddr, et_arph->tproto);         /* 解決対象 IP アドレス */
    157 
    158         /*
    159          *  以下の場合はエラー
    160          *    ・送信ホストの物理アドレスが自分
    161          *    ・送信ホストの物理アドレスがブロードキャスト
     141        ntoahl(saddr, et_arph->sproto);         /* 送信元 IP アドレス  */
     142        ntoahl(taddr, et_arph->tproto);         /* 解決対象 IP アドレス */
     143
     144        /*
     145         *  以下の場合はエラー
     146         *    ・送信ホストの物理アドレスが自分
     147         *    ・送信ホストの物理アドレスがブロードキャスト
    162148         */
    163149        if (memcmp(et_arph->shost, ifaddr->lladdr,        ETHER_ADDR_LEN) == 0 ||
     
    166152
    167153        /*
    168          *  送信ホストの IP アドレスが自分の場合は、重複しているので
    169          *  相手にも知らせる。
    170          *  ただし、自分と相手のアドレスが未定義(IPV4_ADDRANY)の時は何もしない。
     154         *  送信ホストの IP アドレスが自分の場合は、重複しているので
     155         *  相手にも知らせる。
     156         *  ただし、自分と相手のアドレスが未定義(IPV4_ADDRANY)の時は何もしない。
    171157         */
    172158        if ((saddr == ifp->in4_ifaddr.addr) && (saddr != IPV4_ADDRANY)) {
     
    197183
    198184        /*
    199          *  以下の場合は何もしない。
    200          *    ・解決対象 IP アドレスが自分ではない、注: å
    201 ƒã® FreeBSD の
    202          *      実è£
    203 ã§ã¯ã€ARP PROXY 等のため、自分以外の IP アドレスの
    204          *      解決も行っているが、本実è£
    205 ã§ã¯ã€è‡ªåˆ†ä»¥å¤–の IP
    206          *      アドレスの解決は行わない。
     185         *  以下の場合は何もしない。
     186         *    ・解決対象 IP アドレスが自分ではない、注: 元の FreeBSD の
     187         *      実装では、ARP PROXY 等のため、自分以外の IP アドレスの
     188         *      解決も行っているが、本実装では、自分以外の IP
     189         *      アドレスの解決は行わない。
    207190         */
    208191        if (taddr != ifp->in4_ifaddr.addr)
     
    210193
    211194        /*
    212          *  送信å
    213 ƒ IP アドレスが ARP キャッシュにあるか調べる。
    214          *  キャッシュになければ、新たにエントリを登録する。
     195         *  送信元 IP アドレスが ARP キャッシュにあるか調べる。
     196         *  キャッシュになければ、新たにエントリを登録する。
    215197         */
    216198        syscall(wai_sem(SEM_ARP_CACHE_LOCK));
     
    221203
    222204        /*
    223          *  送信がペンデングされているフレームがあれば送信する。
     205         *  送信がペンデングされているフレームがあれば送信する。
    224206         */
    225207        if (ent->hold) {
    226208
    227                 /* フレームの Ethernet ヘッダを設定する。*/
     209                /* フレームの Ethernet ヘッダを設定する。*/
    228210                memcpy(GET_ETHER_HDR(ent->hold)->dhost, ent->mac_addr, ETHER_ADDR_LEN);
    229211
     
    232214                syscall(sig_sem(SEM_ARP_CACHE_LOCK));
    233215
    234                 /* ペンディングされているフレームを送信する。*/
     216                /* ペンディングされているフレームを送信する。*/
    235217                IF_RAW_OUTPUT(pending, TMO_FEVR);
    236218
     
    243225        arph = GET_ARP_HDR(input);
    244226
    245         /* アドレス解決要求でなければ終了 */
     227        /* アドレス解決要求でなければ終了 */
    246228        if (ntohs(arph->opcode) != ARPOP_REQUEST)
    247229                goto buf_rel;
    248230
    249         /* Ethernet ARP ヘッダを設定する。*/
     231        /* Ethernet ARP ヘッダを設定する。*/
    250232        memcpy(et_arph->thost, et_arph->shost, ETHER_ADDR_LEN);
    251233        memcpy(et_arph->shost, ifaddr->lladdr, ETHER_ADDR_LEN);
     
    253235        ahtonl(et_arph->sproto, taddr);
    254236
    255         /* Ethernet ARP ヘッダを設定する。*/
     237        /* Ethernet ARP ヘッダを設定する。*/
    256238        arph->opcode = htons(ARPOP_REPLY);
    257239
    258         /* Ethernet ヘッダを設定する。*/
     240        /* Ethernet ヘッダを設定する。*/
    259241        eth = GET_ETHER_HDR(input);
    260242        memcpy(eth->dhost, eth->shost,     ETHER_ADDR_LEN);
    261243        memcpy(eth->shost, ifaddr->lladdr, ETHER_ADDR_LEN);
    262244
    263         /* ARP 応答を送信する。*/
     245        /* ARP 応答を送信する。*/
    264246        IF_RAW_OUTPUT(input, TMO_FEVR);
    265247        return;
     
    272254
    273255/*
    274  *  arp_timer -- ARP キャッシュの更新
     256 *  arp_timer -- ARP キャッシュの更新
    275257 */
    276258
     
    286268                        arp_cache[ix].expire -= ARP_TIMER_TMO;
    287269                        if (arp_cache[ix].expire == 0) {
    288                                 /* 送信がペンデングされているフレームがあれば捨てる。*/
     270                                /* 送信がペンデングされているフレームがあれば捨てる。*/
    289271                                if (arp_cache[ix].hold) {
    290272                                        NET_COUNT_IP4(net_count_ip4[NC_IP4_OUT_ERR_PACKETS], 1);
     
    301283
    302284/*
    303  *  arp_lookup -- ARP キャッシュの探索と登録
    304  *
    305  *    注意: SEM_ARP_CACHE_LOCK を獲得した状æ
    306 ‹ã§å‘¼å‡ºã™ã“と
     285 *  arp_lookup -- ARP キャッシュの探索と登録
     286 *
     287 *    注意: SEM_ARP_CACHE_LOCK を獲得した状態で呼出すこと
    307288 */
    308289
     
    318299                }
    319300
    320         /* create が真なら、新たなエントリを登録する。*/
     301        /* create が真なら、新たなエントリを登録する。*/
    321302        if (create) {
    322303
    323                 /* まず、空きがあれば、その空きを利用する。*/
     304                /* まず、空きがあれば、その空きを利用する。*/
    324305                for (ix = NUM_ARP_ENTRY; ix -- > 0; ) {
    325306                        if (arp_cache[ix].expire == 0) {
     
    330311
    331312                /*
    332                  *  空きがなければ、タイムアウトまで時間が最短の
    333                  *  エントリーを破棄して利用する。
     313                 *  空きがなければ、タイムアウトまで時間が最短の
     314                 *  エントリーを破棄して利用する。
    334315                 */
    335316                syslog(LOG_NOTICE, "[ARP] cache busy, size=%d", NUM_ARP_ENTRY);
     
    349330
    350331/*
    351  *  arp_request -- MAC アドレス解決要求
     332 *  arp_request -- MAC アドレス解決要求
    352333 */
    353334
     
    367348        if ((error = tget_net_buf(&arp_req, IF_ARP_ETHER_HDR_SIZE, TMO_ARP_GET_NET_BUF)) == E_OK) {
    368349
    369                 /* イーサネットヘッダを設定する。*/
     350                /* イーサネットヘッダを設定する。*/
    370351                eth     = GET_ETHER_HDR(arp_req);
    371352                memcpy(eth->dhost, ether_broad_cast_addr, ETHER_ADDR_LEN);
     
    373354                eth->type = htons(ETHER_TYPE_ARP);
    374355
    375                 /* ARP ヘッダを設定する。*/
     356                /* ARP ヘッダを設定する。*/
    376357                arph    = GET_ARP_HDR(arp_req);
    377358                arph->hrd_addr  = htons(ARPHRD_ETHER);
     
    381362                arph->opcode    = htons(ARPOP_REQUEST);
    382363
    383                 /* イーサネット ARP ヘッダを設定する。*/
     364                /* イーサネット ARP ヘッダを設定する。*/
    384365                et_arph = GET_ETHER_ARP_HDR(arp_req);
    385366                src     = IF_GET_IFNET()->in4_ifaddr.addr;
     
    389370                ahtonl(et_arph->tproto, dst);
    390371
    391                 /* 送信する。*/
     372                /* 送信する。*/
    392373                error = IF_RAW_OUTPUT(arp_req, TMO_ARP_OUTPUT);
    393374                }
     
    398379
    399380/*
    400  *  arp_get_cache -- ARP キャッシュを獲得する。
     381 *  arp_get_cache -- ARP キャッシュを獲得する。
    401382 */
    402383
     
    408389
    409390/*
    410  *  arp_input -- ARP のå
    411 ¥åŠ›é–¢æ•°
     391 *  arp_input -- ARP の入力関数
    412392 */
    413393
     
    420400        NET_COUNT_ARP(net_count_arp.in_packets, 1);
    421401
    422         /* ARP ヘッダの長さをチェックする。*/
     402        /* ARP ヘッダの長さをチェックする。*/
    423403        if (input->len < IF_ARP_HDR_SIZE)
    424404                goto buf_rel;
     
    427407
    428408        /*
    429          *  物理アドレスフォーマットが Ehternet 以外
    430          *  または、プロトコルが IP 以外はエラー。
     409         *  物理アドレスフォーマットが Ehternet 以外
     410         *  または、プロトコルが IP 以外はエラー。
    431411         */
    432412        if (ntohs(arph->hrd_addr) != ARPHRD_ETHER ||
     
    434414                goto buf_rel;
    435415
    436         /* ARP ヘッダ + Ether ARP ヘッダの長さをチェックする。*/
     416        /* ARP ヘッダ + Ether ARP ヘッダの長さをチェックする。*/
    437417        if (input->len < IF_ARP_ETHER_HDR_SIZE)
    438418                goto buf_rel;
     
    447427
    448428/*
    449  *  arp_resolve -- MAC アドレス解決
    450  *
    451  *    アドレス解決ができれば、戻り値は true を返し、できなければ
    452  *    送信をペンディングして、戻り値は false を返す。
     429 *  arp_resolve -- MAC アドレス解決
     430 *
     431 *    アドレス解決ができれば、戻り値は true を返し、できなければ
     432 *    送信をペンディングして、戻り値は false を返す。
    453433 */
    454434
     
    463443
    464444        /*
    465          *  次の場合は、イーサネットのブロードキャストアドレスを返す。
     445         *  次の場合は、イーサネットのブロードキャストアドレスを返す。
    466446         *
    467          *    ・å
    468 ¨ãƒ“ットが 1
    469          *    ・ホスト部のå
    470 ¨ãƒ“ットが 1 で、ネットワーク部がローカルアドレス
     447         *    ・全ビットが 1
     448         *    ・ホスト部の全ビットが 1 で、ネットワーク部がローカルアドレス
    471449         */
    472450        if (gw == IPV4_ADDR_BROADCAST ||
     
    476454                }
    477455
    478         /* 送信å
    479 ˆ GW の IP アドレスが ARP キャッシュにあるか調べる。*/
     456        /* 送信先 GW の IP アドレスが ARP キャッシュにあるか調べる。*/
    480457        syscall(wai_sem(SEM_ARP_CACHE_LOCK));
    481458        ent = arp_lookup(gw, true);
     
    486463                }
    487464        else {
    488                 /* 送信がペンデングされているフレームがあれば捨てる。*/
     465                /* 送信がペンデングされているフレームがあれば捨てる。*/
    489466                if (ent->hold) {
    490467                        NET_COUNT_IP4(net_count_ip4[NC_IP4_OUT_ERR_PACKETS], 1);
     
    493470
    494471                /*
    495                  *  送信をペンディングする。
    496                  *  IF でネットワークバッファを開放しないフラグが設定されているときは、
    497                  *  送信をペンディングしない。
     472                 *  送信をペンディングする。
     473                 *  IF でネットワークバッファを開放しないフラグが設定されているときは、
     474                 *  送信をペンディングしない。
    498475                 */
    499476                if ((output->flags & NB_FLG_NOREL_IFOUT) == 0)
     
    505482                syscall(sig_sem(SEM_ARP_CACHE_LOCK));
    506483
    507                 /* アドレス解決要求を送信する。*/
     484                /* アドレス解決要求を送信する。*/
    508485                arp_request(ifaddr, gw);
    509486                return false;
     
    512489
    513490/*
    514  *  arp_init -- ARP 初期化
     491 *  arp_init -- ARP 初期化
    515492 */
    516493
  • asp3_gr_sakura/trunk/tinet/netinet/if_ether.cfg

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/plain to text/plain; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    4533
    4634/*
    47  *  Ethernet ARP コンフィギュレーションファイル
     35 *  Ethernet ARP コンフィギュレーションファイル
    4836 */
    4937
    5038#if defined(_IP4_CFG) && defined(SUPPORT_ETHER)
    5139
    52 /* ARP キャッシュ更新用セマフォ */
     40/* ARP キャッシュ更新用セマフォ */
    5341
    5442CRE_SEM(SEM_ARP_CACHE_LOCK, { TA_TPRI, 1, 1 });
  • asp3_gr_sakura/trunk/tinet/netinet/if_ether.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8876 *  Ethernet Address Resolution Protocol.
    8977 *
    90  *  RFC 826 参ç
    91 §
     78 *  RFC 826 参照
    9279 */
    9380
    9481typedef struct t_ether_arp_hdr {
    95         uint8_t         shost[ETHER_ADDR_LEN];  /* 送信ホストの物理アドレス */
    96         uint8_t         sproto[IPV4_ADDR_LEN];  /* 送信ホストの IP アドレス   */
    97         uint8_t         thost[ETHER_ADDR_LEN];  /* 解決対象物理アドレス               */
    98         uint8_t         tproto[IPV4_ADDR_LEN];  /* 解決対象 IP アドレス         */
     82        uint8_t         shost[ETHER_ADDR_LEN];  /* 送信ホストの物理アドレス */
     83        uint8_t         sproto[IPV4_ADDR_LEN];  /* 送信ホストの IP アドレス       */
     84        uint8_t         thost[ETHER_ADDR_LEN];  /* 解決対象物理アドレス           */
     85        uint8_t         tproto[IPV4_ADDR_LEN];  /* 解決対象 IP アドレス         */
    9986        } T_ETHER_ARP_HDR;
    10087
     
    10592
    10693/*
    107  *  ARP キャッシュエントリ
     94 *  ARP キャッシュエントリ
    10895 */
    10996
    11097typedef struct arp_entry {
    111         T_NET_BUF       *hold;          /* ARP の解決å¾
    112 ã¡å‡ºåŠ›ãƒ•ãƒ¬ãƒ¼ãƒ    */
    113         T_IN4_ADDR      ip_addr;        /* IP アドレス                      */
    114         uint16_t        expire;         /* 破棄までの時間、0 なら未使用    */
    115         uint8_t         mac_addr[ETHER_ADDR_LEN];       /* MAC アドレス     */
     98        T_NET_BUF       *hold;          /* ARP の解決待ち出力フレーム      */
     99        T_IN4_ADDR      ip_addr;        /* IP アドレス                      */
     100        uint16_t        expire;         /* 破棄までの時間、0 なら未使用      */
     101        uint8_t         mac_addr[ETHER_ADDR_LEN];       /* MAC アドレス     */
    116102        } T_ARP_ENTRY;
    117103
    118104/*
    119  *  関数
     105 *  関数
    120106 */
    121107
     
    128114
    129115/*
    130  *  TINET 独自 API
     116 *  TINET 独自 API
    131117 */
    132118
  • asp3_gr_sakura/trunk/tinet/netinet/in.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8977
    9078/*
    91  *  TINET のバージョンæƒ
    92 å ±
     79 *  TINET のバージョン情報
    9380 */
    9481
    95 #define TINET_PRVER             UINT_C(0x1070)  /* TINET のバージョン番号 */
     82#define TINET_PRVER             UINT_C(0x1070)  /* TINET のバージョン番号 */
    9683
    9784/*
    98  *  インターネットシステムの定義、RFC790 参ç
    99 §
     85 *  インターネットシステムの定義、RFC790 参照
    10086 */
    10187
    10288/*
    103  *  プロトコル (RFC1700)
     89 *  プロトコル (RFC1700)
    10490 */
    10591
    106 #define IPPROTO_IP              UINT_C(0)       /* IP のダミー                              */
    107 #define IPPROTO_HOPOPTS         UINT_C(0)       /* IPv6 中継点 (Hop-by-Hop) オプション  */
     92#define IPPROTO_IP              UINT_C(0)       /* IP のダミー                              */
     93#define IPPROTO_HOPOPTS         UINT_C(0)       /* IPv6 中継点 (Hop-by-Hop) オプション  */
    10894#define IPPROTO_ICMP            UINT_C(1)       /* ICMP                                 */
    10995#define IPPROTO_TCP             UINT_C(6)       /* TCP                                  */
    11096#define IPPROTO_UDP             UINT_C(17)      /* UDP                                  */
    11197#define IPPROTO_IPV6            UINT_C(41)      /* IPv6                                 */
    112 #define IPPROTO_ROUTING         UINT_C(43)      /* 経路制御オプション                  */
    113 #define IPPROTO_FRAGMENT        UINT_C(44)      /* 断片化オプション                     */
     98#define IPPROTO_ROUTING         UINT_C(43)      /* 経路制御オプション                    */
     99#define IPPROTO_FRAGMENT        UINT_C(44)      /* 断片化オプション                     */
    114100#define IPPROTO_RSVP            UINT_C(46)      /* RSVP                                 */
    115 #define IPPROTO_ESP             UINT_C(50)      /* IPv6 暗号化オプション                */
    116 #define IPPROTO_AH              UINT_C(51)      /* IPv6 認証オプション                   */
     101#define IPPROTO_ESP             UINT_C(50)      /* IPv6 暗号化オプション                */
     102#define IPPROTO_AH              UINT_C(51)      /* IPv6 認証オプション                 */
    117103#define IPPROTO_ICMPV6          UINT_C(58)      /* ICMPv6                               */
    118 #define IPPROTO_NONE            UINT_C(59)      /* IPv6 次ヘッダ無し                      */
    119 #define IPPROTO_DSTOPTS         UINT_C(60)      /* IPv6 終点オプション                   */
    120 #define IPPROTO_IPCOMP          UINT_C(108)     /* ペイロード圧縮                        */
    121 #define IPPROTO_DONE            UINT_C(257)     /* IPv6 で上位プロトコルå
    122 ¥åŠ›çµ‚了      */
     104#define IPPROTO_NONE            UINT_C(59)      /* IPv6 次ヘッダ無し                  */
     105#define IPPROTO_DSTOPTS         UINT_C(60)      /* IPv6 終点オプション                 */
     106#define IPPROTO_IPCOMP          UINT_C(108)     /* ペイロード圧縮                      */
     107#define IPPROTO_DONE            UINT_C(257)     /* IPv6 で上位プロトコル入力終了    */
    123108
    124109/*
    125  *  ポートの長さ
     110 *  ポートの長さ
    126111 */
    127112
     
    129114
    130115/*
    131  *  ポート番号の定義
     116 *  ポート番号の定義
    132117 */
    133118
    134 #define TCP_PORTANY                     UINT_C(0x0000)  /* ITRON TCP/IP 標準  */
    135 #define UDP_PORTANY                     UINT_C(0x0000)  /* ITRON TCP/IP 標準  */
     119#define TCP_PORTANY                     UINT_C(0x0000)  /* ITRON TCP/IP 標準      */
     120#define UDP_PORTANY                     UINT_C(0x0000)  /* ITRON TCP/IP 標準      */
    136121
    137 #define TCP_PORT_LAST_WELL_KNOWN        UINT_C(1023)    /* Well Known 終了番号      */
    138 #define TCP_PORT_FIRST_AUTO             UINT_C(1024)    /* 自動割り当て開始番号       */
    139 #define TCP_PORT_LAST_AUTO              UINT_C(4999)    /* 自動割り当て終了番号       */
     122#define TCP_PORT_LAST_WELL_KNOWN        UINT_C(1023)    /* Well Known 終了番号      */
     123#define TCP_PORT_FIRST_AUTO             UINT_C(1024)    /* 自動割り当て開始番号   */
     124#define TCP_PORT_LAST_AUTO              UINT_C(4999)    /* 自動割り当て終了番号   */
    140125
    141 #define UDP_PORT_LAST_WELL_KNOWN        UINT_C(1023)    /* Well Known 終了番号      */
    142 #define UDP_PORT_FIRST_AUTO             UINT_C(1024)    /* 自動割り当て開始番号       */
    143 #define UDP_PORT_LAST_AUTO              UINT_C(4999)    /* 自動割り当て終了番号       */
     126#define UDP_PORT_LAST_WELL_KNOWN        UINT_C(1023)    /* Well Known 終了番号      */
     127#define UDP_PORT_FIRST_AUTO             UINT_C(1024)    /* 自動割り当て開始番号   */
     128#define UDP_PORT_LAST_AUTO              UINT_C(4999)    /* 自動割り当て終了番号   */
    144129
    145130/*
    146  *  API IPプロトコルの指定
     131 *  API IPプロトコルの指定
    147132 */
    148133
     
    152137
    153138/*
    154  *  動的生成用 TCP/IPv6 通信端点
     139 *  動的生成用 TCP/IPv6 通信端点
    155140 */
    156141
     
    158143
    159144/*
    160  *  バイトオーダ関数の定義
     145 *  バイトオーダ関数の定義
    161146 *
    162  *    tinet/net/net.h でもバイトオーダの定義を行っているが、
    163  *    tinet/net/net.h をインクルードしない
    164  *    アプリケーションプログラム用に
    165  *    ターゲット依存しないバイトオーダ関数を定義する。
     147 *    tinet/net/net.h でもバイトオーダの定義を行っているが、
     148 *    tinet/net/net.h をインクルードしない
     149 *    アプリケーションプログラム用に
     150 *    ターゲット依存しないバイトオーダ関数を定義する。
    166151 */
    167152
    168153#if defined(_NET_CFG_BYTE_ORDER)
    169154
    170 /*  tinet/net/net.h をインクルードしている。*/
     155/*  tinet/net/net.h をインクルードしている。*/
    171156
    172157#else   /* of #if defined(_NET_CFG_BYTE_ORDER) */
     
    185170
    186171/*
    187  *  TINET 独自 API
     172 *  TINET 独自 API
    188173 */
    189174
  • asp3_gr_sakura/trunk/tinet/netinet/in4.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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$
     
    8472
    8573/*
    86  *  IPv4 アドレス
    87  */
    88 
    89 /* 前方参ç
    90 § */
     74 *  IPv4 アドレス
     75 */
     76
     77/* 前方参照 */
    9178
    9279#ifndef T_IN4_ADDR_DEFINED
     
    9986
    10087/*
    101  *  ITRON TCP/IPv4 アドレス/ポート番号の定義
     88 *  ITRON TCP/IPv4 アドレス/ポート番号の定義
    10289 */
    10390
    10491typedef struct t_ipv4ep {
    105         uint32_t        ipaddr;         /* IPv4 アドレス    */
    106         uint16_t        portno;         /* ポート番号              */
     92        uint32_t        ipaddr;         /* IPv4 アドレス    */
     93        uint16_t        portno;         /* ポート番号                */
    10794        } T_IPV4EP;
    10895
     
    11097
    11198/*
    112  *  アドレスの長さ
     99 *  アドレスの長さ
    113100 */
    114101
     
    116103
    117104/*
    118  *  IPv4 アドレスの定義
    119  */
    120 
    121 #define IPV4_ADDRANY            ULONG_C(0x00000000)     /* ITRON TCP/IP 標準  */
     105 *  IPv4 アドレスの定義
     106 */
     107
     108#define IPV4_ADDRANY            ULONG_C(0x00000000)     /* ITRON TCP/IP 標準      */
    122109#define IPV4_ADDRBROADCAST      ULONG_C(0xffffffff)
    123110
     
    158145
    159146/*
    160  *  関数シミュレーションマクロ
     147 *  関数シミュレーションマクロ
    161148 */
    162149
     
    167154
    168155/*
    169  *  動的生成用 TCP 通信端点
     156 *  動的生成用 TCP 通信端点
    170157 */
    171158
    172159typedef struct t_tcp_ccep {
    173         /* 標準 */
    174         ATR             cepatr;         /* 通信端点属性                   */
    175         void            *sbuf;          /* 送信用ウィンドバッファ    */
    176         int_t           sbufsz;         /* 送信用ウィンドバッファサイズ   */
    177         void            *rbuf;          /* 受信用ウィンドバッファ    */
    178         int_t           rbufsz;         /* 受信用ウィンドバッファサイズ   */
    179         FP              callback;       /* コールバック                   */
    180         /* 実è£
    181 ä¾å­˜ */
     160        /* 標準 */
     161        ATR             cepatr;         /* 通信端点属性                       */
     162        void            *sbuf;          /* 送信用ウィンドバッファ  */
     163        int_t           sbufsz;         /* 送信用ウィンドバッファサイズ       */
     164        void            *rbuf;          /* 受信用ウィンドバッファ  */
     165        int_t           rbufsz;         /* 受信用ウィンドバッファサイズ       */
     166        FP              callback;       /* コールバック                       */
     167        /* 実装依存 */
    182168        } T_TCP_CCEP;
    183169
    184170/*
    185  *  動的生成用 TCP 受付口
     171 *  動的生成用 TCP 受付口
    186172 */
    187173
    188174typedef struct t_tcp_crep {
    189         /* 標準 */
    190         ATR             repatr;         /* 受付口属性              */
    191         T_IPV4EP        myaddr;         /* 自分のアドレス        */
    192         /* 実è£
    193 ä¾å­˜ */
     175        /* 標準 */
     176        ATR             repatr;         /* 受付口属性                */
     177        T_IPV4EP        myaddr;         /* 自分のアドレス      */
     178        /* 実装依存 */
    194179        } T_TCP_CREP;
    195180
    196181/*
    197  *  動的生成用 UDP 通信端点
     182 *  動的生成用 UDP 通信端点
    198183 */
    199184
    200185typedef struct t_udp_ccep {
    201         /* 標準 */
    202         ATR             cepatr;         /* UDP 通信端点属性               */
    203         T_IPV4EP        myaddr;         /* 自分のアドレス                */
    204         FP              callback;       /* コールバック関数             */
    205         /* 実è£
    206 ä¾å­˜ */
     186        /* 標準 */
     187        ATR             cepatr;         /* UDP 通信端点属性           */
     188        T_IPV4EP        myaddr;         /* 自分のアドレス              */
     189        FP              callback;       /* コールバック関数             */
     190        /* 実装依存 */
    207191        } T_UDP_CCEP;
    208192
    209193/*
    210  *  TINET 独自 API
     194 *  TINET 独自 API
    211195 */
    212196
  • asp3_gr_sakura/trunk/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
    r317 r318  
    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
  • asp3_gr_sakura/trunk/tinet/netinet/in4_var.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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$
     
    8674
    8775/*
    88  *  インタフェースアドレス構造体
     76 *  インタフェースアドレス構造体
    8977 */
    9078
    9179typedef struct t_in4_ifaddr {
    92         T_IN4_ADDR              addr;           /* IPv4 アドレス    */
    93         T_IN4_ADDR              mask;           /* サブネットマスク     */
     80        T_IN4_ADDR              addr;           /* IPv4 アドレス    */
     81        T_IN4_ADDR              mask;           /* サブネットマスク     */
    9482        } T_IN4_IFADDR;
    9583
    9684/*
    97  *  ルーティング表エントリ構造体
     85 *  ルーティング表エントリ構造体
    9886 */
    9987
    10088typedef struct t_in4_rtentry {
    101         T_IN4_ADDR      target;         /* 目標ネットワークアドレス                 */
    102         T_IN4_ADDR      mask;           /* 目標ネットワークアドレスのサブネットマスク      */
    103         T_IN4_ADDR      gateway;        /* ゲートウェイの IP アドレス                        */
    104         uint32_t        expire;         /* 有効時間が切れる時刻 [s]                   */
    105         uint8_t         flags;          /* フラグ                                    */
     89        T_IN4_ADDR      target;         /* 目標ネットワークアドレス                 */
     90        T_IN4_ADDR      mask;           /* 目標ネットワークアドレスのサブネットマスク        */
     91        T_IN4_ADDR      gateway;        /* ゲートウェイの IP アドレス                      */
     92        uint32_t        expire;         /* 有効時間が切れる時刻 [s]                       */
     93        uint8_t         flags;          /* フラグ                                  */
    10694        } T_IN4_RTENTRY;
    10795/*
    108  *  TINET 1.1 との互換性のための定義
    109  *
    110  *  TINET 1.5 との互換性のために定義を無効にした。
     96 *  TINET 1.1 との互換性のための定義
     97 *
     98 *  TINET 1.5 との互換性のために定義を無効にした。
    11199 */
    112100
     
    123111
    124112/*
    125  *  ルーティング表
     113 *  ルーティング表
    126114 */
    127115
     
    133121
    134122/*
    135  *  前方参ç
    136 §
     123 *  前方参照
    137124 */
    138125
     
    148135
    149136/*
    150  *  関数シミュレーションマクロ
     137 *  関数シミュレーションマクロ
    151138 */
    152139
     
    154141
    155142/*
    156  *  関数
     143 *  関数
    157144 */
    158145
     
    171158
    172159/*
    173  *  in4_is_dstaddr_accept -- 宛å
    174 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—て正しいかチェックする。
    175  *
    176  *    注意: dstaddr は、
    177  *          TINET-1.2 からネットワークバイトオーダ、
    178  *          TINET-1.1 までは、ホストバイトオーダ
     160 *  in4_is_dstaddr_accept -- 宛先アドレスとして正しいかチェックする。
     161 *
     162 *    注意: dstaddr は、
     163 *          TINET-1.2 からネットワークバイトオーダ、
     164 *          TINET-1.1 までは、ホストバイトオーダ
    179165 */
    180166extern bool_t in4_is_dstaddr_accept (T_IN4_ADDR *myaddr, T_IN4_ADDR *dstaddr);
     
    182168
    183169/*
    184  *  in_cksum -- チェックサム計算関数、IPv4、ICMPv4 用
    185  *
    186  *  注意: data は 4 オクテット単位でパディングすること。
    187  *        data が 2 オクテット単位にアラインされていないと
    188  *        例外が発生する可能性がある。
    189  *        len  は 4 オクテット単位にアラインされていること。
    190  */
    191 extern uint16_t in_cksum(void *data, uint_t len /*オクテット単位*/);
    192 
    193 /*
    194  *  in_cksum_sum -- チェックサムの合計計算関数
    195  *
    196  *  注意: data は 4 オクテット単位でパディングすること。
    197  *        data が 2 オクテット単位にアラインされていないと
    198  *        例外が発生する可能性がある。
    199  *        len  は 4 オクテット単位にアラインされていること。
    200  */
    201 extern uint32_t in_cksum_sum (void *data, uint_t len /*オクテット単位*/);
    202 
    203 /*
    204  *  in_cksum_carry -- チェックサムの桁上げ計算関数
    205  *
    206  *  注意: data は 4 オクテット単位でパディングすること。
    207  *        data が 2 オクテット単位にアラインされていないと
    208  *        例外が発生する可能性がある。
    209  *        len  は 4 オクテット単位にアラインされていること。
     170 *  in_cksum -- チェックサム計算関数、IPv4、ICMPv4 用
     171 *
     172 *  注意: data は 4 オクテット単位でパディングすること。
     173 *        data が 2 オクテット単位にアラインされていないと
     174 *        例外が発生する可能性がある。
     175 *        len  は 4 オクテット単位にアラインされていること。
     176 */
     177extern uint16_t in_cksum(void *data, uint_t len /*オクテット単位*/);
     178
     179/*
     180 *  in_cksum_sum -- チェックサムの合計計算関数
     181 *
     182 *  注意: data は 4 オクテット単位でパディングすること。
     183 *        data が 2 オクテット単位にアラインされていないと
     184 *        例外が発生する可能性がある。
     185 *        len  は 4 オクテット単位にアラインされていること。
     186 */
     187extern uint32_t in_cksum_sum (void *data, uint_t len /*オクテット単位*/);
     188
     189/*
     190 *  in_cksum_carry -- チェックサムの桁上げ計算関数
     191 *
     192 *  注意: data は 4 オクテット単位でパディングすること。
     193 *        data が 2 オクテット単位にアラインされていないと
     194 *        例外が発生する可能性がある。
     195 *        len  は 4 オクテット単位にアラインされていること。
    210196 */
    211197extern uint32_t in_cksum_carry (uint32_t sum);
  • asp3_gr_sakura/trunk/tinet/netinet/in_itron.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    4836
    4937/*
    50  *  API 機能・事象コード
     38 *  API 機能・事象コード
    5139 */
    5240
    53 /* TCP 関係 */
     41/* TCP 関係 */
    5442
    5543#define TFN_TCP_CRE_REP         (-0x201)
     
    7664#define TEV_TCP_RCV_OOB         (-0x201)
    7765
    78 /* UDP 関係 */
     66/* UDP 関係 */
    7967
    8068#define TFN_UDP_CRE_CEP         (-0x221)
     
    8977#define TEV_UDP_RCV_DAT         (-0x221)
    9078
    91 /* 一般 */
     79/* 一般 */
    9280
    93 #define NADR                    ((void*)(-1))   /* 無効アドレス */
     81#define NADR                    ((void*)(-1))   /* 無効アドレス */
    9482#define IS_PTR_DEFINED(a)       ((void*)(a)!=NADR&&(void*)(a)!=NULL)
    9583#define TCP_REP_NONE            UINT_C(0)
     
    9886
    9987/*
    100  *  関数
     88 *  関数
    10189 */
    10290
    103 /* TCP 関係 */
     91/* TCP 関係 */
    10492
    105 /* 【標準機能】 */
     93/* 【標準機能】 */
    10694
    10795extern ER       tcp_acp_cep (ID cepid, ID repid, T_IPV4EP *p_dstaddr, TMO tmout);
     
    120108extern ER       tcp6_con_cep (ID cepid, T_IPV6EP *p_myaddr, T_IPV6EP *p_dstaddr, TMO tmout);
    121109
    122 /* 【拡張機能】 */
     110/* 【拡張機能】 */
    123111
    124112extern ER       tcp_del_rep (ID cepid);
     
    133121extern ER       tcp6_cre_rep (ID repid, T_TCP6_CREP *pk_crep);
    134122
    135 /* UDP 関係 */
     123/* UDP 関係 */
    136124
    137 /* 【標準機能】 */
     125/* 【標準機能】 */
    138126
    139127extern ER_UINT  udp_snd_dat (ID cepid, T_IPV4EP *p_dstaddr, void *data, int_t len, TMO tmout);
     
    144132extern ER_UINT  udp6_rcv_dat (ID cepid, T_IPV6EP *p_dstaddr, void *data, int_t len, TMO tmout);
    145133
    146 /* 【拡張機能】 */
     134/* 【拡張機能】 */
    147135
    148136extern ER       udp_del_cep (ID cepid);
  • asp3_gr_sakura/trunk/tinet/netinet/in_rename.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    4836
    4937/*
    50  *  TCP/IP プロトコルスタックå†
    51 éƒ¨åã®ãƒªãƒãƒ¼ãƒ 
     38 *  TCP/IP プロトコルスタック内部名のリネーム
    5239 */
    5340
     
    158145#define tmax_tcp_repid          _tinet_tmax_tcp_repid
    159146#define tmax_tcp_cepid          _tinet_tmax_tcp_cepid
    160 #define tmax_tcp_crepid         _tinet_tmax_tcp_repid   /* TINET 1.3 との互換性のための定義 */
    161 #define tmax_tcp_ccepid         _tinet_tmax_tcp_cepid   /* TINET 1.3 との互換性のための定義 */
     147#define tmax_tcp_crepid         _tinet_tmax_tcp_repid   /* TINET 1.3 との互換性のための定義 */
     148#define tmax_tcp_ccepid         _tinet_tmax_tcp_cepid   /* TINET 1.3 との互換性のための定義 */
    162149
    163150/* netinet/udp_input.c */
     
    195182#define udp4_cep                _tinet_udp4_cep
    196183#define tmax_udp_cepid          _tinet_tmax_udp_cepid
    197 #define tmax_udp_ccepid         _tinet_tmax_udp_cepid   /* TINET 1.3 との互換性のための定義 */
     184#define tmax_udp_ccepid         _tinet_tmax_udp_cepid   /* TINET 1.3 との互換性のための定義 */
    198185
    199186/* netinet/ip_icmp.c */
  • asp3_gr_sakura/trunk/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
    r317 r318  
    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$
     
    117105
    118106/*
    119  *  in_cksum_sum -- チェックサムの合計計算関数
    120  *
    121  *  注意: data は 4 オクテット単位でパディングすること。
    122  *        data が 2 オクテット単位にアラインされていないと
    123  *        例外が発生する可能性がある。
    124  *        len  は 4 オクテット単位にアラインされていること。
    125  *
    126  *        戻り値はホストバイトオーダ
     107 *  in_cksum_sum -- チェックサムの合計計算関数
     108 *
     109 *  注意: data は 4 オクテット単位でパディングすること。
     110 *        data が 2 オクテット単位にアラインされていないと
     111 *        例外が発生する可能性がある。
     112 *        len  は 4 オクテット単位にアラインされていること。
     113 *
     114 *        戻り値はホストバイトオーダ
    127115 */
    128116
    129117uint32_t
    130 in_cksum_sum (void *data, uint_t len /*オクテット単位*/)
     118in_cksum_sum (void *data, uint_t len /*オクテット単位*/)
    131119{
    132120        uint32_t sum = 0;
     
    146134
    147135/*
    148  *  in_cksum_carry -- チェックサムの桁上げ計算関数
    149  *
    150  *  注意: data は 4 オクテット単位でパディングすること。
    151  *        data が 2 オクテット単位にアラインされていないと
    152  *        例外が発生する可能性がある。
    153  *        len  は 4 オクテット単位にアラインされていること。
     136 *  in_cksum_carry -- チェックサムの桁上げ計算関数
     137 *
     138 *  注意: data は 4 オクテット単位でパディングすること。
     139 *        data が 2 オクテット単位にアラインされていないと
     140 *        例外が発生する可能性がある。
     141 *        len  は 4 オクテット単位にアラインされていること。
    154142 */
    155143
     
    168156
    169157/*
    170  *  in_strtfn -- API 機能コードの文字表現を返す。
     158 *  in_strtfn -- API 機能コードの文字表現を返す。
    171159 */
    172160
    173161typedef struct t_strtfn {
    174         FN              fncd;   /* API 機能コード  */
    175         const char      *str;   /* 文字表現         */
     162        FN              fncd;   /* API 機能コード    */
     163        const char      *str;   /* 文字表現         */
    176164        } T_STRTFN;
    177165
     
    222210
    223211/*
    224  *  ipv42str -- IPv4 アドレスを文字列に変換する。
     212 *  ipv42str -- IPv4 アドレスを文字列に変換する。
    225213 */
    226214
     
    256244
    257245/*
    258  *  in6_is_addr_ipv4mapped -- IPv4 射影アドレスである事を検査する。
     246 *  in6_is_addr_ipv4mapped -- IPv4 射影アドレスである事を検査する。
    259247 */
    260248
     
    268256
    269257/*
    270  *  ip_exchg_addr -- IP アドレスを交換する。
     258 *  ip_exchg_addr -- IP アドレスを交換する。
    271259 */
    272260
     
    279267        iph  = GET_IP6_HDR(nbuf);
    280268
    281         /* IPv6 アドレスを交換する。*/
     269        /* IPv6 アドレスを交換する。*/
    282270        ipaddr = iph->src;
    283271        iph->src = iph->dst;
     
    293281        iph  = GET_IP4_HDR(nbuf);
    294282
    295         /* IPv4 アドレスを交換する。*/
     283        /* IPv4 アドレスを交換する。*/
    296284        ipaddr = iph->src;
    297285        iph->src = iph->dst;
     
    311299
    312300/*
    313  *  ip_exchg_addr -- IP アドレスを交換する。
     301 *  ip_exchg_addr -- IP アドレスを交換する。
    314302 */
    315303
     
    322310        iph  = GET_IP_HDR(nbuf);
    323311
    324         /* IP アドレスを交換する。*/
     312        /* IP アドレスを交換する。*/
    325313        ipaddr = iph->src;
    326314        iph->src = iph->dst;
     
    333321
    334322/*
    335  *  inn_is_dstaddr_accept -- 宛å
    336 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—て正しいかチェックする。
     323 *  inn_is_dstaddr_accept -- 宛先アドレスとして正しいかチェックする。
    337324 */
    338325
     
    357344
    358345/*
    359  *  inn_are_net_srcaddr_equal -- アドレスが同一かチェックする。
     346 *  inn_are_net_srcaddr_equal -- アドレスが同一かチェックする。
    360347 */
    361348
     
    375362
    376363/*
    377  *  inn_copy_to_host -- IP ヘッダからホスト表現変換して、IP アドレスをコピーする。
     364 *  inn_copy_to_host -- IP ヘッダからホスト表現変換して、IP アドレスをコピーする。
    378365 */
    379366
     
    389376
    390377/*
    391  *  inn_get_datagram -- IPv6/IPv4 データグラムを獲得し、ヘッダを設定する。
     378 *  inn_get_datagram -- IPv6/IPv4 データグラムを獲得し、ヘッダを設定する。
    392379 */
    393380
     
    413400
    414401/*
    415  * inn_addrwithifp -- 宛å
    416 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãµã•ã‚ã—い送信å
    417 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’、
    418  *                   ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã‹ã‚‰æŽ¢ç´¢ã™ã‚‹ã€‚
     402 * inn_addrwithifp -- 宛先アドレスにふさわしい送信元アドレスを、
     403 *                   ネットワークインタフェースから探索する。
    419404 */
    420405
     
    435420
    436421/*
    437  *  inn_is_addr_multicast -- アドレスがマルチキャストアドレスかチェックする。
     422 *  inn_is_addr_multicast -- アドレスがマルチキャストアドレスかチェックする。
    438423 */
    439424
     
    451436
    452437/*
    453  *  バイトオーダ関数の定義
    454  *
    455  *    tinet/net/net.h でもバイトオーダの定義を行っているが、
    456  *    tinet/net/net.h をインクルードしない
    457  *    アプリケーションプログラム用に
    458  *    ターゲット依存しないバイトオーダ関数を定義する。
     438 *  バイトオーダ関数の定義
     439 *
     440 *    tinet/net/net.h でもバイトオーダの定義を行っているが、
     441 *    tinet/net/net.h をインクルードしない
     442 *    アプリケーションプログラム用に
     443 *    ターゲット依存しないバイトオーダ関数を定義する。
    459444 */
    460445
  • asp3_gr_sakura/trunk/tinet/netinet/in_var.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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$
     
    8775
    8876/*
    89  *  独自のエラーコード
    90  */
    91 
    92 #define EV_NOPND                (-97)           /* ペンディングしていない */
    93 
    94 /*
    95  *  ネットワークエラーコード
    96  */
    97 
    98 #define EV_MSIZE                (-98)           /* データグラム長è¶
    99 éŽ     */
    100 #define EV_NURCH                (-99)           /* ネットワーク到達不能       */
    101 #define EV_HDOWN                (-100)          /* ホストダウン           */
    102 #define EV_HURCH                (-101)          /* ホスト到達不能        */
    103 #define EV_CNNRF                (-102)          /* 接続不能         */
    104 #define EV_CNRST                (-103)          /* 接続リセット           */
    105 #define EV_REXMTMO              (-104)          /* 再送タイムアウト     */
    106 
    107 /*
    108  *  å
    109 ±é€šã‚¿ã‚¤ãƒžã®èµ·å‹•å‘¨æœŸã®å®šç¾©
     77 *  独自のエラーコード
     78 */
     79
     80#define EV_NOPND                (-97)           /* ペンディングしていない */
     81
     82/*
     83 *  ネットワークエラーコード
     84 */
     85
     86#define EV_MSIZE                (-98)           /* データグラム長超過    */
     87#define EV_NURCH                (-99)           /* ネットワーク到達不能   */
     88#define EV_HDOWN                (-100)          /* ホストダウン               */
     89#define EV_HURCH                (-101)          /* ホスト到達不能      */
     90#define EV_CNNRF                (-102)          /* 接続不能         */
     91#define EV_CNRST                (-103)          /* 接続リセット               */
     92#define EV_REXMTMO              (-104)          /* 再送タイムアウト     */
     93
     94/*
     95 *  共通タイマの起動周期の定義
    11096 */
    11197
     
    11399
    114100/*
    115  *  ルーティングエントリ状æ
    116 ‹ãƒ•ãƒ©ã‚°
    117  */
    118 
    119 #define IN_RTF_DEFINED          UINT_C(0x01)    /* 定義済み                 */
    120 #define IN_RTF_REDIRECT         UINT_C(0x10)    /* 向け直しにより自動設定された   */
    121 
    122 /*
    123  *  IPv4 と IPv6 をコンパイル時に選択するためのマクロ
     101 *  ルーティングエントリ状態フラグ
     102 */
     103
     104#define IN_RTF_DEFINED          UINT_C(0x01)    /* 定義済み                 */
     105#define IN_RTF_REDIRECT         UINT_C(0x10)    /* 向け直しにより自動設定された       */
     106
     107/*
     108 *  IPv4 と IPv6 をコンパイル時に選択するためのマクロ
    124109 */
    125110
     
    207192
    208193/*
    209  *  関数
     194 *  関数
    210195 */
    211196extern bool_t   inn_is_dstaddr_accept (T_IN6_ADDR *myaddr, T_NET_BUF *nbuf);
  • asp3_gr_sakura/trunk/tinet/netinet/ip.cfg

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/plain to text/plain; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    4533
    4634/*
    47  *  IPv4 で使用するカーネルオブジェクト
     35 *  IPv4 で使用するカーネルオブジェクト
    4836 */
    4937
     
    5240#ifdef IP4_CFG_FRAGMENT
    5341
    54 /* データグラムの分割・再構成 */
     42/* データグラムの分割・再構成 */
    5543
    5644CRE_SEM(SEM_IP4_FRAG_QUEUE, { TA_TPRI, 1, 1 });
     
    6048#if NUM_IN4_REDIRECT_ROUTE_ENTRY > 0
    6149
    62 /* ルーティング表(向け直し)*/
     50/* ルーティング表(向け直し)*/
    6351
    6452CRE_SEM(SEM_IN4_ROUTING_TBL, { TA_TPRI, 1, 1 });
  • asp3_gr_sakura/trunk/tinet/netinet/ip.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8674
    8775/*
    88  *  IPv4 の定義、RFC791 参ç
    89 §
     76 *  IPv4 の定義、RFC791 参照
    9077 */
    9178
     
    9380
    9481/*
    95  *  IPv4 ヘッダの定義
     82 *  IPv4 ヘッダの定義
    9683 */
    9784
    9885typedef struct t_ip4_hdr {
    9986        uint8_t         vhl;            /* version << 4 | header length >> 2    */
    100                                         /* length は 4 octets 単位           */
     87                                        /* length は 4 octets 単位         */
    10188        uint8_t         type;           /* type of services                     */
    10289        uint16_t        len;            /* total length                         */
     
    116103
    117104/*
    118  *  IPv4 ヘッダ構造体メンバアクセスマクロ
     105 *  IPv4 ヘッダ構造体メンバアクセスマクロ
    119106 */
    120107
     
    128115
    129116/*
    130  *  IPv4 ヘッダのフィールドの値の定義
     117 *  IPv4 ヘッダのフィールドの値の定義
    131118 */
    132119
    133 #define IP4_VHL_BORING  UINT_C(0x45)    /* オプションがない VHL 値     */
    134 #define IP4_RF          UINT_C(0x8000)  /* off: 予約                  */
    135 #define IP4_DF          UINT_C(0x4000)  /* off: 分割禁止                    */
    136 #define IP4_MF          UINT_C(0x2000)  /* off: 分割あり                    */
    137 #define IP4_OFFMASK     UINT_C(0x1fff)  /* オフセット部のマスク値            */
     120#define IP4_VHL_BORING  UINT_C(0x45)    /* オプションがない VHL 値       */
     121#define IP4_RF          UINT_C(0x8000)  /* off: 予約                      */
     122#define IP4_DF          UINT_C(0x4000)  /* off: 分割禁止                    */
     123#define IP4_MF          UINT_C(0x2000)  /* off: 分割あり                    */
     124#define IP4_OFFMASK     UINT_C(0x1fff)  /* オフセット部のマスク値          */
    138125
    139126/*
    140  *  制限値
     127 *  制限値
    141128 */
    142129
    143 #define IP4_MAXPACKET   UINT_C(65535)   /* 最大パケットサイズ          */
    144 #define IP4_MAXTTL      UINT_C(255)     /* TTL 最大値                        */
    145 #define IP4_DEFTTL      UINT_C(64)      /* TTL 規定値 (RFC1340)              */
    146 #define IP4_FRAGTTL     UINT_C(60)      /* 分割されたデータグラムの生存時間(秒)*/
    147 #define IP4_MSS         UINT_C(576)     /* 最大セグメントサイズの規定値   */
     130#define IP4_MAXPACKET   UINT_C(65535)   /* 最大パケットサイズ            */
     131#define IP4_MAXTTL      UINT_C(255)     /* TTL 最大値                      */
     132#define IP4_DEFTTL      UINT_C(64)      /* TTL 規定値 (RFC1340)            */
     133#define IP4_FRAGTTL     UINT_C(60)      /* 分割されたデータグラムの生存時間(秒)*/
     134#define IP4_MSS         UINT_C(576)     /* 最大セグメントサイズの規定値       */
    148135
    149 /* IPv4 と IPv6 をコンパイル時に選択するためのマクロ */
     136/* IPv4 と IPv6 をコンパイル時に選択するためのマクロ */
    150137
    151138#if !defined(_IP6_CFG) && defined(_IP4_CFG)
  • asp3_gr_sakura/trunk/tinet/netinet/ip4_var.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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$
     
    8472
    8573/*
    86  *  IPv4 ヘッダ・ペイロードアクセスマクロ
     74 *  IPv4 ヘッダ・ペイロードアクセスマクロ
    8775 */
    8876
     
    9987
    10088/*
    101  *  IP の MSS サイズのネットワークバッファ
     89 *  IP の MSS サイズのネットワークバッファ
    10290 */
    10391
    10492typedef struct t_net_buf_ip_mss {
    105         uint16_t        len;    /* データの長さ           */
    106         uint8_t         idix;   /* mpfid のインデックス  */
    107         uint8_t         flags;  /* フラグ            */
     93        uint16_t        len;    /* データの長さ               */
     94        uint8_t         idix;   /* mpfid のインデックス        */
     95        uint8_t         flags;  /* フラグ          */
    10896#ifdef IF_ETHER_NIC_NET_BUF_ALIGN
    10997        uint8_t         nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
     
    113101#endif
    114102        uint8_t         buf[IF_HDR_SIZE + IP4_MSS];
    115                                 /* バッファ本体           */
     103                                /* バッファ本体               */
    116104        } T_NET_BUF_IP_MSS;
    117105
    118106/*
    119  *  65536 オクテットサイズのネットワークバッファ
     107 *  65536 オクテットサイズのネットワークバッファ
    120108 */
    121109
    122110typedef struct t_net_buf4_65536 {
    123         uint16_t        len;    /* データの長さ           */
    124         uint8_t         idix;   /* mpfid のインデックス  */
    125         uint8_t         flags;  /* フラグ            */
     111        uint16_t        len;    /* データの長さ               */
     112        uint8_t         idix;   /* mpfid のインデックス        */
     113        uint8_t         flags;  /* フラグ          */
    126114#ifdef IF_ETHER_NIC_NET_BUF_ALIGN
    127115        uint8_t         nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
     
    131119#endif
    132120        uint8_t         buf[IF_IP4_HDR_SIZE + 65536];
    133                                 /* バッファ本体           */
     121                                /* バッファ本体               */
    134122#if defined(IF_PDU_HDR_PADDING)
    135123        uint8_t         padding[IF_PDU_HDR_PADDING];
    136 #endif                          /* ヘッダの余分           */
     124#endif                          /* ヘッダの余分               */
    137125        } T_NET_BUF4_65536;
    138126
     
    140128
    141129/*
    142  *  再構成キュー用 IPv4 ヘッダの定義
     130 *  再構成キュー用 IPv4 ヘッダの定義
    143131 */
    144132
    145133typedef struct t_qip4_hdr {
    146134        uint8_t         vhl;            /* version << 4 | header length >> 2    */
    147                                         /* length は 4 octets 単位           */
     135                                        /* length は 4 octets 単位         */
    148136        uint8_t         type;           /* type of services                     */
    149137        uint16_t        len;            /* total length                         */
     
    158146        uint32_t        src;            /* source address                       */
    159147
    160         T_NET_BUF       *next;          /* 次の IPv4 フラグメント                       */
     148        T_NET_BUF       *next;          /* 次の IPv4 フラグメント                       */
    161149        } T_QIP4_HDR;
    162150
     
    171159
    172160/*
    173  *  データグラム再構成用ネットワークバッファ
     161 *  データグラム再構成用ネットワークバッファ
    174162 */
    175163
    176164typedef struct t_net_buf4_reassm {
    177         uint16_t        len;    /* データの長さ           */
    178         uint8_t         idix;   /* mpfid のインデックス  */
    179         uint8_t         flags;  /* フラグ            */
     165        uint16_t        len;    /* データの長さ               */
     166        uint8_t         idix;   /* mpfid のインデックス        */
     167        uint8_t         flags;  /* フラグ          */
    180168#ifdef IF_ETHER_NIC_NET_BUF_ALIGN
    181169        uint8_t         nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
     
    185173#endif
    186174        uint8_t         buf[IP4_CFG_FRAG_REASSM_SIZE];
    187                                 /* バッファ本体           */
     175                                /* バッファ本体               */
    188176        } T_NET_BUF4_REASSM;
    189177
     
    191179
    192180/*
    193  *  TCP の再構成キューにおける IPv4 ヘッダの定義
     181 *  TCP の再構成キューにおける IPv4 ヘッダの定義
    194182 */
    195183
    196184typedef struct t_ip4_tcp_q_hdr {
    197185        uint8_t         vhl;            /* version << 4 | header length >> 2    */
    198                                         /* length は 4 octets 単位           */
     186                                        /* length は 4 octets 単位         */
    199187        uint8_t         type;           /* type of services                     */
    200188        uint16_t        len;            /* total length                         */
     
    205193        uint8_t         ttl;            /* time to live                         */
    206194        uint8_t         proto;          /* protocol                             */
    207         uint16_t        thoff;          /* TCP ヘッダのオフセット              */
     195        uint16_t        thoff;          /* TCP ヘッダのオフセット                */
    208196
    209197        T_IN4_ADDR      src;            /* source address                       */
     
    214202
    215203/*
    216  *  SNMP の 管理æƒ
    217 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     204 *  SNMP の 管理情報ベース (MIB)
    218205 */
    219206
     
    257244
    258245/*
    259  *  関数
     246 *  関数
    260247 */
    261248
  • asp3_gr_sakura/trunk/tinet/netinet/ip6.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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$
     
    115103
    116104/*
    117  *  IPv6 の定義、RFC2460 参ç
    118 §
     105 *  IPv6 の定義、RFC2460 参照
    119106 */
    120107
     
    122109
    123110/*
    124  *  IPv6 ヘッダの定義
     111 *  IPv6 ヘッダの定義
    125112 */
    126113
     
    139126
    140127/*
    141  *  IPv6 ヘッダ構造体メンバアクセスマクロ
     128 *  IPv6 ヘッダ構造体メンバアクセスマクロ
    142129 */
    143130
     
    149136
    150137/*
    151  *  拡張ヘッダ
     138 *  拡張ヘッダ
    152139 */
    153140
    154141typedef struct t_ip6_ext_hdr {
    155142        uint8_t         next;           /* Next Header                  */
    156         uint8_t         len;            /* 8 オクテット単位の長さ     */
     143        uint8_t         len;            /* 8 オクテット単位の長さ */
    157144        } T_IP6_EXT_HDR;
    158145
    159146/*
    160  *  中継点 (Hop-by-Hop) オプションヘッダ
     147 *  中継点 (Hop-by-Hop) オプションヘッダ
    161148 */
    162149
    163150typedef struct t_ip6_hbh_hdr {
    164151        uint8_t         next;           /* Next Header                  */
    165         uint8_t         len;            /* 8 オクテット単位の長さ。ただし、
    166                                          * このオプションヘッダå
    167 ¨ä½“のオクテット数を
    168                                          * 8 で割った値の - 1 がå
    169 ¥ã‚‹ã€‚
     152        uint8_t         len;            /* 8 オクテット単位の長さ。ただし、
     153                                         * このオプションヘッダ全体のオクテット数を
     154                                         * 8 で割った値の - 1 が入る。
    170155                                         */
    171156        } T_IP6_HBH_HDR;
    172157
    173158/*
    174  *  終点 (Destination) オプションヘッダ
     159 *  終点 (Destination) オプションヘッダ
    175160 */
    176161
    177162typedef struct t_ip6_dest_hdr {
    178163        uint8_t         next;           /* Next Header                  */
    179         uint8_t         len;            /* 8 オクテット単位の長さ。ただし、
    180                                          * このオプションヘッダå
    181 ¨ä½“のオクテット数を
    182                                          * 8 で割った値の - 1 がå
    183 ¥ã‚‹ã€‚
     164        uint8_t         len;            /* 8 オクテット単位の長さ。ただし、
     165                                         * このオプションヘッダ全体のオクテット数を
     166                                         * 8 で割った値の - 1 が入る。
    184167                                         */
    185168        } T_IP6_DEST_HDR;
    186169
    187 /* 中継点 (Hop-by-Hop) オプション */
     170/* 中継点 (Hop-by-Hop) オプション */
    188171
    189172#define IP6OPT_PAD1             UINT_C(0x00)    /* 00 0 00000 */
     
    194177#define IP6OPT_RTR_ALERT        UINT_C(0x05)    /* 00 0 00101 */
    195178
    196 #define IP6OPT_MINLEN           2       /* オプションの最短長          */
    197 
    198 /* 未知のオプションの処理の指定 */
    199 
    200 #define IP6OPT_TYPE_SKIP        UINT_C(0x00)    /* 無視する。                      */
    201 #define IP6OPT_TYPE_DISCARD     UINT_C(0x40)    /* データグラムを破棄する。 */
    202 #define IP6OPT_TYPE_FORCEICMP   UINT_C(0x80)    /* 破棄して、ICMP を返送する。       */
     179#define IP6OPT_MINLEN           2       /* オプションの最短長            */
     180
     181/* 未知のオプションの処理の指定 */
     182
     183#define IP6OPT_TYPE_SKIP        UINT_C(0x00)    /* 無視する。                        */
     184#define IP6OPT_TYPE_DISCARD     UINT_C(0x40)    /* データグラムを破棄する。 */
     185#define IP6OPT_TYPE_FORCEICMP   UINT_C(0x80)    /* 破棄して、ICMP を返送する。     */
    203186#define IP6OPT_TYPE_ICMP        UINT_C(0xc0)
    204                 /* 破棄して、マルチキャストでなければ ICMP を返送する。  */
     187                /* 破棄して、マルチキャストでなければ ICMP を返送する。        */
    205188
    206189#define IP6OPT_TYPE(o)          ((o)&UINT_C(0xc0))
    207190
    208191/*
    209  *  経路制御ヘッダ
     192 *  経路制御ヘッダ
    210193 */
    211194
    212195typedef struct t_ip6_rt_hdr {
    213196        uint8_t         next;           /* Next Header                  */
    214         uint8_t         len;            /* 8 オクテット単位の長さ。ただし、
    215                                          * このオプションヘッダå
    216 ¨ä½“のオクテット数を
    217                                          * 8 で割った値の - 1 がå
    218 ¥ã‚‹ã€‚
    219                                          */
    220         uint8_t         type;           /* 経路制御タイプ                */
    221         uint8_t         segleft;        /* セグメントの残り             */
     197        uint8_t         len;            /* 8 オクテット単位の長さ。ただし、
     198                                         * このオプションヘッダ全体のオクテット数を
     199                                         * 8 で割った値の - 1 が入る。
     200                                         */
     201        uint8_t         type;           /* 経路制御タイプ              */
     202        uint8_t         segleft;        /* セグメントの残り             */
    222203        } T_IP6_RT_HDR;
    223204
    224205/*
    225  *  タイプ 0 経路制御ヘッダ
     206 *  タイプ 0 経路制御ヘッダ
    226207 */
    227208
    228209typedef struct t_ip6_rt0_hdr {
    229210        uint8_t         next;           /* Next Header                  */
    230         uint8_t         len;            /* 8 オクテット単位の長さ。ただし、
    231                                          * このオプションヘッダå
    232 ¨ä½“のオクテット数を
    233                                          * 8 で割った値の - 1 がå
    234 ¥ã‚‹ã€‚
    235                                          */
    236         uint8_t         type;           /* 経路制御タイプ                */
    237         uint8_t         segleft;        /* セグメントの残り             */
    238         uint32_t        reserved;       /* 予約                               */
     211        uint8_t         len;            /* 8 オクテット単位の長さ。ただし、
     212                                         * このオプションヘッダ全体のオクテット数を
     213                                         * 8 で割った値の - 1 が入る。
     214                                         */
     215        uint8_t         type;           /* 経路制御タイプ              */
     216        uint8_t         segleft;        /* セグメントの残り             */
     217        uint32_t        reserved;       /* 予約                           */
    239218        } T_IP6_RT0_HDR;
    240219
    241220/*
    242  *  断片ヘッダ
     221 *  断片ヘッダ
    243222 */
    244223
     
    246225        uint8_t         next;           /* Next Header                  */
    247226        uint8_t         reserved;
    248         uint16_t        off_flag;       /* オフセットとフラグ          */
    249         uint32_t        ident;          /* 分割識別子                      */
     227        uint16_t        off_flag;       /* オフセットとフラグ            */
     228        uint32_t        ident;          /* 分割識別子                        */
    250229        } T_IP6_FRAG_HDR;
    251230
    252 /* 断片ヘッダのオフセットとフラグ */
     231/* 断片ヘッダのオフセットとフラグ */
    253232
    254233#ifdef _NET_CFG_BYTE_ORDER
     
    256235#if _NET_CFG_BYTE_ORDER == _NET_CFG_BIG_ENDIAN
    257236
    258 #define IP6F_OFF_MASK           UINT_C(0xfff8)          /* オフセットを取出すマスク */
    259 #define IP6F_RESERVED_MASK      UINT_C(0x0006)          /* 予約を取出すマスク          */
    260 #define IP6F_MORE_FRAG          UINT_C(0x0001)          /* 中間フラグメント             */
     237#define IP6F_OFF_MASK           UINT_C(0xfff8)          /* オフセットを取出すマスク */
     238#define IP6F_RESERVED_MASK      UINT_C(0x0006)          /* 予約を取出すマスク            */
     239#define IP6F_MORE_FRAG          UINT_C(0x0001)          /* 中間フラグメント             */
    261240
    262241#elif _NET_CFG_BYTE_ORDER == _NET_CFG_LITTLE_ENDIAN
    263242
    264 #define IP6F_OFF_MASK           UINT_C(0xf8ff)          /* オフセットを取出すマスク */
    265 #define IP6F_RESERVED_MASK      UINT_C(0x0600)          /* 予約を取出すマスク          */
    266 #define IP6F_MORE_FRAG          UINT_C(0x0100)          /* 中間フラグメント             */
     243#define IP6F_OFF_MASK           UINT_C(0xf8ff)          /* オフセットを取出すマスク */
     244#define IP6F_RESERVED_MASK      UINT_C(0x0600)          /* 予約を取出すマスク            */
     245#define IP6F_MORE_FRAG          UINT_C(0x0100)          /* 中間フラグメント             */
    267246
    268247#endif  /* #if _NET_CFG_BYTE_ORDER == _NET_CFG_BIG_ENDIAN */
     
    271250
    272251/*
    273  *  制限値
    274  */
    275 
    276 #define IPV6_MAXHLIM    UINT_C(255)     /* ホップリミットの最大値                            */
    277 #define IPV6_DEFHLIM    UINT_C(64)      /* ホップリミットの規定値                            */
    278 #define IPV6_FRAGTTL    UINT_C(60)      /* 分割されたデータグラムの生存時間(秒)    */
    279 #define IPV6_MMTU       UINT_C(1280)    /* 最小 MTU。ペイロード (1024) + ヘッダ (256)        */
    280 #define IPV6_MAXPACKET  UINT_C(65535)   /* ジャンボペイロードを除く最大パケットサイズ      */
    281 
    282 /*
    283  *  IPv6 と IPv4 をコンパイル時に選択するためのマクロ
    284  */
    285 
    286 /*
    287  *  ホップリミットの規定値は、ルータ通知により変更されることがある
     252 *  制限値
     253 */
     254
     255#define IPV6_MAXHLIM    UINT_C(255)     /* ホップリミットの最大値                          */
     256#define IPV6_DEFHLIM    UINT_C(64)      /* ホップリミットの規定値                          */
     257#define IPV6_FRAGTTL    UINT_C(60)      /* 分割されたデータグラムの生存時間(秒)  */
     258#define IPV6_MMTU       UINT_C(1280)    /* 最小 MTU。ペイロード (1024) + ヘッダ (256)      */
     259#define IPV6_MAXPACKET  UINT_C(65535)   /* ジャンボペイロードを除く最大パケットサイズ        */
     260
     261/*
     262 *  IPv6 と IPv4 をコンパイル時に選択するためのマクロ
     263 */
     264
     265/*
     266 *  ホップリミットの規定値は、ルータ通知により変更されることがある
    288267 */
    289268
    290269#if NUM_ND6_DEF_RTR_ENTRY > 0
    291270
    292 /* ルータ通知を受信する場合は、通知された値 */
     271/* ルータ通知を受信する場合は、通知された値 */
    293272
    294273#define IP6_DEFTTL      ip6_defhlim
     
    296275#else   /* #if NUM_ND6_DEF_RTR_ENTRY > 0 */
    297276
    298 /* ルータ通知を受信しない場合の値は既定値 */
     277/* ルータ通知を受信しない場合の値は既定値 */
    299278
    300279#define IP6_DEFTTL      IPV6_DEFHLIM
     
    302281#endif  /* #if NUM_ND6_DEF_RTR_ENTRY > 0 */
    303282
    304 /* IPv4 と IPv6 をコンパイル時に選択するためのマクロ */
     283/* IPv4 と IPv6 をコンパイル時に選択するためのマクロ */
    305284
    306285#ifdef _IP6_CFG
  • asp3_gr_sakura/trunk/tinet/netinet/ip_icmp.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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  *  変数
     119 *  変数
    132120 */
    133121
     
    135123
    136124/*
    137  *  SNMP の 管理æƒ
    138 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     125 *  SNMP の 管理情報ベース (MIB)
    139126 */
    140127
     
    144131
    145132/*
    146  *  関数
     133 *  関数
    147134 */
    148135
     
    159146
    160147/*
    161  *  icmp_echo -- エコー要求を受信したときの処理
    162  *
    163  *    input には IF ヘッダと IP ヘッダも含まれている。
     148 *  icmp_echo -- エコー要求を受信したときの処理
     149 *
     150 *    input には IF ヘッダと IP ヘッダも含まれている。
    164151 */
    165152
     
    173160        NET_COUNT_MIB(icmp_stats.icmpInEchos, 1);
    174161
    175         /* IPv4 アドレスが未定義の時は応答しない。*/
     162        /* IPv4 アドレスが未定義の時は応答しない。*/
    176163        if (!IN4_IS_ADDR_ANY(&ifp->in4_ifaddr.addr)) {
    177164
    178165                /*
    179                  *  メッセージの型をエコー要求 (8) から
    180                  *  エコー応答 (0) に変更して送り返す。
     166                 *  メッセージの型をエコー要求 (8) から
     167                 *  エコー応答 (0) に変更して送り返す。
    181168                 */
    182169
     
    185172
    186173                /*
    187                  *  宛å
    188 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã¯å—信したメッセージの送信å
    189 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã€‚
    190                  *  送信å
    191 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã¯è‡ª IPv4 アドレス。
     174                 *  宛先アドレスは受信したメッセージの送信元アドレス。
     175                 *  送信元アドレスは自 IPv4 アドレス。
    192176                 */
    193177                ip4h      = GET_IP4_HDR(input);
     
    195179                ip4h->src = htonl(ifp->in4_ifaddr.addr);
    196180
    197                 /* チェックサムを計算する。*/
     181                /* チェックサムを計算する。*/
    198182                icmp4h->sum = 0;
    199183                icmp4h->sum = in_cksum(icmp4h,
    200184                                       (uint_t)(((input->len - GET_IF_IP4_HDR_SIZE(input)) + 3) >> 2 << 2));
    201185
    202                 /* 送信する。*/
     186                /* 送信する。*/
    203187                NET_COUNT_ICMP4(net_count_icmp4.out_octets,
    204188                               input->len - GET_IF_IP4_HDR_SIZE(input));
     
    211195
    212196/*
    213  *  icmp_unreach -- ICMP4_UNREACH を受信したときの処理
     197 *  icmp_unreach -- ICMP4_UNREACH を受信したときの処理
    214198 */
    215199
     
    246230        error = code2error[code];
    247231
    248         /* 最終ヘッダが TCP/UDP のみ対応する。*/
     232        /* 最終ヘッダが TCP/UDP のみ対応する。*/
    249233        if (ip4h->proto == IPPROTO_TCP || ip4h->proto == IPPROTO_UDP) {
    250234
     
    275259
    276260/*
    277  *  icmp_redirect -- 向け直しメッセージを受信したときの処理
    278  *
    279  *    input には IF ヘッダと IP ヘッダも含まれている。
     261 *  icmp_redirect -- 向け直しメッセージを受信したときの処理
     262 *
     263 *    input には IF ヘッダと IP ヘッダも含まれている。
    280264 */
    281265
     
    291275
    292276        /*
    293          *  å†
    294 å®¹ãƒã‚§ãƒƒã‚¯ã€ä»¥ä¸‹ã®å ´åˆã¯ã‚¨ãƒ©ãƒ¼
     277         *  内容チェック、以下の場合はエラー
    295278         *
    296          *    ・ICMP コードが、ICMP4_REDIRECT_PORT_AND_HOST (3) 以上
    297          *    ・データグラム長が、ICMP の最小長より短い (IP ヘッダ + ICMP ヘッダ + IP ヘッダ + 8)
    298          *    ・データグラム長が、ICMP の最大長より短い
    299          *    ・
     279         *    ・ICMP コードが、ICMP4_REDIRECT_PORT_AND_HOST (3) 以上
     280         *    ・データグラム長が、ICMP の最小長より短い (IP ヘッダ + ICMP ヘッダ + IP ヘッダ + 8)
     281         *    ・データグラム長が、ICMP の最大長より短い
     282         *   
    300283         */
    301284        if (icmp4h->code > ICMP4_REDIRECT_PORT_AND_HOST ||
     
    313296
    314297/*
    315  *  icmp_input -- ICMP のå
    316 ¥åŠ›é–¢æ•°
    317  *
    318  *    input には IF ヘッダと IP ヘッダも含まれている。
     298 *  icmp_input -- ICMP の入力関数
     299 *
     300 *    input には IF ヘッダと IP ヘッダも含まれている。
    319301 */
    320302
     
    331313        NET_COUNT_ICMP4(net_count_icmp4.in_packets, 1);
    332314
    333         /* ICMP ヘッダの長さをチェックする。*/
     315        /* ICMP ヘッダの長さをチェックする。*/
    334316        if (input->len < IF_IP4_ICMP4_HDR_SIZE) {
    335317                NET_COUNT_ICMP4(net_count_icmp4.in_err_packets, 1);
     
    340322        icmp4h = (T_ICMP4_HDR *)(input->buf + *offp);
    341323
    342         /* 4 オクテット境界のデータ長 */
     324        /* 4 オクテット境界のデータ長 */
    343325        len   = input->len - *offp;
    344326        align = (len + 3) >> 2 << 2;
    345327
    346         /* 4 オクテット境界までパディングで埋める。*/
     328        /* 4 オクテット境界までパディングで埋める。*/
    347329        if (align > len)
    348330                memset((uint8_t*)input->buf + input->len, 0, (size_t)(align - len));
    349331
    350         /* チェックサムを計算する。*/
     332        /* チェックサムを計算する。*/
    351333        if (in_cksum(icmp4h, align) != 0) {
    352334                NET_COUNT_ICMP4(net_count_icmp4.in_err_packets, 1);
     
    354336                }
    355337
    356         /* メッセージの型により分岐する。*/
     338        /* メッセージの型により分岐する。*/
    357339        switch (icmp4h->type) {
    358340        case ICMP4_ECHO_REQUEST:
     
    409391
    410392/*
    411  *  icmp_error -- ICMP エラー送信関数。
    412  *
    413  *    input には IF ヘッダと IP ヘッダも含まれている。
    414  *    icmp_error では、ネットワークバッファ input を返却しないので、
    415  *    呼出し側で、開放してから終了する。       
     393 *  icmp_error -- ICMP エラー送信関数。
     394 *
     395 *    input には IF ヘッダと IP ヘッダも含まれている。
     396 *    icmp_error では、ネットワークバッファ input を返却しないので、
     397 *    呼出し側で、開放してから終了する。
    416398 */
    417399
     
    428410        ip4hl = GET_IP4_HDR_SIZE(input);
    429411
    430         /* 送信用の IP データグラムを獲得する。*/
     412        /* 送信用の IP データグラムを獲得する。*/
    431413        if (input->len - ip4hl < 8)
    432414                len = input->len - ip4hl;
     
    440422                return;
    441423
    442         /* ICMP ヘッダを設定する。*/
     424        /* ICMP ヘッダを設定する。*/
    443425        icmp4h          = GET_ICMP4_HDR(output, IF_IP4_ICMP4_HDR_OFFSET);
    444426        icmp4h->type    = ICMP4_UNREACH;
     
    446428        icmp4h->data.addr= 0;
    447429
    448         /* エラーが発生した IP ヘッダと データ 8 オクテットをコピーする。*/
     430        /* エラーが発生した IP ヘッダと データ 8 オクテットをコピーする。*/
    449431        memcpy(GET_ICMP4_SDU(output, IF_IP4_ICMP4_HDR_OFFSET),
    450432               GET_IP4_HDR(input), (size_t)(ip4hl + len));
    451433
    452         /* 4 オクテット境界のデータ長 */
     434        /* 4 オクテット境界のデータ長 */
    453435        align = (len + 3) >> 2 << 2;
    454436
    455         /* 4 オクテット境界までパディングで埋める。*/
     437        /* 4 オクテット境界までパディングで埋める。*/
    456438        if (align > len)
    457439                memset((uint8_t*)GET_ICMP4_SDU(output, IF_IP4_ICMP4_HDR_OFFSET) + ip4hl + len,
    458440                       0, (size_t)(align - len));
    459441
    460         /* チェックサムを計算する。*/
     442        /* チェックサムを計算する。*/
    461443        icmp4h->sum = 0;
    462444        icmp4h->sum = in_cksum(icmp4h, (uint_t)(ICMP4_HDR_SIZE + ip4hl + align));
    463445
    464         /* 送信する。*/
     446        /* 送信する。*/
    465447        NET_COUNT_ICMP4(net_count_icmp4.out_octets,
    466448                       output->len - GET_IF_IP4_HDR_SIZE(output));
  • asp3_gr_sakura/trunk/tinet/netinet/ip_icmp.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8674
    8775/*
    88  *  ICMP ヘッダの定義、RFC 792
     76 *  ICMP ヘッダの定義、RFC 792
    8977 */
    9078
    9179typedef struct t_icmp_hdr {
    92         uint8_t         type;           /* メッセージの型        */
    93         uint8_t         code;           /* サブ型            */
    94         uint16_t        sum;            /* チェックサム           */
     80        uint8_t         type;           /* メッセージの型      */
     81        uint8_t         code;           /* サブ型          */
     82        uint16_t        sum;            /* チェックサム               */
    9583        union {
    9684                struct id_seq {
     
    116104
    117105/*
    118  *  メッセージの型
     106 *  メッセージの型
    119107 */
    120108
    121 #define ICMP4_ECHO_REPLY        UINT_C(0)       /* エコー応答              */
    122 #define ICMP4_UNREACH           UINT_C(3)       /* エラー            */
    123 #define ICMP4_SOURCE_QUENCH     UINT_C(4)       /* 発信制限         */
    124 #define ICMP4_REDIRECT          UINT_C(5)       /* 方向変更         */
    125 #define ICMP4_ECHO_REQUEST      UINT_C(8)       /* エコー要求              */
    126 #define ICMP4_TIME_EXCEEDED     UINT_C(11)      /* 発信制限         */
    127 #define ICMP4_PARAMETER         UINT_C(12)      /* パラメータ異常        */
    128 #define ICMP4_TIME_REQUEST      UINT_C(13)      /* タイムスタンプ要求  */
    129 #define ICMP4_TIME_REPLY        UINT_C(14)      /* タイムスタンプ応答  */
    130 #define ICMP4_MASK_REQUEST      UINT_C(17)      /* アドレスマスク要求  */
    131 #define ICMP4_MASK_REPLY        UINT_C(18)      /* アドレスマスク応答  */
     109#define ICMP4_ECHO_REPLY        UINT_C(0)       /* エコー応答                */
     110#define ICMP4_UNREACH           UINT_C(3)       /* エラー          */
     111#define ICMP4_SOURCE_QUENCH     UINT_C(4)       /* 発信制限         */
     112#define ICMP4_REDIRECT          UINT_C(5)       /* 方向変更         */
     113#define ICMP4_ECHO_REQUEST      UINT_C(8)       /* エコー要求                */
     114#define ICMP4_TIME_EXCEEDED     UINT_C(11)      /* 発信制限         */
     115#define ICMP4_PARAMETER         UINT_C(12)      /* パラメータ異常      */
     116#define ICMP4_TIME_REQUEST      UINT_C(13)      /* タイムスタンプ要求    */
     117#define ICMP4_TIME_REPLY        UINT_C(14)      /* タイムスタンプ応答    */
     118#define ICMP4_MASK_REQUEST      UINT_C(17)      /* アドレスマスク要求    */
     119#define ICMP4_MASK_REPLY        UINT_C(18)      /* アドレスマスク応答    */
    132120
    133121/*
    134  *  サブ型
     122 *  サブ型
    135123 */
    136124
    137125/* ICMP4_UNREACH (3)    */
    138126
    139 #define ICMP4_UNREACH_NET               UINT_C(0)       /* ネットワーク           */
    140 #define ICMP4_UNREACH_HOST              UINT_C(1)       /* ホスト            */
    141 #define ICMP4_UNREACH_PROTOCOL          UINT_C(2)       /* プロトコル              */
    142 #define ICMP4_UNREACH_PORT              UINT_C(3)       /* ポート            */
    143 #define ICMP4_UNREACH_FLAG              UINT_C(4)       /* 分割                       */
    144 #define ICMP4_UNREACH_SRC_FAIL          UINT_C(5)       /* ソース経路              */
    145 #define ICMP4_UNREACH_NET_UNKNOWN       UINT_C(6)       /* ネットワーク不明     */
    146 #define ICMP4_UNREACH_HOST_UNKNOWN      UINT_C(7)       /* ホスト不明              */
    147 #define ICMP4_UNREACH_ISOLATED          UINT_C(8)       /* 分離                       */
     127#define ICMP4_UNREACH_NET               UINT_C(0)       /* ネットワーク               */
     128#define ICMP4_UNREACH_HOST              UINT_C(1)       /* ホスト          */
     129#define ICMP4_UNREACH_PROTOCOL          UINT_C(2)       /* プロトコル                */
     130#define ICMP4_UNREACH_PORT              UINT_C(3)       /* ポート          */
     131#define ICMP4_UNREACH_FLAG              UINT_C(4)       /* 分割                   */
     132#define ICMP4_UNREACH_SRC_FAIL          UINT_C(5)       /* ソース経路                */
     133#define ICMP4_UNREACH_NET_UNKNOWN       UINT_C(6)       /* ネットワーク不明     */
     134#define ICMP4_UNREACH_HOST_UNKNOWN      UINT_C(7)       /* ホスト不明                */
     135#define ICMP4_UNREACH_ISOLATED          UINT_C(8)       /* 分離                   */
    148136#define ICMP4_UNREACH_NET_PROHIB        UINT_C(9)       /*                      */
    149137#define ICMP4_UNREACH_HOST_PROHIB       UINT_C(10)      /*                      */
    150 #define ICMP4_UNREACH_TOS_NET           UINT_C(11)      /* ネットワークへの不正TOS*/
    151 #define ICMP4_UNREACH_TOS_HOST          UINT_C(12)      /* ホストへの不正TOS     */
     138#define ICMP4_UNREACH_TOS_NET           UINT_C(11)      /* ネットワークへの不正TOS*/
     139#define ICMP4_UNREACH_TOS_HOST          UINT_C(12)      /* ホストへの不正TOS   */
    152140#define ICMP4_UNREACH_FILTER_PROHIB     UINT_C(13)      /*                      */
    153141#define ICMP4_UNREACH_HOST_PRECEDENCE   UINT_C(14)      /*                      */
     
    156144/* ICMP4_REDIRECT (5)   */
    157145
    158 #define ICMP4_REDIRECT_NET              UINT_C(0)       /* ネットワーク           */
    159 #define ICMP4_REDIRECT_HOST             UINT_C(1)       /* ホスト            */
    160 #define ICMP4_REDIRECT_PORT_AND_NET     UINT_C(2)       /* ポート番号とネット  */
    161 #define ICMP4_REDIRECT_PORT_AND_HOST    UINT_C(3)       /* ポート番号とホスト  */
     146#define ICMP4_REDIRECT_NET              UINT_C(0)       /* ネットワーク               */
     147#define ICMP4_REDIRECT_HOST             UINT_C(1)       /* ホスト          */
     148#define ICMP4_REDIRECT_PORT_AND_NET     UINT_C(2)       /* ポート番号とネット    */
     149#define ICMP4_REDIRECT_PORT_AND_HOST    UINT_C(3)       /* ポート番号とホスト    */
    162150
    163151/*
    164  *  å
    165 ¨åŸŸå¤‰æ•°
     152 *  全域変数
    166153 */
    167154
    168155/*
    169  *  関数シミュレーションマクロ
     156 *  関数シミュレーションマクロ
    170157 */
    171158
     
    177164
    178165/*
    179  *  関数
     166 *  関数
    180167 */
    181168
     
    189176
    190177/*
    191  *  TINET 独自 API
     178 *  TINET 独自 API
    192179 */
    193180
  • asp3_gr_sakura/trunk/tinet/netinet/ip_input.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    140128
    141129/*
    142  *  変数
     130 *  変数
    143131 */
    144132
     
    146134
    147135/*
    148  *  SNMP の 管理æƒ
    149 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     136 *  SNMP の 管理情報ベース (MIB)
    150137 */
    151138
     
    157144
    158145/*
    159  *  データグラム再構成キュー
     146 *  データグラム再構成キュー
    160147 */
    161148
     
    164151
    165152/*
    166  *  関数
     153 *  関数
    167154 */
    168155
     
    171158
    172159/*
    173  *  ip_get_frag_queue -- データグラム再構成キューを獲得する。
     160 *  ip_get_frag_queue -- データグラム再構成キューを獲得する。
    174161 */
    175162
     
    181168
    182169/*
    183  *  ip_freef -- データグラム再構成キューを解放する。
     170 *  ip_freef -- データグラム再構成キューを解放する。
    184171 */
    185172
     
    199186
    200187/*
    201  *  ip_frag_timer -- データグラム再構成管理タイマ
     188 *  ip_frag_timer -- データグラム再構成管理タイマ
    202189 */
    203190
     
    222209
    223210/*
    224  *  ip_reass -- データグラムを再構成する。
     211 *  ip_reass -- データグラムを再構成する。
    225212 */
    226213
     
    246233
    247234        /*
    248          *  ID、IPアドレス、上位プロトコルが異なるフラグメントがキューに有れば破棄する。
     235         *  ID、IPアドレス、上位プロトコルが異なるフラグメントがキューに有れば破棄する。
    249236         */
    250237        frag = ip_frag_queue[ix];
     
    263250                NET_COUNT_IP4(net_count_ip4[NC_IP4_FRAG_IN], 1);
    264251
    265                 /* 新規の ID なら、宛å
    266 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’保存して、キューにつなぐ。*/
     252                /* 新規の ID なら、宛先アドレスを保存して、キューにつなぐ。*/
    267253                frag_dst  [ix] = dst;
    268254                ip_frag_queue[ix] = input;
     
    270256                input = NULL;
    271257
    272                 /* 再構成タイムアウトを設定する。*/
     258                /* 再構成タイムアウトを設定する。*/
    273259                ip4h->ttl = IP4_FRAGTTL;
    274260                }
    275261        else {
    276262
    277                 /* 正しい位置に挿å
    278 ¥ã™ã‚‹ã€‚*/
     263                /* 正しい位置に挿入する。*/
    279264                prev = NULL;
    280265                while (frag != NULL &&
     
    293278                input = NULL;
    294279
    295                 /* å
    296 ¨ã¦ã®ãƒ•ãƒ©ã‚°ãƒ¡ãƒ³ãƒˆãŒæƒã£ã¦ã„るか調べる。*/
     280                /* 全てのフラグメントが揃っているか調べる。*/
    297281                off = 0;
    298282                for (frag = ip_frag_queue[ix]; frag != NULL; frag = GET_QIP4_HDR(frag)->next) {
    299283                        if ((IP4_FLGOFF_OFF(GET_QIP4_HDR(frag)->flg_off) << 3) != off) {
    300                                 /* 途中が抜けていたら終了する。*/
     284                                /* 途中が抜けていたら終了する。*/
    301285                                syscall(sig_sem(SEM_IP4_FRAG_QUEUE));
    302286                                return NULL;
     
    306290                        }
    307291
    308                 /* å
    309 ¨ã¦ã®ãƒ•ãƒ©ã‚°ãƒ¡ãƒ³ãƒˆãŒæƒã£ãŸã‚‰å†æ§‹æˆã™ã‚‹ã€‚*/
     292                /* 全てのフラグメントが揃ったら再構成する。*/
    310293                if ((GET_QIP4_HDR(prev)->flg_off & IP4_MF) == 0) {
    311294
    312                         /* ネットワークバッファを獲得する。*/
     295                        /* ネットワークバッファを獲得する。*/
    313296                        if (tget_net_buf(&input, IF_IP4_HDR_SIZE + off, TMO_IP4_FRAG_GET_NET_BUF) == E_OK) {
    314297                                NET_COUNT_IP4(net_count_ip4[NC_IP4_FRAG_IN_OK], 1);
    315298                                NET_COUNT_MIB(ip_stats.ipReasmOKs, 1);
    316299
    317                                 /* IPv4 ヘッダを設定する。*/
     300                                /* IPv4 ヘッダを設定する。*/
    318301                                frag  = ip_frag_queue[ix];
    319302                                ip4h  = GET_IP4_HDR(input);
     
    325308                                ip4h->flg_off = ip4h->id = 0;
    326309
    327                                 /* データグラムを再構成する。*/
     310                                /* データグラムを再構成する。*/
    328311                                off = IP4_HDR_SIZE;
    329312                                while (frag != NULL) {
     
    339322                                NET_COUNT_MIB(ip_stats.ipReasmFails, 1);
    340323                                }
    341                         /* キューを空にする。*/
     324                        /* キューを空にする。*/
    342325                        ip_freef(ix);
    343326                        }
     
    350333
    351334/*
    352  *  ip_init -- IP の初期化
     335 *  ip_init -- IP の初期化
    353336 */
    354337
     
    360343
    361344/*
    362  *  ip_remove_options -- IPv4 ヘッダのオプションを削除し、以降を前に詰める。
     345 *  ip_remove_options -- IPv4 ヘッダのオプションを削除し、以降を前に詰める。
    363346 */
    364347
     
    384367
    385368/*
    386  *  ip_input -- IP のå
    387 ¥åŠ›é–¢æ•°
     369 *  ip_input -- IP の入力関数
    388370 */
    389371
    390372#if defined(SUPPORT_IPSEC)
    391373/*
    392  * TODO: IPsec SPを検索し、パケットをリジェクトするかどうか判定する処理を実è£
    393 ã™ã‚‹
     374 * TODO: IPsec SPを検索し、パケットをリジェクトするかどうか判定する処理を実装する
    394375 */
    395376#endif /* of defined(SUPPORT_IPSEC) */
     
    407388        NET_COUNT_MIB(ip_stats.ipInReceives, 1);
    408389
    409         /* IP ヘッダの長さをチェックする。*/
     390        /* IP ヘッダの長さをチェックする。*/
    410391        if (input->len < IF_IP4_HDR_SIZE) {
    411392                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_SHORT], 1);
     
    417398        hlen = GET_IP4_HDR_SIZE(input);
    418399
    419         /* バージョンをチェックする。*/
     400        /* バージョンをチェックする。*/
    420401        if (IP4_VHL_V(ip4h->vhl) != IPV4_VERSION) {
    421402                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_VER], 1);
     
    424405                }
    425406
    426         /* IP ヘッダの長さをチェックし、オプションを解析する。*/
     407        /* IP ヘッダの長さをチェックし、オプションを解析する。*/
    427408        if (hlen > IP4_HDR_SIZE) {
    428409                NET_COUNT_IP4(net_count_ip4[NC_IP4_OPTS], 1);
    429                 /* %%% オプションの解析 %%% */
    430                 }
    431 
    432         /* データグラム長をチェックする。*/
     410                /* %%% オプションの解析 %%% */
     411                }
     412
     413        /* データグラム長をチェックする。*/
    433414        if (ntohs(ip4h->len) > input->len - IF_HDR_SIZE) {
    434415                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_SHORT], 1);
     
    437418                }
    438419
    439         /* ネットワークバッファの長さをデータグラム長に調整する。*/
     420        /* ネットワークバッファの長さをデータグラム長に調整する。*/
    440421        input->len = (uint16_t)(ntohs(ip4h->len) + IF_HDR_SIZE);
    441422
    442         /* チェックサムをチェックする。*/
     423        /* チェックサムをチェックする。*/
    443424        if (in_cksum(ip4h, hlen) != 0) {
    444425                NET_COUNT_IP4(net_count_ip4[NC_IP4_IN_ERR_CKSUM], 1);
     
    447428                }
    448429
    449         /* IP ヘッダの長さをチェックし、上位が ICMP 以外はオプションを消去する。*/
     430        /* IP ヘッダの長さをチェックし、上位が ICMP 以外はオプションを消去する。*/
    450431        if (hlen > IP4_HDR_SIZE && ip4h->proto != IPPROTO_ICMP) {
    451432                memset((uint8_t*)ip4h + IP4_HDR_SIZE, 0, hlen - IP4_HDR_SIZE);
    452433                }
    453434
    454         /* 送信å
    455 ƒã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’チェックする。*/
     435        /* 送信元アドレスをチェックする。*/
    456436        src = ntohl(ip4h->src);
    457437        bc  = (ifp->in4_ifaddr.addr & ifp->in4_ifaddr.mask) | ~ifp->in4_ifaddr.mask;
     
    475455#endif  /* of #ifdef SUPPORT_LOOP */
    476456
    477         /* あてå
    478 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’チェックする。*/
     457        /* あて先アドレスをチェックする。*/
    479458        dst = ntohl(ip4h->dst);
    480459
     
    482461
    483462        /*
    484          *  DHCP_CFG が定義されているときは、ローカルアドレスが未定義の
    485          *  場合もデータグラムを受信する。
     463         *  DHCP_CFG が定義されているときは、ローカルアドレスが未定義の
     464         *  場合もデータグラムを受信する。
    486465         */
    487466
     
    507486#ifdef IP4_CFG_FRAGMENT
    508487
    509         /* 分割されているかチェックする。*/
     488        /* 分割されているかチェックする。*/
    510489        if (ntohs(ip4h->flg_off) & (IP4_MF | IP4_OFFMASK)) {
    511490                if ((input = ip_reass(ip4h, input)) == NULL)
     
    515494#else   /* of #ifdef IP4_CFG_FRAGMENT */
    516495
    517         /* 分割されているかチェックする。*/
     496        /* 分割されているかチェックする。*/
    518497        if (ntohs(ip4h->flg_off) & (IP4_MF | IP4_OFFMASK)) {
    519498                T_IN4_ADDR      src;
     
    533512
    534513#if defined(SUPPORT_IPSEC)
    535         /* ここでipsec4_in_rejectを実行する */
     514        /* ここでipsec4_in_rejectを実行する */
    536515        if ((ip4h->proto != IPPROTO_ESP) && ipsec4_in_reject (input)) {
    537516                goto buf_rel;
     
    539518#endif /* of #if defined(SUPPORT_IPSEC) */
    540519
    541         /* プロトコルを選択する */
     520        /* プロトコルを選択する */
    542521        switch (ip4h->proto) {
    543522
     
    577556                NET_COUNT_MIB(ip_stats.ipInUnknownProtos, 1);
    578557
    579                 /* ローカル IP アドレスに届いたデータグラムのみ ICMP エラーを通知する。*/
     558                /* ローカル IP アドレスに届いたデータグラムのみ ICMP エラーを通知する。*/
    580559                if (dst == ifp->in4_ifaddr.addr) {
    581560                        T_IN4_ADDR      src;
     
    586565                        }
    587566                /*
    588                  *  icmp_error では、ネットワークバッファ input を返却しないので
    589                  *  開放してから終了する。
     567                 *  icmp_error では、ネットワークバッファ input を返却しないので
     568                 *  開放してから終了する。
    590569                 */
    591570                break;
  • asp3_gr_sakura/trunk/tinet/netinet/ip_output.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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$
     
    123111
    124112/*
    125  *  IP output -- IP の出力関数
    126  *
    127  *    注意: バージョンとヘッダ長は上位層で設定する。
     113 *  IP output -- IP の出力関数
     114 *
     115 *    注意: バージョンとヘッダ長は上位層で設定する。
    128116 */
    129117
     
    144132
    145133#ifdef SUPPORT_IPSEC
    146         /* XXX: IPsecの処理はパケット断片化の前に行われる */
    147 
    148         /* SPDを取得する */
     134        /* XXX: IPsecの処理はパケット断片化の前に行われる */
     135
     136        /* SPDを取得する */
    149137        sp = ipsec4_getpolicybyaddr(output, IPSEC_DIR_OUTBOUND, &ipsec_error);
    150138        if (sp==NULL) {
     
    153141        }
    154142
    155         /* ポリシをチェックする*/
     143        /* ポリシをチェックする*/
    156144#if 0
    157145        switch (sp->policy) {
     
    165153
    166154        case  IPSEC_POLICY_IPSEC:
    167                 /* XXX: SH2ではここでillegal Instructionが発生する。コンパイラのバグ? */
     155                /* XXX: SH2ではここでillegal Instructionが発生する。コンパイラのバグ? */
    168156                if (sp->req == NULL) {
    169                         /* 鍵交換デーモンに対してSAの取得を要求する */
     157                        /* 鍵交換デーモンに対してSAの取得を要求する */
    170158                        goto bad;
    171159                }
     
    173161
    174162        default:
    175                 /* 不正なポリシ */
     163                /* 不正なポリシ */
    176164                goto bad;
    177165                break;
    178166        }
    179167#else /* 0 */
    180         /* XXX: コンパイラの不å
    181 ·åˆå›žé¿ã®ãŸã‚ switchをやめif文で書き直した */
     168        /* XXX: コンパイラの不具合回避のため switchをやめif文で書き直した */
    182169        policy = sp->spinitb->policy;
    183170
     
    188175        else if (policy == IPSEC_POLICY_IPSEC) {
    189176                if (sp->req == NULL)
    190                         /* 鍵交換デーモンに対してSAの取得を要求する */
     177                        /* 鍵交換デーモンに対してSAの取得を要求する */
    191178                        goto bad;
    192179        } else
     
    199186
    200187                        state.m = output;
    201                         /* XXX: ipsec4_output()å†
    202 ã§ã¯ã€ip->{len,off}をネットワークバイトオーダとする */
     188                        /* XXX: ipsec4_output()内では、ip->{len,off}をネットワークバイトオーダとする */
    203189                        error = ipsec4_output (&state, sp, 0 /* flags */ );
    204190                        output = state.m;
    205191
    206192                        if (error) {
    207                                 /* net_buf はipsec4_outputによって既に解放されている */
     193                                /* net_buf はipsec4_outputによって既に解放されている */
    208194                                switch (error) {
    209195                                default:
     
    213199                }
    214200
    215         /* ipsec4_outputに影響を受けた値を更新する */
    216         /* XXX: å¿
    217 è¦ã‹? */
     201        /* ipsec4_outputに影響を受けた値を更新する */
     202        /* XXX: 必要か? */
    218203
    219204skip_ipsec:
     
    227212
    228213        /*
    229          *  データグラムサイズがネットワークの MTU をè¶
    230 ãˆã¦ã„れば、
    231          *  分割して送信する。
     214         *  データグラムサイズがネットワークの MTU を超えていれば、
     215         *  分割して送信する。
    232216         */
    233217        if (ntohs(ip4h->len) > IF_MTU) {
     
    247231                                flen = len - off;
    248232
    249                         /* データ長は 4 オクテット境界に調整する。    */
     233                        /* データ長は 4 オクテット境界に調整する。        */
    250234                        align = (flen + 3) >> 2 << 2;
    251235
    252                         /* ネットワークバッファを獲得する。*/
     236                        /* ネットワークバッファを獲得する。*/
    253237                        if (tget_net_buf(&frag, align + IF_IP4_HDR_SIZE, TMO_IP4_FRAG_GET_NET_BUF) == E_OK) {
    254238
    255                                 /* フラグメントをコピーする。*/
     239                                /* フラグメントをコピーする。*/
    256240                                memcpy(GET_IP4_SDU(frag), (uint8_t *)ip4h + off, flen);
    257241
    258                                 /* ヘッダを埋める。*/
     242                                /* ヘッダを埋める。*/
    259243                                fip4h           = GET_IP4_HDR(frag);
    260244                                *fip4h          = *ip4h;
     
    279263                                }
    280264                        else {
    281                                 /* 獲得できなければ、送信をあきらめる。*/
     265                                /* 獲得できなければ、送信をあきらめる。*/
    282266                                syscall(rel_net_buf(output));
    283267                                NET_COUNT_IP4(net_count_ip4[NC_IP4_OUT_ERR_PACKETS], 1);
     
    294278        else {
    295279
    296                 /* ヘッダを埋める。*/
     280                /* ヘッダを埋める。*/
    297281                ip4h->id  = htons(frag_id);
    298282                frag_id ++;
     
    312296        ip4h = GET_IP4_HDR(output);
    313297
    314         /* データグラムサイズがネットワークの MTU をè¶
    315 ãˆã¦ã„ればエラー */
     298        /* データグラムサイズがネットワークの MTU を超えていればエラー */
    316299        if (ntohs(ip4h->len) > IF_MTU)
    317300                return E_PAR;
    318301
    319         /* ヘッダを埋める。*/
     302        /* ヘッダを埋める。*/
    320303        ip4h->id  = htons(frag_id);
    321304        frag_id ++;
  • asp3_gr_sakura/trunk/tinet/netinet/ip_var.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8775
    8876/*
    89  *  IPv4 と IPv6 をコンパイル時に選択するためのマクロ
     77 *  IPv4 と IPv6 をコンパイル時に選択するためのマクロ
    9078 */
    9179
  • asp3_gr_sakura/trunk/tinet/netinet/tcp.cfg

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/plain to text/plain; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    4533
    4634/*
    47  *  TCP で使用するカーネルオブジェクト
     35 *  TCP で使用するカーネルオブジェクト
    4836 */
    4937
    5038#ifdef SUPPORT_TCP
    5139
    52 /* 出力タスク */
     40/* 出力タスク */
    5341
    5442CRE_TSK(TCP_OUTPUT_TASK, {
     
    6149        });
    6250
    63 /* セマフォ */
     51/* セマフォ */
    6452
    6553CRE_SEM(SEM_TCP_POST_OUTPUT,    { TA_TPRI, 0, 1 });
  • asp3_gr_sakura/trunk/tinet/netinet/tcp.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8472
    8573/*
    86  *  TCP ヘッダ、RFC 793 参ç
    87 §
     74 *  TCP ヘッダ、RFC 793 参照
    8875 */
    8976
    9077typedef struct t_tcp_hdr {
    91         uint16_t        sport;          /* 送信å
    92 ƒãƒãƒ¼ãƒˆç•ªå·                        */
    93         uint16_t        dport;          /* 宛å
    94 ˆãƒãƒ¼ãƒˆç•ªå·                        */
     78        uint16_t        sport;          /* 送信元ポート番号                     */
     79        uint16_t        dport;          /* 宛先ポート番号                      */
    9580
    96         uint32_t        seq;            /* SEQ 番号                           */
     81        uint32_t        seq;            /* SEQ 番号                               */
    9782
    98         uint32_t        ack;            /* ACK 番号                           */
     83        uint32_t        ack;            /* ACK 番号                               */
    9984
    100         uint8_t         doff;           /* データオフセット(上位4ビット)   */
    101         uint8_t         flags;          /* フラグ(下位6ビット)                  */
    102         uint16_t        win;            /* ウィンドサイズ                        */
     85        uint8_t         doff;           /* データオフセット(上位4ビット)     */
     86        uint8_t         flags;          /* フラグ(下位6ビット)                  */
     87        uint16_t        win;            /* ウィンドサイズ                      */
    10388
    104         uint16_t        sum;            /* チェックサム                           */
    105         uint16_t        urp;            /* 緊急ポインタ                           */
     89        uint16_t        sum;            /* チェックサム                               */
     90        uint16_t        urp;            /* 緊急ポインタ                               */
    10691        } T_TCP_HDR;
    10792
     
    10994
    11095/*
    111  *  TCP ヘッダ構造体メンバアクセスマクロ
     96 *  TCP ヘッダ構造体メンバアクセスマクロ
    11297 */
    11398
     
    117102
    118103/*
    119  *  TCP ヘッダのフラグフィールドの値の定義
     104 *  TCP ヘッダのフラグフィールドの値の定義
    120105 */
    121106
    122 #define TCP_FLG_FIN             UINT_C(0x01)    /* FIN: 最終                  */
    123 #define TCP_FLG_SYN             UINT_C(0x02)    /* SYN: 同期                  */
    124 #define TCP_FLG_RST             UINT_C(0x04)    /* RST: コネクションのリセット       */
    125 #define TCP_FLG_PUSH            UINT_C(0x08)    /* PUSH:プッシュ機能              */
    126 #define TCP_FLG_ACK             UINT_C(0x10)    /* ACK: 肯定応答            */
    127 #define TCP_FLG_URG             UINT_C(0x20)    /* URG: 緊急æƒ
    128 å ±             */
     107#define TCP_FLG_FIN             UINT_C(0x01)    /* FIN: 最終                      */
     108#define TCP_FLG_SYN             UINT_C(0x02)    /* SYN: 同期                      */
     109#define TCP_FLG_RST             UINT_C(0x04)    /* RST: コネクションのリセット     */
     110#define TCP_FLG_PUSH            UINT_C(0x08)    /* PUSH:プッシュ機能          */
     111#define TCP_FLG_ACK             UINT_C(0x10)    /* ACK: 肯定応答            */
     112#define TCP_FLG_URG             UINT_C(0x20)    /* URG: 緊急情報            */
    129113
    130114/*
    131  *  TCP オプションの定義
     115 *  TCP オプションの定義
    132116 */
    133117
    134 /* オプションの型 */
     118/* オプションの型 */
    135119
    136 #define TCP_OPT_EOL             UINT_C(0)       /* 最終                               */
    137 #define TCP_OPT_NOP             UINT_C(1)       /* 何もしない                      */
    138 #define TCP_OPT_MAXSEG          UINT_C(2)       /* 最大セグメント長             */
    139 #define TCP_OPT_WINDOW          UINT_C(3)       /* ウィンドスケーリング               */
    140 #define TCP_OPT_SACK_PERM       UINT_C(4)       /* 選択 ACK 許可            */
    141 #define TCP_OPT_SACK            UINT_C(5)       /* 選択 ACK                   */
    142 #define TCP_OPT_TIMESTAMP       UINT_C(8)       /* タイムスタンプ                */
    143 #define TCP_OPT_CC              UINT_C(11)      /* 接続カウント                   */
    144 #define TCP_OPT_CCNEW           UINT_C(12)      /* 接続カウント                   */
    145 #define TCP_OPT_CCECHO          UINT_C(13)      /* 接続カウント                   */
     120#define TCP_OPT_EOL             UINT_C(0)       /* 最終                           */
     121#define TCP_OPT_NOP             UINT_C(1)       /* 何もしない                        */
     122#define TCP_OPT_MAXSEG          UINT_C(2)       /* 最大セグメント長             */
     123#define TCP_OPT_WINDOW          UINT_C(3)       /* ウィンドスケーリング           */
     124#define TCP_OPT_SACK_PERM       UINT_C(4)       /* 選択 ACK 許可            */
     125#define TCP_OPT_SACK            UINT_C(5)       /* 選択 ACK                       */
     126#define TCP_OPT_TIMESTAMP       UINT_C(8)       /* タイムスタンプ              */
     127#define TCP_OPT_CC              UINT_C(11)      /* 接続カウント                       */
     128#define TCP_OPT_CCNEW           UINT_C(12)      /* 接続カウント                       */
     129#define TCP_OPT_CCECHO          UINT_C(13)      /* 接続カウント                       */
    146130
    147 /* オプションの長さ */
     131/* オプションの長さ */
    148132
    149 #define TCP_OPT_LEN_MAXSEG      4               /* 最大セグメント長             */
    150 #define TCP_OPT_LEN_WINDOW      3               /* ウィンドスケーリング               */
    151 #define TCP_OPT_LEN_SACK_PERM   4               /* 選択 ACK 許可            */
    152 #define TCP_OPT_LEN_SACK        5               /* 選択 ACK                   */
    153 #define TCP_OPT_LEN_TIMESTAMP   10              /* タイムスタンプ                */
    154 #define TCP_OPT_LEN_CC          6               /* 接続カウント                   */
    155 #define TCP_OPT_LEN_CCNEW       6               /* 接続カウント                   */
    156 #define TCP_OPT_LEN_CCECHO      6               /* 接続カウント                   */
     133#define TCP_OPT_LEN_MAXSEG      4               /* 最大セグメント長             */
     134#define TCP_OPT_LEN_WINDOW      3               /* ウィンドスケーリング           */
     135#define TCP_OPT_LEN_SACK_PERM   4               /* 選択 ACK 許可            */
     136#define TCP_OPT_LEN_SACK        5               /* 選択 ACK                       */
     137#define TCP_OPT_LEN_TIMESTAMP   10              /* タイムスタンプ              */
     138#define TCP_OPT_LEN_CC          6               /* 接続カウント                       */
     139#define TCP_OPT_LEN_CCNEW       6               /* 接続カウント                       */
     140#define TCP_OPT_LEN_CCECHO      6               /* 接続カウント                       */
    157141
    158142/*
    159  *  TCP 最大セグメントサイズ
     143 *  TCP 最大セグメントサイズ
    160144 */
    161145
    162146/*
    163  *  IPv4 の TCP 最大セグメントサイズ
    164  *  IP4_MSS は 576 で、標準の IPv4 ヘッダ長 (20) と
    165  *  TCP ヘッダ長 (20) を引いた値 536 であるが、512 を標準とする。
     147 *  IPv4 の TCP 最大セグメントサイズ
     148 *  IP4_MSS は 576 で、標準の IPv4 ヘッダ長 (20) と
     149 *  TCP ヘッダ長 (20) を引いた値 536 であるが、512 を標準とする。
    166150 */
    167151
     
    169153
    170154/*
    171  *  IPv6 の TCP 最大セグメントサイズ
    172  *  IPV6_MMTU は 1280 で、標準の IPv6 ヘッダ長 (40) と
    173  *  TCP ヘッダ長 (20) を引いた値 1220 であるが、1024 を標準とする。
     155 *  IPv6 の TCP 最大セグメントサイズ
     156 *  IPV6_MMTU は 1280 で、標準の IPv6 ヘッダ長 (40) と
     157 *  TCP ヘッダ長 (20) を引いた値 1220 であるが、1024 を標準とする。
    174158 */
    175159
     
    177161
    178162/*
    179  *  TCP 最小セグメントサイズ
     163 *  TCP 最小セグメントサイズ
    180164 *
    181  *  256(最小リンク MTU)- 40 = 216
     165 *  256(最小リンク MTU)- 40 = 216
    182166 */
    183167
     
    185169
    186170/*
    187  *  TCP 最大ウィンドウサイズ
     171 *  TCP 最大ウィンドウサイズ
    188172 */
    189173
  • asp3_gr_sakura/trunk/tinet/netinet/tcp_fsm.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8472
    8573/*
    86  *  TCP FSM 状æ
    87 ‹ã®å®šç¾©ã€RFC 793 参ç
    88 §
     74 *  TCP FSM 状態の定義、RFC 793 参照
    8975 */
    9076
    91 #define TCP_FSM_CLOSED          0       /* クローズ                         */
    92 #define TCP_FSM_LISTEN          1       /* 受動オープン                           */
    93 #define TCP_FSM_SYN_SENT        2       /* 能動オープン、SYN 送信済み                */
    94 #define TCP_FSM_SYN_RECVD       3       /* 受動オープン、SYN 受信済み                */
    95 #define TCP_FSM_ESTABLISHED     4       /* コネクション開設完了                       */
    96 #define TCP_FSM_CLOSE_WAIT      5       /* 相手から FIN 受信、APP の終了å¾
    97 ã¡     */
    98 #define TCP_FSM_FIN_WAIT_1      6       /* APP が終了、FIN 送信済み、ACK å¾
    99 ã¡     */
    100 #define TCP_FSM_CLOSING         7       /* 同時クローズ、FIN 交換済み、ACK å¾
    101 ã¡     */
    102 #define TCP_FSM_LAST_ACK        8       /* APP が終了、ACK å¾
    103 ã¡                     */
    104 #define TCP_FSM_FIN_WAIT_2      9       /* 相手からの FIN å¾
    105 ã¡                     */
    106 #define TCP_FSM_TIME_WAIT       10      /* 相手からの FIN 受信済み、時間å¾
    107 ã¡     */
     77#define TCP_FSM_CLOSED          0       /* クローズ                         */
     78#define TCP_FSM_LISTEN          1       /* 受動オープン                               */
     79#define TCP_FSM_SYN_SENT        2       /* 能動オープン、SYN 送信済み              */
     80#define TCP_FSM_SYN_RECVD       3       /* 受動オープン、SYN 受信済み              */
     81#define TCP_FSM_ESTABLISHED     4       /* コネクション開設完了                   */
     82#define TCP_FSM_CLOSE_WAIT      5       /* 相手から FIN 受信、APP の終了待ち        */
     83#define TCP_FSM_FIN_WAIT_1      6       /* APP が終了、FIN 送信済み、ACK 待ち      */
     84#define TCP_FSM_CLOSING         7       /* 同時クローズ、FIN 交換済み、ACK 待ち       */
     85#define TCP_FSM_LAST_ACK        8       /* APP が終了、ACK 待ち                       */
     86#define TCP_FSM_FIN_WAIT_2      9       /* 相手からの FIN 待ち                 */
     87#define TCP_FSM_TIME_WAIT       10      /* 相手からの FIN 受信済み、時間待ち  */
    10888
    10989/*
    110  *  関数シミュレーションマクロ
     90 *  関数シミュレーションマクロ
    11191 */
    11292
  • asp3_gr_sakura/trunk/tinet/netinet/tcp_input.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    128116
    129117/*
    130  *  戻り値
     118 *  戻り値
    131119 *
    132  *      RET_OK          正常
    133  *      RET_DROP        エラー、セグメントを破棄する。
    134  *      RET_RST_DROP    エラー、RST を送信し、セグメントを破棄する。
     120 *      RET_OK          正常
     121 *      RET_DROP        エラー、セグメントを破棄する。
     122 *      RET_RST_DROP    エラー、RST を送信し、セグメントを破棄する。
    135123 */
    136124
     
    142130
    143131/*
    144  *  関数
     132 *  関数
    145133 */
    146134
     
    159147
    160148/*
    161  *  parse_option -- TCP ヘッダのオプションを解析する。
     149 *  parse_option -- TCP ヘッダのオプションを解析する。
    162150 */
    163151
     
    214202
    215203/*
    216  *  set_rexmt_timer -- 新しい往復時間を収集し、再送タイマを更新する。
     204 *  set_rexmt_timer -- 新しい往復時間を収集し、再送タイマを更新する。
    217205 */
    218206
     
    225213        if (cep->srtt != 0) {
    226214                /*
    227                  *  srtt: 平滑化された RTT
     215                 *  srtt: 平滑化された RTT
    228216                 *
    229                  *  計測された RTT (rtt) と現在の平滑化された RTT (srtt) の差 (delta) を求める。
     217                 *  計測された RTT (rtt) と現在の平滑化された RTT (srtt) の差 (delta) を求める。
    230218                 *
    231                  *  delta は 2 ビット左シフト ( 4 倍) した値で保持する。
    232                  *  srtt  は 5 ビット左シフト (32 倍) した値で保持されている。
     219                 *  delta は 2 ビット左シフト ( 4 倍) した値で保持する。
     220                 *  srtt  は 5 ビット左シフト (32 倍) した値で保持されている。
    233221                 *
    234222                 *    delta = rtt / 8 - srtt / 8
    235223                 *
    236                  *  新しい srtt は
     224                 *  新しい srtt は
    237225                 *
    238226                 *    srtt = rtt / 8 + srtt * 7 / 8
    239227                 *         = srtt + (rtt / 8 - srtt / 8)
    240228                 *
    241                  *  で計算する。
    242                  *  このため、rtt を 2 ビット左シフトし、srtt を (5 - 2) ビット右シフトして delta を求める。
     229                 *  で計算する。
     230                 *  このため、rtt を 2 ビット左シフトし、srtt を (5 - 2) ビット右シフトして delta を求める。
    243231                 */
    244232                delta = ((rtt - 1) << TCP_DELTA_SHIFT) - (cep->srtt >> (TCP_SRTT_SHIFT - TCP_DELTA_SHIFT));
     
    248236
    249237                /*
    250                  *  delta の絶対値 | delta | を求める。
     238                 *  delta の絶対値 | delta | を求める。
    251239                 */
    252240                if (delta < 0)
     
    254242
    255243                /*
    256                  *  rttvar: 平滑化された分散
     244                 *  rttvar: 平滑化された分散
    257245                 *
    258                  *  rttvar は 4 ビット左シフト (16 倍) した値で保持されている。
     246                 *  rttvar は 4 ビット左シフト (16 倍) した値で保持されている。
    259247                 *
    260248                 *    delta = |delta| / 4 - rttvar / 4
    261249                 *
    262                  *  新しい rttvar は
     250                 *  新しい rttvar は
    263251                 *
    264252                 *    rttvar = |delta|/ 4 + rttvar * 3 /4
    265253                 *           = rttvar + (|delta| / 4 - rttvar / 4)
    266254                 *
    267                  *  で計算する。
     255                 *  で計算する。
    268256                 */
    269257                delta -= cep->rttvar >> (TCP_RTTVAR_SHIFT - TCP_DELTA_SHIFT);
     
    274262        else {
    275263                /*
    276                  *  まだ srtt の設定が行われていないときは、今回計測された RTT を使用する。
    277                  *  平滑化された RTT (srtt) には、RTT を 5 ビット左シフト (32倍) した値。
    278                  *  平滑化された分散 (rttvar) には、RTT の 1/2 を 4 ビット左シフト (16倍) した値。
     264                 *  まだ srtt の設定が行われていないときは、今回計測された RTT を使用する。
     265                 *  平滑化された RTT (srtt) には、RTT を 5 ビット左シフト (32倍) した値。
     266                 *  平滑化された分散 (rttvar) には、RTT の 1/2 を 4 ビット左シフト (16倍) した値。
    279267                 */
    280268                cep->srtt   = rtt <<  TCP_SRTT_SHIFT;
     
    283271
    284272        /*
    285          *  rtt の測定を終了し、再送回数をリセットする。
     273         *  rtt の測定を終了し、再送回数をリセットする。
    286274         */
    287275        cep->rtt = cep->rxtshift = 0;
    288276
    289277        /*
    290          *  RTT に許される最小値 と rtt + 2 の大きな値の方を再送タイムアウトの最小値にする。
     278         *  RTT に許される最小値 と rtt + 2 の大きな値の方を再送タイムアウトの最小値にする。
    291279         */
    292280        if (rtt + 2 < TCP_TVAL_MIN)
     
    301289
    302290/*
    303  *  reassemble -- 受信セグメントを再構成する。順番通りに受信したときの処理
     291 *  reassemble -- 受信セグメントを再構成する。順番通りに受信したときの処理
    304292 */
    305293
     
    313301        if (tcph->sum > cep->rbufsz - cep->rwbuf_count) {
    314302                /*
    315                  *  受信ウィンドバッファに空きがないときは破棄する。
     303                 *  受信ウィンドバッファに空きがないときは破棄する。
    316304                 */
    317305                NET_COUNT_TCP(net_count_tcp[NC_TCP_RECV_DROP_SEGS], 1);
     
    324312                 cep->fsm_state == TCP_FSM_ESTABLISHED) {
    325313                /*
    326                  *  順番通りにセグメントを受信した時の処理
    327                  *  受信セグメントの並べ替えは不要なので
    328                  *  そのまま受信ウィンドバッファに書き込む。
     314                 *  順番通りにセグメントを受信した時の処理
     315                 *  受信セグメントの並べ替えは不要なので
     316                 *  そのまま受信ウィンドバッファに書き込む。
    329317                 */
    330318
     
    341329                qhdr = GET_TCP_Q_HDR(input, thoff);
    342330
    343                 /*  TCP ヘッダの位置を保存する。*/
     331                /*  TCP ヘッダの位置を保存する。*/
    344332                SET_IP_TCP_Q_HDR_OFFSET(input, thoff);
    345333
    346                 /* SDU のオフセット(å
    347 ƒã¯ã‚¦ã‚£ãƒ³ãƒ‰ã‚µã‚¤ã‚ºï¼‰ã‚’リセットする。*/
     334                /* SDU のオフセット(元はウィンドサイズ)をリセットする。*/
    348335                qhdr->soff = 0;
    349336
    350                 /* データを受信ウィンドバッファに書き込む。*/
     337                /* データを受信ウィンドバッファに書き込む。*/
    351338                TCP_WRITE_RWBUF(cep, input, thoff);
    352339                }
     
    359346
    360347/*
    361  *  listening -- 受動オープンして,状æ
    362 ‹ãŒ LISTEN の処理
     348 *  listening -- 受動オープンして,状態が LISTEN の処理
    363349 *
    364  *    戻り値:
    365  *      RET_OK          正常
    366  *      RET_DROP        エラー、セグメントを破棄する。
    367  *      RET_RST_DROP    エラー、RST を送信し、セグメントを破棄する。
     350 *    戻り値:
     351 *      RET_OK          正常
     352 *      RET_DROP        エラー、セグメントを破棄する。
     353 *      RET_RST_DROP    エラー、RST を送信し、セグメントを破棄する。
    368354 */
    369355
     
    376362
    377363        /*
    378          *  フラグに RST がセットされていれば破棄する。
     364         *  フラグに RST がセットされていれば破棄する。
    379365         */
    380366        if (tcph->flags & TCP_FLG_RST)
     
    382368
    383369        /* 
    384          *  フラグに ACK がセットさてれいれば、
    385          *  リセットを送って破棄する。
     370         *  フラグに ACK がセットさてれいれば、
     371         *  リセットを送って破棄する。
    386372         */
    387373        if (tcph->flags & TCP_FLG_ACK)
     
    389375
    390376        /*
    391          *  フラグに SYN がセットされていなければれば破棄する。
     377         *  フラグに SYN がセットされていなければれば破棄する。
    392378         */
    393379        if ((tcph->flags & TCP_FLG_SYN) == 0)
     
    395381
    396382        /*
    397          *  受信可能な IP アドレスとポート番号であることを確認する。
     383         *  受信可能な IP アドレスとポート番号であることを確認する。
    398384         */
    399385        if (!tcp_is_addr_accept(input, thoff))
    400386                return RET_DROP;
    401387
    402         /* 相手のアドレスを記録する。*/
     388        /* 相手のアドレスを記録する。*/
    403389        IN_COPY_TO_HOST(&cep->dstaddr.ipaddr, input);
    404390        cep->dstaddr.portno = tcph->sport;
    405391
    406         /* オプションを処理する。*/
     392        /* オプションを処理する。*/
    407393        parse_option(tcph, cep);
    408394
    409         /* シーケンス番号を初期化する。*/
     395        /* シーケンス番号を初期化する。*/
    410396        if (tcp_iss == 0)
    411397                tcp_init_iss();
    412398
    413         /* 自分のシーケンス番号の初期値を記録する。*/
     399        /* 自分のシーケンス番号の初期値を記録する。*/
    414400        if (iss != 0)
    415401                cep->iss = iss;
     
    419405        tcp_iss += TCP_ISS_INCR() / 4;
    420406
    421         /* 相手のシーケンス番号の初期値を記録する。*/
     407        /* 相手のシーケンス番号の初期値を記録する。*/
    422408        cep->irs = tcph->seq;
    423409
    424         /* 送受信シーケンス番号を初期化する。*/
     410        /* 送受信シーケンス番号を初期化する。*/
    425411        init_send_seq(cep);
    426412        init_receive_seq(cep);
    427413
    428         /* 送信ウインドサイズを設定する。*/
     414        /* 送信ウインドサイズを設定する。*/
    429415        cep->snd_wnd = tcph->win;
    430416
    431         /* 最終設定 */
     417        /* 最終設定 */
    432418        cep->flags    |= TCP_CEP_FLG_ACK_NOW;
    433419        cep->fsm_state = TCP_FSM_SYN_RECVD;
     
    438424
    439425/*
    440  *  syn_sent -- 能動オープンして、状æ
    441 ‹ãŒ SYN 送信済の処理
     426 *  syn_sent -- 能動オープンして、状態が SYN 送信済の処理
    442427 *
    443  *    戻り値:
    444  *      RET_OK          正常
    445  *      RET_DROP        エラー、セグメントを破棄する。
    446  *      RET_RST_DROP    エラー、RST を送信し、セグメントを破棄する。
     428 *    戻り値:
     429 *      RET_OK          正常
     430 *      RET_DROP        エラー、セグメントを破棄する。
     431 *      RET_RST_DROP    エラー、RST を送信し、セグメントを破棄する。
    447432 */
    448433
     
    453438
    454439        /*
    455          *  相手から受信確認が送られて来ても、
     440         *  相手から受信確認が送られて来ても、
    456441         *
    457          *    ACK <= iss && 送信した最大 SEQ (snd_max) < ACK
     442         *    ACK <= iss && 送信した最大 SEQ (snd_max) < ACK
    458443         *
    459          *  なら、リセットを送ってセグメントを破棄する。
     444         *  なら、リセットを送ってセグメントを破棄する。
    460445         */
    461446        if ((tcph->flags & TCP_FLG_ACK) &&
     
    464449
    465450        /*
    466          *  RST/ACK フラグの応答があれば、ポートが開いていない
    467          *  ことを意味している。
     451         *  RST/ACK フラグの応答があれば、ポートが開いていない
     452         *  ことを意味している。
    468453         */
    469454        if (tcph->flags & TCP_FLG_RST) {
     
    476461
    477462        /*
    478          *  SYN フラグがなければセグメントを破棄する。
     463         *  SYN フラグがなければセグメントを破棄する。
    479464         */
    480465        if ((tcph->flags & TCP_FLG_SYN) == 0)
    481466                return RET_DROP;
    482467
    483         cep->snd_wnd = tcph->win;       /* snd_wnd: 相手の受信可能ウィンドサイズ  */
    484         cep->irs     = tcph->seq;       /* irs:     ç›¸æ‰‹ã®ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ç•ªå·ã®åˆæœŸå€¤  */
    485         init_receive_seq(cep);          /* 送受信シーケンス番号を初期化する。          */
     468        cep->snd_wnd = tcph->win;       /* snd_wnd: 相手の受信可能ウィンドサイズ      */
     469        cep->irs     = tcph->seq;       /* irs:     相手のシーケンス番号の初期値      */
     470        init_receive_seq(cep);          /* 送受信シーケンス番号を初期化する。            */
    486471
    487472        if (tcph->flags & TCP_FLG_ACK) {
    488473                /*
    489                  *  ACK フラグがあるときの処理
     474                 *  ACK フラグがあるときの処理
    490475                 *
    491                  *  受信を期å¾
    492 ã—ている最大の SEQ (rcv_adv) を
    493                  *  受信可能なウィンドサイズ (rcv_wnd) 分進める。
    494                  */
    495                 cep->rcv_adv += cep->rcv_wnd;   /* rcv_adv: 受信を期å¾
    496 ã—ている最大の SEQ       */
    497                                                 /* rcv_wnd: 受信可能なウィンドサイズ                */
    498 
    499                 /* 未確認の最小送信 SEQ (snd_una) を SYN 分 (1 オクテット) 進める。*/
     476                 *  受信を期待している最大の SEQ (rcv_adv) を
     477                 *  受信可能なウィンドサイズ (rcv_wnd) 分進める。
     478                 */
     479                cep->rcv_adv += cep->rcv_wnd;   /* rcv_adv: 受信を期待している最大の SEQ    */
     480                                                /* rcv_wnd: 受信可能なウィンドサイズ                */
     481
     482                /* 未確認の最小送信 SEQ (snd_una) を SYN 分 (1 オクテット) 進める。*/
    500483                cep->snd_una ++;
    501484
    502485#ifdef TCP_CFG_DELAY_ACK
    503486
    504                 if (tcph->sum != 0)             /* tcph->sum は SDU 長 */
     487                if (tcph->sum != 0)             /* tcph->sum は SDU 長 */
    505488                        cep->flags |= TCP_CEP_FLG_DEL_ACK;
    506489                else
     
    515498                if (cep->flags & TCP_CEP_FLG_NEED_FIN) {
    516499                        /*
    517                          *  CEP で FIN 送信が要求されていれば、
    518                          *  切断処理を開始し、
    519                          *  CEP の状æ
    520 ‹ã‚’ FIN Wait 1 にする。
     500                         *  CEP で FIN 送信が要求されていれば、
     501                         *  切断処理を開始し、
     502                         *  CEP の状態を FIN Wait 1 にする。
    521503                         */
    522504                        cep->fsm_state = TCP_FSM_FIN_WAIT_1;
     
    526508                else {
    527509                        /*
    528                          *  相手から ACK が応答されたので、
    529                          *  CEP の状æ
    530 ‹ã‚’ コネクション開設完了状æ
    531 ‹ã«ã™ã‚‹ã€‚
     510                         *  相手から ACK が応答されたので、
     511                         *  CEP の状態を コネクション開設完了状態にする。
    532512                         */
    533513                        cep->timer[TCP_TIM_KEEP] = TCP_TVAL_KEEP_IDLE;
     
    540520                        if (cep->snd_nblk_tfn == TFN_TCP_CON_CEP) {
    541521
    542                                 /* 相手のアドレスをコピーする。*/
     522                                /* 相手のアドレスをコピーする。*/
    543523                                *cep->p_dstaddr = cep->dstaddr;
    544524
     
    576556                }
    577557        else {
    578                 /* ACK フラグがないときは、ACK を送って、CEP の状æ
    579 ‹ã‚’ SYN 受信済みにする。*/
     558                /* ACK フラグがないときは、ACK を送って、CEP の状態を SYN 受信済みにする。*/
    580559                cep->flags |= TCP_CEP_FLG_ACK_NOW;
    581560                cep->timer[TCP_TIM_REXMT] = 0;
     
    587566
    588567/*
    589  *  trim_length -- 受信した SDU 長を調整する。
     568 *  trim_length -- 受信した SDU 長を調整する。
    590569 */
    591570
     
    594573{
    595574        tcph->seq ++;
    596         if (tcph->sum > cep->rcv_wnd) {         /* 注意: tcph->sum は SDU 長 */
    597                 /*
    598                  *  SDU 長が受信ウィンドサイズより大きいときは、受信ウィンドサイズ以降は
    599                  *  破棄し、FIN に応答しないことで、破棄したデータを再送させる。
     575        if (tcph->sum > cep->rcv_wnd) {         /* 注意: tcph->sum は SDU 長 */
     576                /*
     577                 *  SDU 長が受信ウィンドサイズより大きいときは、受信ウィンドサイズ以降は
     578                 *  破棄し、FIN に応答しないことで、破棄したデータを再送させる。
    600579                 */
    601580                tcph->sum    = (uint16_t)cep->rcv_wnd;
    602581                tcph->flags &= ~TCP_FLG_FIN;
    603582                }
    604         cep->snd_wl1 = tcph->seq - 1;           /* cep->snd_wl1: ウィンド更新 SEQ 番号  */
     583        cep->snd_wl1 = tcph->seq - 1;           /* cep->snd_wl1: ウィンド更新 SEQ 番号  */
    605584
    606585#ifdef TCP_CFG_EXTENTIONS
    607         cep->rcv_up  = tcph->seq;               /* cep->rcv_up : 受信した緊急ポインタ */
     586        cep->rcv_up  = tcph->seq;               /* cep->rcv_up : 受信した緊急ポインタ     */
    608587#endif
    609588        }
    610589
    611590/*
    612  *  proc_ack2 -- ACK の処理 (2)
     591 *  proc_ack2 -- ACK の処理 (2)
    613592 *
    614  *    戻り値
     593 *    戻り値
    615594 *
    616  *      RET_OK          正常
    617  *      RET_RETURN      正常、リターンする。
    618  *      RET_DROP        エラー、セグメントを破棄する。
    619  *      RET_RST_DROP    エラー、RST を送信し、セグメントを破棄する。
     595 *      RET_OK          正常
     596 *      RET_RETURN      正常、リターンする。
     597 *      RET_DROP        エラー、セグメントを破棄する。
     598 *      RET_RST_DROP    エラー、RST を送信し、セグメントを破棄する。
    620599 */
    621600
     
    631610
    632611        /*
    633          *  相手に受信確認された ACK から、まだ確認されていない
    634          *  最小送信 SEQ (snd_una) を引くと、送信ウィンドバッファから
    635          *  削除してよいオクテット数 (acked) になる。
     612         *  相手に受信確認された ACK から、まだ確認されていない
     613         *  最小送信 SEQ (snd_una) を引くと、送信ウィンドバッファから
     614         *  削除してよいオクテット数 (acked) になる。
    636615         */
    637616        acked = tcph->ack - cep->snd_una;
     
    639618
    640619        /*
    641          *  往復時間計測 (rtt) が設定されていて、計測開始 SEQ より
    642          *  後の ACK を受信したら、タイマバックオフをキャンセルし、
    643          *  再送タイマを再設定する。
     620         *  往復時間計測 (rtt) が設定されていて、計測開始 SEQ より
     621         *  後の ACK を受信したら、タイマバックオフをキャンセルし、
     622         *  再送タイマを再設定する。
    644623         */
    645624        if (cep->rtt && SEQ_GT(tcph->ack, cep->rtseq)) {
     
    648627
    649628        /*
    650          *  å
    651 ¨ã¦ã®æœªç¢ºèªãƒ‡ãƒ¼ã‚¿ãŒ ACK されたら、再送タイマを停止し、
    652          *  再開を記憶する (さらに出力か持続)。
    653          *  もし、ACK すべき、さらに多くのデータがあるなら、再送タイマに
    654          *  現在の再送タイムアウトを設定する。
    655          */
    656         if (tcph->ack == cep->snd_max) {        /* cep->snd_max: 送信した最大 SEQ */
     629         *  全ての未確認データが ACK されたら、再送タイマを停止し、
     630         *  再開を記憶する (さらに出力か持続)。
     631         *  もし、ACK すべき、さらに多くのデータがあるなら、再送タイマに
     632         *  現在の再送タイムアウトを設定する。
     633         */
     634        if (tcph->ack == cep->snd_max) {        /* cep->snd_max: 送信した最大 SEQ */
    657635
    658636#ifdef TCP_CFG_SWBUF_CSAVE
    659637
    660638                /*
    661                  * 送信ウィンドバッファの省コピー機能が有効の場合は、
    662                  * 送信済みで、ACKが完了するまで再送タイマを変更しない。
     639                 * 送信ウィンドバッファの省コピー機能が有効の場合は、
     640                 * 送信済みで、ACKが完了するまで再送タイマを変更しない。
    663641                 */
    664642                if ((cep->flags & TCP_CEP_FLG_WBCS_MASK) == TCP_CEP_FLG_WBCS_ACKED)
     
    674652                }
    675653        else if (cep->timer[TCP_TIM_PERSIST] == 0) {
    676                 cep->timer[TCP_TIM_REXMT] = cep->rxtcur;        /* cep->rxtcur: 現在の再送タイムアウト */
    677                 }
    678 
    679         /* 相手が受信確認したデータがあるときの処理 */
     654                cep->timer[TCP_TIM_REXMT] = cep->rxtcur;        /* cep->rxtcur: 現在の再送タイムアウト */
     655                }
     656
     657        /* 相手が受信確認したデータがあるときの処理 */
    680658        if (acked) {
    681                 uint32_t cw   = cep->snd_cwnd;  /* cep->snd_cwnd: 輻輳ウィンドサイズ   */
    682                 uint32_t incr = cep->maxseg;            /* cep->maxseg:   æœ€å¤§ã‚»ã‚°ãƒ¡ãƒ³ãƒˆã‚µã‚¤ã‚º        */
    683 
    684                 /*
    685                  *  新たに相手が受信確認したデータがあったときは、
    686                  *  輻輳ウィンドサイズを大きくする。
    687                  *  輻輳ウィンドサイズ (snd_cwnd) が
    688                  *  輻輳ウィンドサイズのしきい値 (snd_ssthresh) より大きいときは
    689                  *  輻輳回避制御を行い。
     659                uint32_t cw   = cep->snd_cwnd;  /* cep->snd_cwnd: 輻輳ウィンドサイズ     */
     660                uint32_t incr = cep->maxseg;            /* cep->maxseg:   最大セグメントサイズ    */
     661
     662                /*
     663                 *  新たに相手が受信確認したデータがあったときは、
     664                 *  輻輳ウィンドサイズを大きくする。
     665                 *  輻輳ウィンドサイズ (snd_cwnd) が
     666                 *  輻輳ウィンドサイズのしきい値 (snd_ssthresh) より大きいときは
     667                 *  輻輳回避制御を行い。
    690668                 *
    691669                 *    snd_cwnd = snd_cwnd + maxseg * maxseg / snd_cwnd;
    692670                 *
    693                  *  等しいか小さいときは、スロースタート制御を行う。
     671                 *  等しいか小さいときは、スロースタート制御を行う。
    694672                 *
    695673                 *    snd_cwnd = snd_cwnd + maxseg
     
    697675                 */
    698676                if (cw > cep->snd_ssthresh)
    699                         /* 輻輳回避制御 */
     677                        /* 輻輳回避制御 */
    700678                        incr = incr * incr / cw;
    701679
     
    706684
    707685                /*
    708                  *  送信ウィンドバッファから、相手が受信確認したデータ数 (acked) のデータを削除する。
     686                 *  送信ウィンドバッファから、相手が受信確認したデータ数 (acked) のデータを削除する。
    709687                 */
    710688                if (acked > cep->swbuf_count) {
     
    719697                        }
    720698
    721                 /* 送信ウィンドバッファに空きができたことを知らせる。*/
     699                /* 送信ウィンドバッファに空きができたことを知らせる。*/
    722700                syscall(set_flg(cep->snd_flgid, TCP_CEP_EVT_SWBUF_READY));
    723701
    724702                /*
    725                  *  送達確認されていない最小送信 SEQ (snd_una) を
    726                  *  今回送達確認された ACK まで進め、
    727                  *  次の送信データの SEQ (snd_nxt) も、新しい
    728                  *  送達確認されていない最小送信 SEQ (snd_una)
    729                  *  まで進める。
     703                 *  送達確認されていない最小送信 SEQ (snd_una) を
     704                 *  今回送達確認された ACK まで進め、
     705                 *  次の送信データの SEQ (snd_nxt) も、新しい
     706                 *  送達確認されていない最小送信 SEQ (snd_una)
     707                 *  まで進める。
    730708                 */
    731709                cep->snd_una += acked;
     
    734712
    735713                /*
    736                  *  状æ
    737 ‹ã«ã‚ˆã‚Šåˆ†å²
     714                 *  状態により分岐
    738715                 */
    739716                switch (cep->fsm_state) {
    740                 case TCP_FSM_FIN_WAIT_1:        /* APP が終了、FIN 送信済み、ACK å¾
    741 ã¡ */
     717                case TCP_FSM_FIN_WAIT_1:        /* APP が終了、FIN 送信済み、ACK 待ち */
    742718                        if (ourfinisacked) {
    743719                                cep->fsm_state = TCP_FSM_FIN_WAIT_2;
     
    745721                                }
    746722                        break;
    747                 case TCP_FSM_CLOSING:           /* 同時クローズ、FIN 交換済み、ACK å¾
    748 ã¡ */
     723                case TCP_FSM_CLOSING:           /* 同時クローズ、FIN 交換済み、ACK 待ち */
    749724                        if (ourfinisacked) {
    750725                                /*
    751                                  *  送信した FIN が確認されていれば状æ
    752 ‹ã‚’変更し、
    753                                  *  すべてのタイマをリセットした後、2MSL タイマを設定する。
     726                                 *  送信した FIN が確認されていれば状態を変更し、
     727                                 *  すべてのタイマをリセットした後、2MSL タイマを設定する。
    754728                                 */
    755729                                cep->fsm_state = TCP_FSM_TIME_WAIT;
     
    758732                                }
    759733                        break;
    760                 case TCP_FSM_LAST_ACK:          /* APP が終了、ACK å¾
    761 ã¡ */
     734                case TCP_FSM_LAST_ACK:          /* APP が終了、ACK 待ち */
    762735                        if (ourfinisacked) {
    763736                                /*
    764                                  *  送信した FIN が確認されていれば、cep をクローズし、
    765                                  *  セグメントを破棄する。
     737                                 *  送信した FIN が確認されていれば、cep をクローズし、
     738                                 *  セグメントを破棄する。
    766739                                 */
    767740                                cep = tcp_close(cep);
     
    769742                                }
    770743                        break;
    771                 case TCP_FSM_TIME_WAIT:         /* 相手からの FIN 受信済み、時間å¾
    772 ã¡ */
     744                case TCP_FSM_TIME_WAIT:         /* 相手からの FIN 受信済み、時間待ち */
    773745                        /*
    774                          *  相手から FIN が再送された。もう一度2MSL タイマを設定し、
    775                          *  ACK 送信後、セグメントを破棄する。
     746                         *  相手から FIN が再送された。もう一度2MSL タイマを設定し、
     747                         *  ACK 送信後、セグメントを破棄する。
    776748                         */
    777749                        cep->timer[TCP_TIM_2MSL] = 2 * TCP_TVAL_MSL;
     
    784756
    785757/*
    786  *  proc_ack1 -- ACK の処理 (1)
     758 *  proc_ack1 -- ACK の処理 (1)
    787759 *
    788  *    戻り値:
    789  *      RET_OK          正常
    790  *      RET_RETURN      正常、リターンする。
    791  *      RET_DROP        エラー、セグメントを破棄する。
    792  *      RET_RST_DROP    エラー、RST を送信し、セグメントを破棄する。
     760 *    戻り値:
     761 *      RET_OK          正常
     762 *      RET_RETURN      正常、リターンする。
     763 *      RET_DROP        エラー、セグメントを破棄する。
     764 *      RET_RST_DROP    エラー、RST を送信し、セグメントを破棄する。
    793765 *
    794766 */
     
    800772
    801773        switch (cep->fsm_state) {
    802         case TCP_FSM_SYN_RECVD:         /* SYN を受信し、SYN 送信済み  */
    803 
    804                 /* 状æ
    805 ‹ã‚’変更する。*/
     774        case TCP_FSM_SYN_RECVD:         /* SYN を受信し、SYN 送信済み    */
     775
     776                /* 状態を変更する。*/
    806777                if (cep->flags & TCP_CEP_FLG_NEED_FIN) {
    807778                        cep->fsm_state  = TCP_FSM_FIN_WAIT_1;
     
    812783                        cep->fsm_state  = TCP_FSM_ESTABLISHED;
    813784
    814                         /* TCP 通信端点からTCP 受付口を解放する。*/
     785                        /* TCP 通信端点からTCP 受付口を解放する。*/
    815786                        cep->rep = NULL;
    816787
     
    825796                        if (cep->rcv_nblk_tfn == TFN_TCP_ACP_CEP) {
    826797
    827                                 /* 相手のアドレスをコピーする。*/
     798                                /* 相手のアドレスをコピーする。*/
    828799
    829800#if defined(_IP6_CFG) && defined(_IP4_CFG)
     
    875846                        if (cep->snd_nblk_tfn == TFN_TCP_CON_CEP) {
    876847
    877                                 /* 相手のアドレスをコピーする。*/
     848                                /* 相手のアドレスをコピーする。*/
    878849                                *cep->p_dstaddr = cep->dstaddr;
    879850
     
    923894
    924895                /*
    925                  *  SDU がなく FIN がついていなければ、tcp_move_ra2rw() を呼出す。
    926                  */
    927                 if (tcph->sum == 0 && (tcph->flags & TCP_FLG_FIN) == 0)         /* tcph->sum は SDU 長 */
     896                 *  SDU がなく FIN がついていなければ、tcp_move_ra2rw() を呼出す。
     897                 */
     898                if (tcph->sum == 0 && (tcph->flags & TCP_FLG_FIN) == 0)         /* tcph->sum は SDU 長 */
    928899                        tcph->flags = tcp_move_ra2rw(cep, tcph->flags);
    929900               
    930                 cep->snd_wl1 = tcph->seq - 1;   /* snd_wl1: ウィンド更新 SEQ */
    931 
    932                 /* break; 下に落ちる。*/
     901                cep->snd_wl1 = tcph->seq - 1;   /* snd_wl1: ウィンド更新 SEQ */
     902
     903                /* break; 下に落ちる。*/
    933904       
    934         case TCP_FSM_ESTABLISHED:       /* コネクション開設完了               */
    935         case TCP_FSM_FIN_WAIT_1:        /* 終了して、FIN 送信済み              */
    936         case TCP_FSM_FIN_WAIT_2:        /* 終了、FIN 伝達確認受信、FINå¾
    937 ã¡*/
    938         case TCP_FSM_CLOSE_WAIT:        /* FIN 受信、クローズå¾
    939 ã¡             */
    940         case TCP_FSM_CLOSING:           /* 終了、FIN 交換済み、ACK å¾
    941 ã¡     */
    942         case TCP_FSM_LAST_ACK:          /* FIN 受信、終了、ACK å¾
    943 ã¡     */
    944         case TCP_FSM_TIME_WAIT:         /* 終了、時間å¾
    945 ã¡             */
     905        case TCP_FSM_ESTABLISHED:       /* コネクション開設完了           */
     906        case TCP_FSM_FIN_WAIT_1:        /* 終了して、FIN 送信済み                */
     907        case TCP_FSM_FIN_WAIT_2:        /* 終了、FIN 伝達確認受信、FIN待ち*/
     908        case TCP_FSM_CLOSE_WAIT:        /* FIN 受信、クローズ待ち                */
     909        case TCP_FSM_CLOSING:           /* 終了、FIN 交換済み、ACK 待ち   */
     910        case TCP_FSM_LAST_ACK:          /* FIN 受信、終了、ACK 待ち     */
     911        case TCP_FSM_TIME_WAIT:         /* 終了、時間待ち              */
    946912
    947913                if (SEQ_LE(tcph->ack, cep->snd_una)) {
    948914
    949915                        /*
    950                          *  受信確認 ACK が 未確認の最小送信 SEQ (snd_una) と同じか以前のときの処理
    951                          *  つまり、多重に ACK を受信したことを意味している。
     916                         *  受信確認 ACK が 未確認の最小送信 SEQ (snd_una) と同じか以前のときの処理
     917                         *  つまり、多重に ACK を受信したことを意味している。
    952918                         */
    953919
    954                         if (tcph->sum == 0 && tcph->win == cep->snd_wnd) {      /* tcph->sum は SDU 長 */
     920                        if (tcph->sum == 0 && tcph->win == cep->snd_wnd) {      /* tcph->sum は SDU 長 */
    955921
    956922                                /*
    957                                  *  SDU がなく、相手のウィンドサイズが変更されていなければ、
    958                                  *  すでに送信したセグメントの中で、ACK (tcph->ack) と
    959                                  *  同じ SEQ から始まるセグメントが、途中で消失した可能性がある。
    960                                  *  この場合は、高速再転送と高速リカバリを行う。
     923                                 *  SDU がなく、相手のウィンドサイズが変更されていなければ、
     924                                 *  すでに送信したセグメントの中で、ACK (tcph->ack) と
     925                                 *  同じ SEQ から始まるセグメントが、途中で消失した可能性がある。
     926                                 *  この場合は、高速再転送と高速リカバリを行う。
    961927                                 */
    962928                                NET_COUNT_TCP(net_count_tcp[NC_TCP_RECV_DUP_ACKS], 1);
     
    965931
    966932                                        /*
    967                                          *  再送タイマがセットされていないとき、
    968                                          *  または、ACK (tcph->ack) と未確認の最小送信 SEQが
    969                                          *  一致しないときは、多重 ACK 数を 0 にする。
     933                                         *  再送タイマがセットされていないとき、
     934                                         *  または、ACK (tcph->ack) と未確認の最小送信 SEQが
     935                                         *  一致しないときは、多重 ACK 数を 0 にする。
    970936                                         */
    971937                                        cep->dupacks = 0;
     
    975941
    976942                                        /*
    977                                          *  多重 ACK 数がしきい値 (標準 3) になったら
    978                                          *  高速再転送処理を開始する。
     943                                         *  多重 ACK 数がしきい値 (標準 3) になったら
     944                                         *  高速再転送処理を開始する。
    979945                                         */
    980946                                        uint_t          win;
    981947
    982948                                        /*
    983                                          *  輻輳ウィンドサイズ(snd_cwnd)のしきい値を設定する。
     949                                         *  輻輳ウィンドサイズ(snd_cwnd)のしきい値を設定する。
    984950                                         *
    985                                          *    相手の受信可能ウィンドサイズ (snd_wnd) か
    986                                          *    輻輳ウィンドサイズ (snd_cwnd) の 1/2。
    987                                          *    ただし、2 * maxseg 以上。
     951                                         *    相手の受信可能ウィンドサイズ (snd_wnd) か
     952                                         *    輻輳ウィンドサイズ (snd_cwnd) の 1/2。
     953                                         *    ただし、2 * maxseg 以上。
    988954                                         *
    989955                                         */
     
    996962                                        cep->snd_ssthresh = win * cep->maxseg;
    997963
    998                                         /* 再送タイマと往復時間をリセットする。*/
     964                                        /* 再送タイマと往復時間をリセットする。*/
    999965                                        cep->timer[TCP_TIM_REXMT] = 0;
    1000966                                        cep->rtt = 0;
    1001967
    1002                                         /* 消失したセグメントを送信する。*/
     968                                        /* 消失したセグメントを送信する。*/
    1003969                                        cep->snd_old_nxt = cep->snd_nxt;
    1004970                                        cep->snd_nxt     = tcph->ack;
     
    1006972
    1007973                                        /*
    1008                                          *  snd_nxt をå
    1009 ƒã«æˆ»ã™ã‚ˆã†ã«è¨­å®šã—て
    1010                                          *  送信を指示する。
     974                                         *  snd_nxt を元に戻すように設定して
     975                                         *  送信を指示する。
    1011976                                         */
    1012977                                        cep->flags |=  TCP_CEP_FLG_POST_OUTPUT |
     
    1016981                                        sig_sem(SEM_TCP_POST_OUTPUT);
    1017982
    1018                                         /* 輻輳ウィンドサイズを更新する。*/
     983                                        /* 輻輳ウィンドサイズを更新する。*/
    1019984                                        cep->snd_cwnd = (uint16_t)(cep->snd_ssthresh
    1020985                                                           + cep->maxseg * cep->dupacks);
     
    1026991
    1027992                                        /*
    1028                                          *  多重 ACK 数がしきい値 (標準 3) をè¶
    1029 ãˆãŸã‚‰
    1030                                          *  輻輳ウィンドサイズを増加しながら再送する。
     993                                         *  多重 ACK 数がしきい値 (標準 3) を超えたら
     994                                         *  輻輳ウィンドサイズを増加しながら再送する。
    1031995                                         */
    1032996                                        cep->snd_cwnd += cep->maxseg;
    1033997
    1034                                         /* 送信を指示する。*/
     998                                        /* 送信を指示する。*/
    1035999                                        cep->flags |=  TCP_CEP_FLG_POST_OUTPUT;
    10361000                                        sig_sem(SEM_TCP_POST_OUTPUT);
     
    10451009
    10461010                /*
    1047                  *  受信確認 ACK が 未確認の最小送信 SEQ (snd_una) 以降のときの処理
     1011                 *  受信確認 ACK が 未確認の最小送信 SEQ (snd_una) 以降のときの処理
    10481012                 */
    10491013                if (cep->dupacks >= MAX_TCP_REXMT_THRESH && cep->snd_cwnd > cep->snd_ssthresh)
    10501014                        /*
    1051                          *  高速再転送を行っていたときは、輻輳ウィンドサイズをしきい値まで戻す。
     1015                         *  高速再転送を行っていたときは、輻輳ウィンドサイズをしきい値まで戻す。
    10521016                         */
    10531017                        cep->snd_cwnd = (uint16_t)cep->snd_ssthresh;
     
    10571021                if (SEQ_GT(tcph->ack, cep->snd_max))
    10581022                        /*
    1059                          *  受信した ACK が送信した最大 SEQ をè¶
    1060 ãˆã¦ã„たときの処理
     1023                         *  受信した ACK が送信した最大 SEQ を超えていたときの処理
    10611024                         */
    10621025                        return drop_after_ack(input, cep, thoff);
     
    10641027                if (cep->flags & TCP_CEP_FLG_NEED_SYN) {
    10651028                        /*
    1066                          *  SYN 送信要求を取り消して、未確認の最小送信 SEQ を進める。
     1029                         *  SYN 送信要求を取り消して、未確認の最小送信 SEQ を進める。
    10671030                         */
    10681031                        cep->flags &= ~TCP_CEP_FLG_NEED_SYN;
     
    10771040
    10781041/*
    1079  *  update_wnd -- ウィンドサイズを更新する。
     1042 *  update_wnd -- ウィンドサイズを更新する。
    10801043 *
    1081  *    戻り値: 送信がå¿
    1082 è¦ãªã‚‰ true を返す。
     1044 *    戻り値: 送信が必要なら true を返す。
    10831045 */
    10841046
     
    10881050
    10891051        /*
    1090          *  更新条件
     1052         *  更新条件
    10911053         *
    1092          *    ACK フラグがセットされている &&
    1093          *    (前回ウィンドを更新した SEQ (snd_wl1) が SEQ より前 ||
    1094          *     å‰å›žã‚¦ã‚£ãƒ³ãƒ‰ã‚’更新した SEQ (snd_wl1) が SEQ と同じ &&
    1095          *     (前回ウィンドを更新した ACK (snd_wl2) が ACK より前 ||
    1096          *      (前回ウィンドを更新した ACK (snd_wl2) が ACK と同じ &&
    1097          *       WIN が相手の受信可能ウィンドサイズ (snd_wnd) より大きい
     1054         *    ACK フラグがセットされている &&
     1055         *    (前回ウィンドを更新した SEQ (snd_wl1) が SEQ より前 ||
     1056         *     前回ウィンドを更新した SEQ (snd_wl1) が SEQ と同じ &&
     1057         *     (前回ウィンドを更新した ACK (snd_wl2) が ACK より前 ||
     1058         *      (前回ウィンドを更新した ACK (snd_wl2) が ACK と同じ &&
     1059         *       WIN が相手の受信可能ウィンドサイズ (snd_wnd) より大きい
    10981060         *       )
    10991061         *      )
     
    11111073
    11121074                if (cep->snd_wnd > cep->max_sndwnd)
    1113                         /* 今までの最大送信ウィンドサイズを更新する。*/
     1075                        /* 今までの最大送信ウィンドサイズを更新する。*/
    11141076                        cep->max_sndwnd = cep->snd_wnd;
    11151077
     
    11191081
    11201082                        /*
    1121                          *  送信ウィンドバッファ用のネットワークバッファ割り当て中で、
    1122                          *  相手の受信ウィンドが空くのをå¾
    1123 ã£ã¦ã„るときの処理
     1083                         *  送信ウィンドバッファ用のネットワークバッファ割り当て中で、
     1084                         *  相手の受信ウィンドが空くのを待っているときの処理
    11241085                         */
    11251086                        if (cep->snd_wnd > 0) {
    11261087
    11271088                                /*
    1128                                  *  相手の受信ウィンドが空いたときは、
    1129                                  *  送信ウィンドバッファ用のネットワークバッファ割り当てを再開する。
     1089                                 *  相手の受信ウィンドが空いたときは、
     1090                                 *  送信ウィンドバッファ用のネットワークバッファ割り当てを再開する。
    11301091                                 */
    11311092                                cep->flags = (cep->flags & ~TCP_CEP_FLG_WBCS_MASK)
     
    11441105
    11451106/*
    1146  *  proc_urg -- 緊急データつきのセグメントの処理
     1107 *  proc_urg -- 緊急データつきのセグメントの処理
    11471108 */
    11481109
     
    11551116            TCP_FSM_HAVE_RCVD_FIN(cep->fsm_state) == 0) {
    11561117
    1157                 /* 緊急データつきのセグメントの処理 */
     1118                /* 緊急データつきのセグメントの処理 */
    11581119
    11591120                NET_COUNT_TCP(net_count_tcp[NC_TCP_RECV_URG_SEGS], 1);
     
    11611122
    11621123                        /*
    1163                          *  緊急ポインタの位置が受信ウィンドバッファの
    1164                          *  範囲をè¶
    1165 ãˆã‚‹ã¨ãã¯ä½•ã‚‚しない。
     1124                         *  緊急ポインタの位置が受信ウィンドバッファの
     1125                         *  範囲を超えるときは何もしない。
    11661126                         */
    11671127                        tcph->urp    = 0;
     
    11701130
    11711131                if (SEQ_GT(tcph->seq + tcph->urp, cep->rcv_up))
    1172                         /* 緊急ポインタが更新されたときの処理 */
     1132                        /* 緊急ポインタが更新されたときの処理 */
    11731133                        cep->rcv_up = tcph->seq + tcph->urp;
    11741134
    1175                 if ((tcph->flags & TCP_FLG_URG) && (tcph->urp + TCP_CFG_URG_OFFSET) < tcph->sum) {      /* tcph->sum は TCP の SDU 長 */
     1135                if ((tcph->flags & TCP_FLG_URG) && (tcph->urp + TCP_CFG_URG_OFFSET) < tcph->sum) {      /* tcph->sum は TCP の SDU 長 */
    11761136
    11771137                        /*
    1178                          *  緊急ポインタの位置が、今回受信したセグメントå†
    1179 ã®å ´åˆã¯ã€
    1180                          *  コールバック関数を呼び出す。
     1138                         *  緊急ポインタの位置が、今回受信したセグメント内の場合は、
     1139                         *  コールバック関数を呼び出す。
    11811140                         */
    11821141                        cep->urg_tcph = tcph;
     
    12011160
    12021161                        if (cep->urg_tcph != NULL) {
    1203                                 /* コールバック関数å†
    1204 ã§ tcp_rcv_oob() を呼出さなかった。*/
     1162                                /* コールバック関数内で tcp_rcv_oob() を呼出さなかった。*/
    12051163                                cep->urg_tcph = NULL;
    12061164                                tcph->urp = 0;
     
    12081166                        else {
    12091167                                /*
    1210                                  *  コールバック関数å†
    1211 ã§ tcp_rcv_oob() を呼出した時は、
    1212                                  *  SDU 長の補正値を設定する。
     1168                                 *  コールバック関数内で tcp_rcv_oob() を呼出した時は、
     1169                                 *  SDU 長の補正値を設定する。
    12131170                                 */
    12141171                                tcph->urp = 1;
     
    12371194
    12381195/*
    1239  *  drop_after_ack -- 受信セグメントを破棄した後、ACK を返す (注意: 名前とは合っていない)。
     1196 *  drop_after_ack -- 受信セグメントを破棄した後、ACK を返す (注意: 名前とは合っていない)。
    12401197 *
    1241  *    戻り値:
    1242  *      RET_RETURN      正常、リターンする。
    1243  *      RET_RST_DROP    エラー、RST を送信し、セグメントを破棄する。
     1198 *    戻り値:
     1199 *      RET_RETURN      正常、リターンする。
     1200 *      RET_RST_DROP    エラー、RST を送信し、セグメントを破棄する。
    12441201 */
    12451202
     
    12501207
    12511208        /*
    1252          *    SYN 受信状æ
    1253 ‹ã§ã€ACK が送達確認されていない最小送信 SEQ (snd_una) より
    1254          *    前の値か、送信された最大 SEQ (snd_max) より後の値の場合は、相手に RST を
    1255          *    送って終了する。これは、"LAND" DoS 攻撃への防御であり、偽造された SYN
    1256          *    セグメントを送信しつづけるポート間での ACK ストームを防ぐ。
     1209         *    SYN 受信状態で、ACK が送達確認されていない最小送信 SEQ (snd_una) より
     1210         *    前の値か、送信された最大 SEQ (snd_max) より後の値の場合は、相手に RST を
     1211         *    送って終了する。これは、"LAND" DoS 攻撃への防御であり、偽造された SYN
     1212         *    セグメントを送信しつづけるポート間での ACK ストームを防ぐ。
    12571213         */
    12581214        if (cep->fsm_state == TCP_FSM_SYN_RECVD && (tcph->flags & TCP_FLG_ACK) &&
     
    12631219        syscall(rel_net_buf(input));
    12641220
    1265         /* 送信を指示する。*/
     1221        /* 送信を指示する。*/
    12661222        cep->flags |=  TCP_CEP_FLG_ACK_NOW | TCP_CEP_FLG_POST_OUTPUT;
    12671223        sig_sem(SEM_TCP_POST_OUTPUT);
     
    12701226
    12711227/*
    1272  *  close_connection -- コネクション開放処理、相手から FIN を受信した。
     1228 *  close_connection -- コネクション開放処理、相手から FIN を受信した。
    12731229 */
    12741230
     
    12951251
    12961252        switch (cep->fsm_state) {
    1297         case TCP_FSM_SYN_RECVD:         /* SYN を受信し、SYN 送信済み  */
    1298         case TCP_FSM_ESTABLISHED:       /* コネクション開設完了               */
     1253        case TCP_FSM_SYN_RECVD:         /* SYN を受信し、SYN 送信済み    */
     1254        case TCP_FSM_ESTABLISHED:       /* コネクション開設完了           */
    12991255                cep->fsm_state = TCP_FSM_CLOSE_WAIT;
    13001256                syscall(set_flg(cep->snd_flgid, TCP_CEP_EVT_RWBUF_READY));
    13011257                break;
    13021258
    1303         case TCP_FSM_FIN_WAIT_1:        /* APP が終了、FIN 送信済み、ACK å¾
    1304 ã¡ */
     1259        case TCP_FSM_FIN_WAIT_1:        /* APP が終了、FIN 送信済み、ACK 待ち */
    13051260                cep->fsm_state = TCP_FSM_CLOSING;
    13061261                break;
    13071262
    1308         case TCP_FSM_FIN_WAIT_2:        /* 相手からの FIN å¾
    1309 ã¡ */
     1263        case TCP_FSM_FIN_WAIT_2:        /* 相手からの FIN 待ち */
    13101264                cep->fsm_state = TCP_FSM_TIME_WAIT;
    13111265                tcp_cancel_timers(cep);
     
    13131267
    13141268                /*
    1315                  *  FIN WAIT 2 状æ
    1316 ‹ã§ã¯ã€
    1317                  *  受信は可能であるが、すでに送信は終了している。
    1318                  *  相手の送信も終了したので、å
    1319 ¥åŠ›ã‚¿ã‚¹ã‚¯ã®ã¿èµ·åºŠã™ã‚‹ã€‚
     1269                 *  FIN WAIT 2 状態では、
     1270                 *  受信は可能であるが、すでに送信は終了している。
     1271                 *  相手の送信も終了したので、入力タスクのみ起床する。
    13201272                 */
    13211273                syscall(set_flg(cep->snd_flgid, TCP_CEP_EVT_SWBUF_READY));
     
    13231275#if defined(NUM_TCP_TW_CEP_ENTRY) && NUM_TCP_TW_CEP_ENTRY > 0
    13241276
    1325                 /* 相手からの FIN に対して応答を返す。*/
     1277                /* 相手からの FIN に対して応答を返す。*/
    13261278                tcp_respond(NULL, cep, cep->rcv_nxt, cep->snd_una,
    13271279                            cep->rbufsz - cep->rwbuf_count, TCP_FLG_ACK);
     
    13301282
    13311283                /*
    1332                  *  å¿
    1333 è¦ãªæƒ
    1334 å ±ã‚’ Time Wait 用 TCP 通信端点に移して、
    1335                  *  標準の TCP 通信端点を開放する。
     1284                 *  必要な情報を Time Wait 用 TCP 通信端点に移して、
     1285                 *  標準の TCP 通信端点を開放する。
    13361286                 */
    13371287                tcp_move_twcep(cep);
     
    13411291                break;
    13421292
    1343         case TCP_FSM_TIME_WAIT:         /* 相手からの FIN 受信済み、時間å¾
    1344 ã¡ */
     1293        case TCP_FSM_TIME_WAIT:         /* 相手からの FIN 受信済み、時間待ち */
    13451294                cep->timer[TCP_TIM_2MSL] = 2 * TCP_TVAL_MSL;
    13461295                break;
     
    13491298
    13501299/*
    1351  *  tcp_input -- TCP のå
    1352 ¥åŠ›é–¢æ•°
     1300 *  tcp_input -- TCP の入力関数
    13531301 *
    1354  *      注意: input には IF ヘッダと IP ヘッダがå
    1355 ˆé ­ã«ã‚る。
     1302 *      注意: input には IF ヘッダと IP ヘッダが先頭にある。
    13561303 */
    13571304
     
    13791326        NET_COUNT_MIB(tcp_stats.tcpInSegs, 1);
    13801327
    1381         /* ヘッダ長をチェックする。*/
     1328        /* ヘッダ長をチェックする。*/
    13821329        if (input->len < IF_IP_TCP_HDR_SIZE(input)) {
    13831330                NET_COUNT_TCP(net_count_tcp[NC_TCP_RECV_BAD_HEADERS], 1);
     
    13871334        tcph = GET_TCP_HDR(input, *offp);
    13881335
    1389         seglen  = input->len - *offp;                           /* TCP のセグメント長 */
     1336        seglen  = input->len - *offp;                           /* TCP のセグメント長 */
    13901337
    13911338        if (IN_CKSUM(input, IPPROTO_TCP, *offp, (uint_t)seglen) != 0) {
     
    13941341                }
    13951342
    1396         /* TCP ヘッダ長をチェックする。*/
     1343        /* TCP ヘッダ長をチェックする。*/
    13971344        if (TCP_HDR_LEN(tcph->doff) < TCP_HDR_SIZE || TCP_HDR_LEN(tcph->doff) > seglen) {
    13981345                NET_COUNT_TCP(net_count_tcp[NC_TCP_RECV_BAD_HEADERS], 1);
    13991346                goto drop;
    14001347                }
    1401         tcph->sum = seglen - TCP_HDR_LEN(tcph->doff);           /* ここから tcph->sum は TCP の SDU 長 */
     1348        tcph->sum = seglen - TCP_HDR_LEN(tcph->doff);           /* ここから tcph->sum は TCP の SDU 長 */
    14021349
    14031350        /*
    1404          *  SYN と FIN の両ビットがセットされていれば破棄する。nmap 等の対策
    1405          *  ただし、RFC1644 T/TCP 拡張機能と競合する。
     1351         *  SYN と FIN の両ビットがセットされていれば破棄する。nmap 等の対策
     1352         *  ただし、RFC1644 T/TCP 拡張機能と競合する。
    14061353         */
    14071354        if ((tcph->flags & (TCP_FLG_SYN | TCP_FLG_FIN)) == (TCP_FLG_SYN | TCP_FLG_FIN))
    14081355                goto drop;
    14091356
    1410         /* ネットワークオーダーからホストオーダーに変換する。*/
     1357        /* ネットワークオーダーからホストオーダーに変換する。*/
    14111358
    14121359        NTOHL(tcph->seq);
     
    14221369
    14231370        /*
    1424          *  状æ
    1425 ‹ãŒ Time Wait 中の CEP を探索する。
     1371         *  状態が Time Wait 中の CEP を探索する。
    14261372         */
    14271373        twcep = tcp_find_twcep(input, *offp);
    14281374        if (twcep != NULL) {
    14291375
    1430                 if (tcph->flags & TCP_FLG_RST)          /* RST フラグを受信したときは無視する。*/
     1376                if (tcph->flags & TCP_FLG_RST)          /* RST フラグを受信したときは無視する。*/
    14311377                        goto drop;
    14321378                else {
    14331379
    14341380                        /*
    1435                          *    TCP 通信端点が Time Wait の時、相手ホストからセグメントが来たときは、
    1436                          *    相手ホストの FIN に対する自ホストの ACK セグメントが途中で
    1437                          *    損失したことを意味しているので、ACK セグメントを再送する。
     1381                         *    TCP 通信端点が Time Wait の時、相手ホストからセグメントが来たときは、
     1382                         *    相手ホストの FIN に対する自ホストの ACK セグメントが途中で
     1383                         *    損失したことを意味しているので、ACK セグメントを再送する。
    14381384                         */
    14391385
    1440                         /* ホストオーダーからネットワークオーダーに戻す。*/
     1386                        /* ホストオーダーからネットワークオーダーに戻す。*/
    14411387                        HTONS(tcph->sport);
    14421388                        HTONS(tcph->dport);
     
    14471393                }
    14481394        else
    1449                 /* 標準の TCP 通信端点を得る。*/
     1395                /* 標準の TCP 通信端点を得る。*/
    14501396                cep = tcp_find_cep(input, *offp);
    14511397
    14521398#else   /* of #if defined(NUM_TCP_TW_CEP_ENTRY) && NUM_TCP_TW_CEP_ENTRY > 0 */
    14531399
    1454         /* TCP 通信端点を得る。*/
     1400        /* TCP 通信端点を得る。*/
    14551401        cep = tcp_find_cep(input, *offp);
    14561402
     
    14581404
    14591405        /*
    1460          *  TCP 通信端点がない場合と CEP の状æ
    1461 ‹ãŒã‚¯ãƒ­ãƒ¼ã‚ºãªã‚‰ç ´æ£„する。
     1406         *  TCP 通信端点がない場合と CEP の状態がクローズなら破棄する。
    14621407         */
    14631408        if (cep == NULL) {
     
    14771422
    14781423        /*
    1479          *  コネクション開設済みでセグメントを受信したときは、
    1480          *  アイドル時間と生存確認タイマをリセットする。
     1424         *  コネクション開設済みでセグメントを受信したときは、
     1425         *  アイドル時間と生存確認タイマをリセットする。
    14811426         */
    14821427        cep->idle = 0;
     
    14851430                }
    14861431
    1487         /* CEP の状æ
    1488 ‹ãŒ LISTEN 以外の時は、オプションを処理する。*/
     1432        /* CEP の状態が LISTEN 以外の時は、オプションを処理する。*/
    14891433        if (cep->fsm_state != TCP_FSM_LISTEN)
    14901434                parse_option(tcph, cep);
    14911435
    14921436        /*
    1493          *  受信可能ウィンドサイズを計算する。
     1437         *  受信可能ウィンドサイズを計算する。
    14941438         *
    1495          *  rcv_nxt:     å—信を期å¾
    1496 ã—ている最小の SEQ(これ以前は受信済み)
    1497          *  rcv_adv:     å—信を期å¾
    1498 ã—ている最大の SEQ
    1499          *  rbufsz:      受信ウィンドバッファサイズ
    1500          *  rwbuf_count:  受信ウィンドバッファにあるデータ量
    1501          *  tcph->sum:   ä»Šå›žå—信した SDU サイズ
     1439         *  rcv_nxt:     受信を期待している最小の SEQ(これ以前は受信済み)
     1440         *  rcv_adv:     受信を期待している最大の SEQ
     1441         *  rbufsz:      受信ウィンドバッファサイズ
     1442         *  rwbuf_count:  受信ウィンドバッファにあるデータ量
     1443         *  tcph->sum:   今回受信した SDU サイズ
    15021444         *
    1503          *  今回受信したセグメントを順序整列キューに連結する
    1504          *  可能性があるので tcph->sum を考æ
    1505 ®ã™ã‚‹ã€‚
     1445         *  今回受信したセグメントを順序整列キューに連結する
     1446         *  可能性があるので tcph->sum を考慮する。
    15061447         *
    15071448         */
     
    15141455                cep->rcv_wnd = cep->rcv_adv - cep->rcv_nxt;
    15151456
    1516         /* CEP の状æ
    1517 ‹ã«ã‚ˆã‚Šå‡¦ç†ã‚’行う。*/
    1518 
    1519         if (cep->fsm_state == TCP_FSM_LISTEN) {         /* 受動オープン (LISTEN) の処理。*/
     1457        /* CEP の状態により処理を行う。*/
     1458
     1459        if (cep->fsm_state == TCP_FSM_LISTEN) {         /* 受動オープン (LISTEN) の処理。*/
    15201460                if ((ret = listening(input, cep, *offp, iss)) == RET_RST_DROP)
    15211461                        goto reset_drop;
    15221462                else if (ret == RET_DROP)
    15231463                        goto drop;
    1524                 trim_length(tcph, cep);                 /* 受信した SDU 長を調整する。*/
    1525 
    1526                 if (tcph->flags & TCP_FLG_ACK) {        /* ACK フラグの処理 */
     1464                trim_length(tcph, cep);                 /* 受信した SDU 長を調整する。*/
     1465
     1466                if (tcph->flags & TCP_FLG_ACK) {        /* ACK フラグの処理 */
    15271467                        if ((ret = proc_ack2(input, cep, *offp, &needoutput)) == RET_DROP)
    15281468                                goto drop;
     
    15331473                        }
    15341474                }
    1535         else if (cep->fsm_state == TCP_FSM_SYN_SENT) {  /* 能動オープン、SYN 送信済み        */
     1475        else if (cep->fsm_state == TCP_FSM_SYN_SENT) {  /* 能動オープン、SYN 送信済み      */
    15361476                if ((ret = syn_sent(tcph, cep)) == RET_RST_DROP)
    15371477                        goto reset_drop;
    15381478                else if (ret == RET_DROP)
    15391479                        goto drop;
    1540                 trim_length(tcph, cep);                 /* 受信した SDU 長を調整する。*/
    1541 
    1542                 if (tcph->flags & TCP_FLG_ACK) {        /* ACK フラグの処理 */
     1480                trim_length(tcph, cep);                 /* 受信した SDU 長を調整する。*/
     1481
     1482                if (tcph->flags & TCP_FLG_ACK) {        /* ACK フラグの処理 */
    15431483                        if ((ret = proc_ack2(input, cep, *offp, &needoutput)) == RET_DROP)
    15441484                                goto drop;
     
    15501490                }
    15511491        else {
    1552                 if (cep->fsm_state == TCP_FSM_SYN_RECVD) {      /* SYN を受信、SYN 送信済み     */
     1492                if (cep->fsm_state == TCP_FSM_SYN_RECVD) {      /* SYN を受信、SYN 送信済み     */
    15531493                        /*
    1554                          *  相手から受信確認が送られて来ても、
     1494                         *  相手から受信確認が送られて来ても、
    15551495                         *
    1556                          *    ACK <= 未確認の最小送信 SEQ (snd_una) &&
    1557                          *           é€ä¿¡ã—た最大     SEQ (snd_max) < ACK
     1496                         *    ACK <= 未確認の最小送信 SEQ (snd_una) &&
     1497                         *           送信した最大     SEQ (snd_max) < ACK
    15581498                         *
    1559                          *  なら、リセットを送ってセグメントを破棄する。
     1499                         *  なら、リセットを送ってセグメントを破棄する。
    15601500                         */
    15611501                        if ((tcph->flags & TCP_FLG_ACK) &&
     
    15661506
    15671507                /*
    1568                  *  RST フラグを受信したときの処理 (異常切断)
     1508                 *  RST フラグを受信したときの処理 (異常切断)
    15691509                 */
    15701510                if (tcph->flags & TCP_FLG_RST) {
     
    15721512                            SEQ_LT(tcph->seq, cep->last_ack_sent + cep->rcv_wnd)) {
    15731513                                /*
    1574                                  *  受信したセグメントの SEQ が、最後に送信した ACK (last_ack_sent)
    1575                                  *  から、受信ウインドウサイズまでの間の処理
     1514                                 *  受信したセグメントの SEQ が、最後に送信した ACK (last_ack_sent)
     1515                                 *  から、受信ウインドウサイズまでの間の処理
    15761516                                 */
    15771517                                switch (cep->fsm_state) {
    1578                                 case TCP_FSM_SYN_RECVD:         /* SYN を受信し、SYN 送信済み          */
    1579 
    1580                                         cep->net_error = EV_CNNRF;      /* 接続不能 */
     1518                                case TCP_FSM_SYN_RECVD:         /* SYN を受信し、SYN 送信済み            */
     1519
     1520                                        cep->net_error = EV_CNNRF;      /* 接続不能 */
    15811521                                        cep->error     = E_CLS;
    15821522                                        NET_COUNT_TCP(net_count_tcp[NC_TCP_RECV_RSTS], 1);
     
    15851525                                        break;
    15861526
    1587                                 case TCP_FSM_ESTABLISHED:       /* コネクション開設完了                       */
    1588                                 case TCP_FSM_CLOSE_WAIT:        /* FIN 受信、クローズå¾
    1589 ã¡             */
     1527                                case TCP_FSM_ESTABLISHED:       /* コネクション開設完了                   */
     1528                                case TCP_FSM_CLOSE_WAIT:        /* FIN 受信、クローズ待ち                */
    15901529                                        NET_COUNT_MIB(tcp_stats.tcpEstabResets, 1);
    15911530                                        /* fallthrough */
    15921531
    1593                                 case TCP_FSM_FIN_WAIT_1:        /* 終了して、FIN 送信済み              */
    1594                                 case TCP_FSM_FIN_WAIT_2:        /* 終了、FIN 伝達確認受信、FINå¾
    1595 ã¡     */
    1596 
    1597                                         cep->net_error = EV_CNRST;      /* 接続リセット */
     1532                                case TCP_FSM_FIN_WAIT_1:        /* 終了して、FIN 送信済み                */
     1533                                case TCP_FSM_FIN_WAIT_2:        /* 終了、FIN 伝達確認受信、FIN待ち  */
     1534
     1535                                        cep->net_error = EV_CNRST;      /* 接続リセット */
    15981536                                        cep->error     = E_CLS;
    15991537                                        NET_COUNT_TCP(net_count_tcp[NC_TCP_RECV_RSTS], 1);
    16001538                                        /* no break; */
    16011539
    1602                                 case TCP_FSM_CLOSING:           /* 終了、FIN 交換済み、ACK å¾
    1603 ã¡     */
    1604                                 case TCP_FSM_LAST_ACK:          /* FIN 受信、終了、ACK å¾
    1605 ã¡     */
     1540                                case TCP_FSM_CLOSING:           /* 終了、FIN 交換済み、ACK 待ち   */
     1541                                case TCP_FSM_LAST_ACK:          /* FIN 受信、終了、ACK 待ち     */
    16061542
    16071543                                        cep = tcp_close(cep);
     
    16131549
    16141550                /*
    1615                  *  CEP の状æ
    1616 ‹ãŒ SYN を受信し、SYN 送信済みの場合は、
    1617                  *  受信ウィンドに収まるようにデータを
    1618                  *  調整する前に、この接続によるパケットかどうかを検証する。
     1551                 *  CEP の状態が SYN を受信し、SYN 送信済みの場合は、
     1552                 *  受信ウィンドに収まるようにデータを
     1553                 *  調整する前に、この接続によるパケットかどうかを検証する。
    16191554                 *
    1620                  *    受信した相手の SEQ < 相手の SEQ の初期値 (irs)
     1555                 *    受信した相手の SEQ < 相手の SEQ の初期値 (irs)
    16211556                 *
    1622                  *  これは、"LAND" DoS 攻撃の防御である。
     1557                 *  これは、"LAND" DoS 攻撃の防御である。
    16231558                 */
    16241559                if (cep->fsm_state == TCP_FSM_SYN_RECVD && SEQ_LT(tcph->seq, cep->irs)) {
     
    16271562
    16281563                /*
    1629                  *  受信を期å¾
    1630 ã—ている最小の SEQ (rcv_nxt) - 受信した相手の SEQ が
    1631                  *  正なら、rcv_nxt 以前のデータはすでに受信しているので、その部分を
    1632                  *  削除する。
     1564                 *  受信を期待している最小の SEQ (rcv_nxt) - 受信した相手の SEQ が
     1565                 *  正なら、rcv_nxt 以前のデータはすでに受信しているので、その部分を
     1566                 *  削除する。
    16331567                 *                           <---------- rcv_wnd --------->
    16341568                 *                           rcv_nxt                      rcv_nxt + rcv_wnd
     
    16421576                 *           ^                      ^
    16431577                 *           seq                    seq + len
    1644                  *           <---------------> 削除する。
     1578                 *           <---------------> 削除する。
    16451579                 */
    16461580                todrop = cep->rcv_nxt - tcph->seq;
     
    16481582
    16491583                        /*
    1650                          *  SYN フラグがついているときは、その分 (1 オクテット)
    1651                          *  SEQ を進め、緊急ポインタと削除する長さを調整する。
     1584                         *  SYN フラグがついているときは、その分 (1 オクテット)
     1585                         *  SEQ を進め、緊急ポインタと削除する長さを調整する。
    16521586                         */
    16531587                        if (tcph->flags & TCP_FLG_SYN) {
     
    16621596
    16631597                        /*
    1664                          *  削除する長さが SDU より長い、つまり、受信を期å¾
    1665 ã—ている
    1666                          *  最小の SEQ (rcv_nxt) に達していないか、
    1667                          *  削除する長さが SDU と同じで、FIN フラグがついてなければ
    1668                          *  å
    1669 ¨ã¦å‰Šé™¤ã™ã‚‹ã€‚
     1598                         *  削除する長さが SDU より長い、つまり、受信を期待している
     1599                         *  最小の SEQ (rcv_nxt) に達していないか、
     1600                         *  削除する長さが SDU と同じで、FIN フラグがついてなければ
     1601                         *  全て削除する。
    16701602                         */
    1671                         if ( todrop >  tcph->sum ||             /* tcph->sum は TCP の SDU 長 */
     1603                        if ( todrop >  tcph->sum ||             /* tcph->sum は TCP の SDU 長 */
    16721604                            (todrop == tcph->sum && (tcph->flags & TCP_FLG_FIN) == 0)) {
    16731605                                tcph->flags &= ~TCP_FLG_FIN;
    16741606                                cep->flags |= TCP_CEP_FLG_ACK_NOW;
    1675                                 todrop = tcph->sum;             /* tcph->sum は TCP の SDU 長 */
     1607                                todrop = tcph->sum;             /* tcph->sum は TCP の SDU 長 */
    16761608                                }
    16771609
    16781610                        /*
    1679                          *  SDU を前に詰める。
     1611                         *  SDU を前に詰める。
    16801612                         */
    1681                         if (todrop < tcph->sum) {               /* tcph->sum は TCP の SDU 長 */
     1613                        if (todrop < tcph->sum) {               /* tcph->sum は TCP の SDU 長 */
    16821614                                memcpy(GET_TCP_SDU(input, *offp),
    16831615                                       GET_TCP_SDU(input, *offp) + todrop, (size_t)(tcph->sum - todrop));
     
    16851617
    16861618                        /*
    1687                          *  SEQ と SDU 長を調整する。
     1619                         *  SEQ と SDU 長を調整する。
    16881620                         */
    16891621                        tcph->seq +=     todrop;
    1690                         tcph->sum -= (uint16_t)todrop;  /* tcph->sum は TCP の SDU 長 */
     1622                        tcph->sum -= (uint16_t)todrop;  /* tcph->sum は TCP の SDU 長 */
    16911623
    16921624                        /*
    1693                          *  緊急ポインタを調整する。
     1625                         *  緊急ポインタを調整する。
    16941626                         */
    16951627                        if (tcph->urp > todrop)
     
    17041636
    17051637                /* 
    1706                  *  もしユーザタスクが終了した後に、データを受信した
    1707                  *  場合は、RST を送る。
    1708                  */
    1709                 if (cep->fsm_state == TCP_FSM_LAST_ACK && tcph->sum > 0) {      /* tcph->sum は TCP の SDU 長 */
     1638                 *  もしユーザタスクが終了した後に、データを受信した
     1639                 *  場合は、RST を送る。
     1640                 */
     1641                if (cep->fsm_state == TCP_FSM_LAST_ACK && tcph->sum > 0) {      /* tcph->sum は TCP の SDU 長 */
    17101642                        cep = tcp_close(cep);
    17111643                        goto reset_drop;
     
    17131645
    17141646                /*
    1715                  *  受信セグメントが受信ウィンドをè¶
    1716 ãˆã‚‹å ´åˆã¯ã€
    1717                  *  è¶
    1718 ãˆãŸåˆ†ã‚’削る。
     1647                 *  受信セグメントが受信ウィンドを超える場合は、
     1648                 *  超えた分を削る。
    17191649                 *
    17201650                 *       <---------- rcv_wnd --------->
     
    17291659                 *                    ^                      ^
    17301660                 *                    seq                    seq + len
    1731                  *                                     <-----> 削除する。
    1732                  */
    1733                 todrop = (tcph->seq + tcph->sum) - (cep->rcv_nxt + cep->rcv_wnd);       /* tcph->sum は TCP の SDU 長 */
     1661                 *                                     <-----> 削除する。
     1662                 */
     1663                todrop = (tcph->seq + tcph->sum) - (cep->rcv_nxt + cep->rcv_wnd);       /* tcph->sum は TCP の SDU 長 */
    17341664                if (todrop > 0) {
    1735                         if (todrop > tcph->sum) {                                       /* tcph->sum は TCP の SDU 長 */
     1665                        if (todrop > tcph->sum) {                                       /* tcph->sum は TCP の SDU 長 */
    17361666                                /*
    1737                                  *  受信した SDU のå
    1738 ¨ã¦ãŒå—信ウィンドをè¶
    1739 ãˆã‚‹å ´åˆã€‚
     1667                                 *  受信した SDU の全てが受信ウィンドを超える場合。
    17401668                                 *
    1741                                  *  TIME_WAIT 中に、新たな接続要求を受信したら
    1742                                  *  古い接続を破棄し、新たな接続を開始する。
    1743                                  *  ただし、SEQ は前より進んでいなければならない。
     1669                                 *  TIME_WAIT 中に、新たな接続要求を受信したら
     1670                                 *  古い接続を破棄し、新たな接続を開始する。
     1671                                 *  ただし、SEQ は前より進んでいなければならない。
    17441672                                 */
    17451673                                if ((tcph->flags & TCP_FLG_SYN) &&
     
    17531681
    17541682                                /*
    1755                                  *  受信ウィンドが 0 で、受信した SEQ と
    1756                                  *  受信を期å¾
    1757 ã—ている最小の SEQ が一致したときは
    1758                                  *  ACK を返す。それ以外はデータを破棄し、ACK を返す。
     1683                                 *  受信ウィンドが 0 で、受信した SEQ と
     1684                                 *  受信を期待している最小の SEQ が一致したときは
     1685                                 *  ACK を返す。それ以外はデータを破棄し、ACK を返す。
    17591686                                 */
    17601687                                if (cep->rcv_wnd == 0 && (tcph->seq == cep->rcv_nxt || tcph->sum == 0)) {
     
    17671694                                        }
    17681695                                }
    1769                         tcph->sum -= (uint16_t)todrop;  /* tcph->sum は TCP の SDU 長 */
     1696                        tcph->sum -= (uint16_t)todrop;  /* tcph->sum は TCP の SDU 長 */
    17701697                        tcph->flags &= ~(TCP_FLG_PUSH | TCP_FLG_FIN);
    17711698                        }
    17721699
    17731700                /*
    1774                  *  もし、SYN がセットされていれば、
    1775                  *  エラーなので RST を送り、接続を破棄する。
     1701                 *  もし、SYN がセットされていれば、
     1702                 *  エラーなので RST を送り、接続を破棄する。
    17761703                 */
    17771704                if (tcph->flags & TCP_FLG_SYN) {
     
    17821709
    17831710                /*
    1784                  *  もし、ACK がセットされていない場合は、
    1785                  *  状æ
    1786 ‹ãŒ SYN 受信済みか
    1787                  *  SYN を送信しようとしていれば、処理を続けるが、
    1788                  *  それ以外はセグメントを破棄して終了する。
     1711                 *  もし、ACK がセットされていない場合は、
     1712                 *  状態が SYN 受信済みか
     1713                 *  SYN を送信しようとしていれば、処理を続けるが、
     1714                 *  それ以外はセグメントを破棄して終了する。
    17891715                 */
    17901716                if ((tcph->flags & TCP_FLG_ACK) == 0) {
     
    17941720                else {
    17951721                        /*
    1796                          * ACK の処理
     1722                         * ACK の処理
    17971723                         */
    17981724                        ret = proc_ack1(input, cep, *offp, &needoutput);
     
    18081734/* step 6 */
    18091735
    1810         /* 送信ウィンドを更新する。*/
     1736        /* 送信ウィンドを更新する。*/
    18111737        if (update_wnd(tcph, cep) == true)
    18121738                needoutput = true;
    18131739
    1814         /* 緊急データを処理する。*/
     1740        /* 緊急データを処理する。*/
    18151741        proc_urg(tcph, cep);
    18161742
     
    18181744
    18191745        /*
    1820          *  SDU があるか、FIN を未受信の状æ
    1821 ‹ã§ã€æœ€åˆã« FIN を受信したとき、
    1822          *  受信セグメントキューに net_buf を追加する。
    1823          *  それ以外の場合は、セグメントを破棄する。
     1746         *  SDU があるか、FIN を未受信の状態で、最初に FIN を受信したとき、
     1747         *  受信セグメントキューに net_buf を追加する。
     1748         *  それ以外の場合は、セグメントを破棄する。
    18241749         */
    18251750        flags = tcph->flags;
    1826         if ((tcph->sum > 0 || (flags & TCP_FLG_FIN)) &&         /* tcph->sum は TCP の SDU 長 */
     1751        if ((tcph->sum > 0 || (flags & TCP_FLG_FIN)) &&         /* tcph->sum は TCP の SDU 長 */
    18271752            TCP_FSM_HAVE_RCVD_FIN(cep->fsm_state) == 0) {
    18281753                flags = reassemble(input, cep, *offp, flags);
     
    18341759
    18351760        /*
    1836          *  FIN を受信したらコネクションをクローズする。
     1761         *  FIN を受信したらコネクションをクローズする。
    18371762         */
    18381763        if (flags & TCP_FLG_FIN)
    18391764                close_connection(cep, &needoutput);
    18401765
    1841         /* 出力を行った後終了する。*/
     1766        /* 出力を行った後終了する。*/
    18421767        if (needoutput == true || (cep->flags & TCP_CEP_FLG_ACK_NOW)) {
    1843                 /* 送信を指示する。*/
     1768                /* 送信を指示する。*/
    18441769                cep->flags |=  TCP_CEP_FLG_POST_OUTPUT;
    18451770                sig_sem(SEM_TCP_POST_OUTPUT);
     
    18501775reset_drop:
    18511776        /*
    1852          *  RST 送信処理
     1777         *  RST 送信処理
    18531778         */
    18541779
     
    18561781                goto drop;
    18571782
    1858         /* ホストオーダーからネットワークオーダーに戻す。*/
     1783        /* ホストオーダーからネットワークオーダーに戻す。*/
    18591784
    18601785        HTONS(tcph->sport);
     
    18701795        else {
    18711796                if (tcph->flags & TCP_FLG_SYN)
    1872                         tcph->sum ++;           /* tcph->sum は SDU 長 */
     1797                        tcph->sum ++;           /* tcph->sum は SDU 長 */
    18731798                tcp_respond(input, cep, tcph->seq + tcph->sum, 0, rbfree, TCP_FLG_RST | TCP_FLG_ACK);
    18741799                }
    18751800
    1876         /* input は tcp_respoond で返却される。*/
     1801        /* input は tcp_respoond で返却される。*/
    18771802        NET_COUNT_TCP(net_count_tcp[NC_TCP_SEND_RSTS], 1);
    18781803        NET_COUNT_MIB(tcp_stats.tcpOutRsts, 1);
  • asp3_gr_sakura/trunk/tinet/netinet/tcp_output.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    125113
    126114/*
    127  *  関数
     115 *  関数
    128116 */
    129117
     
    132120
    133121/*
    134  *  変数
     122 *  変数
    135123 */
    136124
    137 /* 出力時のフラグを FSM 状æ
    138 ‹ã«ã‚ˆã‚Šé¸æŠžã™ã‚‹ãŸã‚ã®è¡¨ */
     125/* 出力時のフラグを FSM 状態により選択するための表 */
    139126
    140127const static uint8_t tcp_outflags[] = {
    141         TCP_FLG_RST | TCP_FLG_ACK,      /*  0, クローズ                             */
    142         0,                              /*  1, 受動オープン                       */
    143         TCP_FLG_SYN,                    /*  2, 能動オープン、SYN 送信済み    */
    144         TCP_FLG_SYN | TCP_FLG_ACK,      /*  3, SYM を受信し、SYN 送信済み      */
    145         TCP_FLG_ACK,                    /*  4, コネクション開設完了           */
    146         TCP_FLG_ACK,                    /*  5, FIN 受信、クローズå¾
    147 ã¡             */
    148         TCP_FLG_FIN | TCP_FLG_ACK,      /*  6, 終了して、FIN 送信済み          */
    149         TCP_FLG_FIN | TCP_FLG_ACK,      /*  7, 終了、FIN 交換済み、ACK å¾
    150 ã¡     */
    151         TCP_FLG_FIN | TCP_FLG_ACK,      /*  8, FIN 受信、終了、ACK å¾
    152 ã¡             */
    153         TCP_FLG_ACK,                    /*  9, 終了、FIN 伝達確認受信、FINå¾
    154 ã¡     */
    155         TCP_FLG_ACK,                    /* 10, 終了、時間å¾
    156 ã¡                     */
     128        TCP_FLG_RST | TCP_FLG_ACK,      /*  0, クローズ                             */
     129        0,                              /*  1, 受動オープン                   */
     130        TCP_FLG_SYN,                    /*  2, 能動オープン、SYN 送信済み  */
     131        TCP_FLG_SYN | TCP_FLG_ACK,      /*  3, SYM を受信し、SYN 送信済み        */
     132        TCP_FLG_ACK,                    /*  4, コネクション開設完了               */
     133        TCP_FLG_ACK,                    /*  5, FIN 受信、クローズ待ち            */
     134        TCP_FLG_FIN | TCP_FLG_ACK,      /*  6, 終了して、FIN 送信済み            */
     135        TCP_FLG_FIN | TCP_FLG_ACK,      /*  7, 終了、FIN 交換済み、ACK 待ち       */
     136        TCP_FLG_FIN | TCP_FLG_ACK,      /*  8, FIN 受信、終了、ACK 待ち         */
     137        TCP_FLG_ACK,                    /*  9, 終了、FIN 伝達確認受信、FIN待ち      */
     138        TCP_FLG_ACK,                    /* 10, 終了、時間待ち                  */
    157139        };
    158140
    159141/*
    160  *  send_segment -- TCP 出力処理
     142 *  send_segment -- TCP 出力処理
    161143 */
    162144
     
    188170
    189171        /*
    190          *  セグメント長を、相手の最大受信セグメント長に調整する。
    191          *  もし、è¶
    192 ãˆã¦ã„る場合は、è¶
    193 ãˆãŸåˆ†ã‚’後で送信する。
    194          *  このため、FIN ビットをクリアする。
     172         *  セグメント長を、相手の最大受信セグメント長に調整する。
     173         *  もし、超えている場合は、超えた分を後で送信する。
     174         *  このため、FIN ビットをクリアする。
    195175         *
    196          *  オリジナルでは、t_maxopd を制限長にしているが、
    197          *  本実è£
    198 ã§ã¯ã€ç›¸æ‰‹ã®æœ€å¤§å—信セグメントにする。
     176         *  オリジナルでは、t_maxopd を制限長にしているが、
     177         *  本実装では、相手の最大受信セグメントにする。
    199178         */
    200179        if (len + optlen > cep->maxseg) {
     
    205184
    206185        /*
    207          *  送信バッファが空になるときは PUSH フラグを設定する。
     186         *  送信バッファが空になるときは PUSH フラグを設定する。
    208187         */
    209188        if (len && doff + len >= cep->swbuf_count)
     
    216195
    217196                /*
    218                  *  送信ウインドバッファが開放されないようにして、
    219                  *  ネットワークバッファを出力に移す。
     197                 *  送信ウインドバッファが開放されないようにして、
     198                 *  ネットワークバッファを出力に移す。
    220199                 */
    221200                cep->swbufq->flags |= NB_FLG_NOREL_IFOUT;
     
    225204
    226205                /*
    227                  *  ACK 完了状æ
    228 ‹ã§ã€ã“の関数が呼び出されることもある。
    229                  *  この時は、len を 0 にして、処理を継続する。
     206                 *  ACK 完了状態で、この関数が呼び出されることもある。
     207                 *  この時は、len を 0 にして、処理を継続する。
    230208                 */
    231209                len = 0;
     
    254232
    255233                /*
    256                  *  送信ウインドバッファが開放されないようにして、
    257                  *  ネットワークバッファを出力に移す。
     234                 *  送信ウインドバッファが開放されないようにして、
     235                 *  ネットワークバッファを出力に移す。
    258236                 */
    259237                cep->swbufq->flags |= NB_FLG_NOREL_IFOUT;
     
    263241
    264242                /*
    265                  *  ACK 完了状æ
    266 ‹ã§ã€ã“の関数が呼び出されることもある。
    267                  *  この時は、len を 0 にして、処理を継続する。
     243                 *  ACK 完了状態で、この関数が呼び出されることもある。
     244                 *  この時は、len を 0 にして、処理を継続する。
    268245                 */
    269246                len = 0;
     
    290267
    291268        /*
    292          *  TCP オプションの設定を行う。
    293          *  本実è£
    294 ã§ã¯ã€æœ€å¤§ã‚»ã‚°ãƒ¡ãƒ³ãƒˆã‚µã‚¤ã‚ºã®ã¿è¨­å®šã™ã‚‹ã€‚
     269         *  TCP オプションの設定を行う。
     270         *  本実装では、最大セグメントサイズのみ設定する。
    295271         */
    296272        hdr_offset = IF_IP_TCP_HDR_OFFSET(output);
     
    309285                }
    310286
    311         /* TCP SDU に送信データをコピーする。*/
     287        /* TCP SDU に送信データをコピーする。*/
    312288
    313289        if (len > 0) {
     
    335311
    336312        /*
    337          * snd_max: 送信した最大 SEQ
    338          * snd_nxt: 次に送信する SEQ
     313         * snd_max: 送信した最大 SEQ
     314         * snd_nxt: 次に送信する SEQ
    339315         *
    340          *  相手から FIN を受信し、まだ FIN を送信していないか、
    341          *  送るデータがないときは、FIN を相手に届けるため、
    342          *  セグメントを送信するが、SEQ は進めない。
     316         *  相手から FIN を受信し、まだ FIN を送信していないか、
     317         *  送るデータがないときは、FIN を相手に届けるため、
     318         *  セグメントを送信するが、SEQ は進めない。
    343319         */
    344320        if ((flags & TCP_FLG_FIN) && (cep->flags & TCP_CEP_FLG_SENT_FIN) &&
     
    350326
    351327        /*
    352          *  SEQ、ACK、フラグの設定。
     328         *  SEQ、ACK、フラグの設定。
    353329         */
    354330        if (len > 0 || (flags & (TCP_FLG_SYN | TCP_FLG_FIN)) || cep->timer[TCP_TIM_PERSIST] != 0)
     
    358334
    359335        /*
    360          *  rcv_nxt: 受信を期å¾
    361 ã—ている最小の SEQ
     336         *  rcv_nxt: 受信を期待している最小の SEQ
    362337         */
    363338        tcph->ack   = htonl(cep->rcv_nxt);
     
    365340
    366341        /*
    367          *  受信ウィンドの計算
     342         *  受信ウィンドの計算
    368343         *
    369          *  rbufsz: 受信用バッファサイズ
    370          *  maxseg: 相手の最大受信セグメントサイズ       
     344         *  rbufsz: 受信用バッファサイズ
     345         *  maxseg: 相手の最大受信セグメントサイズ     
    371346         */
    372347        if (win < (cep->rbufsz / 4) && win < cep->maxseg)
     
    374349
    375350        /*
    376          *  rcv_nxt: 受信を期å¾
    377 ã—ている最小の SEQ
    378          *  rcv_adv: 受信を期å¾
    379 ã—ている最大の SEQ
     351         *  rcv_nxt: 受信を期待している最小の SEQ
     352         *  rcv_adv: 受信を期待している最大の SEQ
    380353         */
    381354        if ((int32_t)win < (int32_t)(cep->rcv_adv - cep->rcv_nxt))
     
    387360
    388361        /*
    389          *  緊急ポインタの設定
     362         *  緊急ポインタの設定
    390363         */
    391364        if (SEQ_GT(cep->snd_up, cep->snd_nxt)) {
     
    402375
    403376        /*
    404          *  チェックサムを設定する。
     377         *  チェックサムを設定する。
    405378         */
    406379        tcph->sum = 0;
    407380        tcph->sum = IN_CKSUM(output, IPPROTO_TCP, hdr_offset, GET_TCP_HDR_SIZE(output, hdr_offset) + len);
    408381
    409         /* ネットワークバッファ長を調整する。*/
     382        /* ネットワークバッファ長を調整する。*/
    410383        output->len = (uint16_t)(GET_IF_IP_TCP_HDR_SIZE(output, hdr_offset) + len);
    411384
    412385        /*
    413          *  タイマの調整
     386         *  タイマの調整
    414387         */
    415388        if ((cep->flags & TCP_CEP_FLG_FORCE) == 0 || cep->timer[TCP_TIM_PERSIST] == 0) {
     
    417390
    418391                /*
    419                  *  次に送信する SEQ (snd_nxt) を今回送信するデータ数分進める。
     392                 *  次に送信する SEQ (snd_nxt) を今回送信するデータ数分進める。
    420393                 */
    421394                if (flags & TCP_FLG_SYN)
     
    429402
    430403                /*
    431                  *  次に送信する SEQ (snd_nxt) が
    432                  *  送信した最大 SEQ (snd_max) より進んでいれば、
    433                  *  送信した最大 SEQ (snd_max) を更新する。
     404                 *  次に送信する SEQ (snd_nxt) が
     405                 *  送信した最大 SEQ (snd_max) より進んでいれば、
     406                 *  送信した最大 SEQ (snd_max) を更新する。
    434407                 */
    435408                if (SEQ_GT(cep->snd_nxt, cep->snd_max)) {
    436409                        cep->snd_max = cep->snd_nxt;
    437410                        /*
    438                          *  もし、往復時間計測を行っていなければ、
    439                          *  この送信に時間を合わせる。
     411                         *  もし、往復時間計測を行っていなければ、
     412                         *  この送信に時間を合わせる。
    440413                         */
    441414                        if (cep->rtt == 0) {
    442415                                cep->rtt   = 1;
    443                                 cep->rtseq = startseq;  /* 更新前の cep->snd_nxt */
    444                                 }
    445                         }
    446 
    447                 /*
    448                  *  もし設定されていないか、ACK または保留が発生していなければ、
    449                  *  再送タイマを設定する。設定する初期値は、
    450                  * 「滑らかな往復時間 + 2 × 往復時間変動」である。
    451                  *  再送時間のバックオフに使われるシフトカウントも初期化する。
     416                                cep->rtseq = startseq;  /* 更新前の cep->snd_nxt */
     417                                }
     418                        }
     419
     420                /*
     421                 *  もし設定されていないか、ACK または保留が発生していなければ、
     422                 *  再送タイマを設定する。設定する初期値は、
     423                 * 「滑らかな往復時間 + 2 × 往復時間変動」である。
     424                 *  再送時間のバックオフに使われるシフトカウントも初期化する。
    452425                 */
    453426                if (cep->timer[TCP_TIM_REXMT] == 0 && cep->snd_nxt != cep->snd_una) {
     
    461434
    462435        /*
    463          *  次に送信する SEQ (snd_nxt) + 今回送信するデータ数 (len) が
    464          *  送信した最大 SEQ (snd_max) より進んでいれば、
    465          *  送信した最大 SEQ (snd_max) を更新する。
     436         *  次に送信する SEQ (snd_nxt) + 今回送信するデータ数 (len) が
     437         *  送信した最大 SEQ (snd_max) より進んでいれば、
     438         *  送信した最大 SEQ (snd_max) を更新する。
    466439         */
    467440        else if (SEQ_GT(cep->snd_nxt + len, cep->snd_max))
     
    481454#endif  /* of #ifdef TCP_CFG_TRACE */
    482455
    483         /* ネットワーク層 (IP) の出力関数を呼び出す。*/
     456        /* ネットワーク層 (IP) の出力関数を呼び出す。*/
    484457        if ((error = IP_OUTPUT(output, TMO_TCP_OUTPUT)) != E_OK)
    485458                goto err_ret;
    486459
    487460        /*
    488          *  相手に伝えたウィンドウサイズ (win) が 0 以上で、
    489          *  受信を期å¾
    490 ã—ている最小の SEQ (rcv_nxt) + win が
    491          *  受信を期å¾
    492 ã—ている最大の SEQ (rcv_adv) より進んでいれば
    493          *  受信を期å¾
    494 ã—ている最大の SEQ を更新する。
     461         *  相手に伝えたウィンドウサイズ (win) が 0 以上で、
     462         *  受信を期待している最小の SEQ (rcv_nxt) + win が
     463         *  受信を期待している最大の SEQ (rcv_adv) より進んでいれば
     464         *  受信を期待している最大の SEQ を更新する。
    495465         */
    496466        if (win > 0 && SEQ_GT(cep->rcv_nxt + win, cep->rcv_adv)) {
     
    499469
    500470        /*
    501          *  最後に送信した ACK (last_ack_sent) を更新する。
     471         *  最後に送信した ACK (last_ack_sent) を更新する。
    502472         */
    503473        cep->last_ack_sent = cep->rcv_nxt;
    504474
    505475        /*
    506          *  フラグの設定を行う。
     476         *  フラグの設定を行う。
    507477         */
    508478        cep->flags &= ~(TCP_CEP_FLG_ACK_NOW | TCP_CEP_FLG_DEL_ACK);
     
    514484err_ret:
    515485        /*
    516          * 以下に関係しないフラグをクリアーする。
    517          * ・送受信ウィンドバッファの省コピー機能
    518          * ・動的な通信端点の生成・削除機能
     486         * 以下に関係しないフラグをクリアーする。
     487         * ・送受信ウィンドバッファの省コピー機能
     488         * ・動的な通信端点の生成・削除機能
    519489         */
    520490        cep->flags &= TCP_CEP_FLG_NOT_CLEAR;
     
    524494
    525495/*
    526  *  tcp_output -- TCP 出力処理
     496 *  tcp_output -- TCP 出力処理
    527497 */
    528498
     
    537507
    538508        /*
    539          *  snd_una: 未確認の最小送信 SEQ        または、確認された最大送信 SEQ
    540          *  snd_max: 送信した最大 SEQ
     509         *  snd_una: 未確認の最小送信 SEQ        または、確認された最大送信 SEQ
     510         *  snd_max: 送信した最大 SEQ
    541511         */
    542512        idle = (cep->snd_max == cep->snd_una);
    543513
    544514        /*
    545          *  idle:   ã‚¢ã‚¤ãƒ‰ãƒ«æ™‚é–“
    546          *  rxtcur: 現在の再送タイムアウト
     515         *  idle:   アイドル時間
     516         *  rxtcur: 現在の再送タイムアウト
    547517         */
    548518        if (idle && cep->idle >= cep->rxtcur)
    549519
    550520                /*
    551                  *  snd_cwnd: 輻輳ウィンドサイズ
    552                  *  maxseg  : 相手の最大受信セグメントサイズ
     521                 *  snd_cwnd: 輻輳ウィンドサイズ
     522                 *  maxseg  : 相手の最大受信セグメントサイズ
    553523                 *
    554                  *  長時間アイドルだったのでスロースタート制御に設定する。
     524                 *  長時間アイドルだったのでスロースタート制御に設定する。
    555525                 */
    556526                cep->snd_cwnd = cep->maxseg;
     
    560530
    561531                /*
    562                  *  snd_nxt: 次に送信する SEQ、この時点では、前回送信した SEQ
    563                  *  snd_una: 未確認の最小送信 SEQ、または確認された最大送信 SEQ
     532                 *  snd_nxt: 次に送信する SEQ、この時点では、前回送信した SEQ
     533                 *  snd_una: 未確認の最小送信 SEQ、または確認された最大送信 SEQ
    564534                 *
    565                  *  doff: 送信を開始するオフセット。
    566                  *                                    swbuf_count (送信バッファにあるオクテット数)
     535                 *  doff: 送信を開始するオフセット。
     536                 *                                    swbuf_count (送信バッファにあるオクテット数)
    567537                 *    0                               V
    568538                 *    +-------------------------------------------+
     
    570540                 *    +-------------------------------------------+
    571541                 *    ^               ^
    572                  *    |<------------->snd_nxt (前回送信した SEQ)
     542                 *    |<------------->snd_nxt (前回送信した SEQ)
    573543                 *    |       doff
    574                  *    snd_una (まだ確認されていない)
     544                 *    snd_una (まだ確認されていない)
    575545                 */
    576546                doff = (uint_t)(cep->snd_nxt - cep->snd_una);
    577547
    578548                /*
    579                  *  snd_wnd:  相手の受信可能ウィンドサイズ
    580                  *  snd_cwnd: 輻輳ウィンドサイズ
     549                 *  snd_wnd:  相手の受信可能ウィンドサイズ
     550                 *  snd_cwnd: 輻輳ウィンドサイズ
    581551                 *
    582                  *  win: どちらか小さいウィンドサイズに設定する。
     552                 *  win: どちらか小さいウィンドサイズに設定する。
    583553                 */
    584554                win   = cep->snd_wnd < cep->snd_cwnd ? cep->snd_wnd : cep->snd_cwnd;
    585555       
    586                 /* 出力フラグの設定 */
     556                /* 出力フラグの設定 */
    587557                flags = tcp_outflags[cep->fsm_state];
    588558                if (cep->flags & TCP_CEP_FLG_NEED_FIN)
     
    593563
    594564                        /*
    595                          *  もし、送信ウインドサイズ (win) が 0 なら 1 オクテット送信する。
    596                          *  そうでなければ、持続タイムアウトをキャンセルし、
    597                          *  再送信回数 (rxtshift) を 0 にする。
     565                         *  もし、送信ウインドサイズ (win) が 0 なら 1 オクテット送信する。
     566                         *  そうでなければ、持続タイムアウトをキャンセルし、
     567                         *  再送信回数 (rxtshift) を 0 にする。
    598568                         */
    599569                        if (win == 0) {
    600570
    601571                                /*
    602                                  *  doff:        送信するオクテット数。
    603                                  *  swbuf_count: 送信バッファの使用中サイズ
     572                                 *  doff:        送信するオクテット数。
     573                                 *  swbuf_count: 送信バッファの使用中サイズ
    604574                                 *
    605                                  *  送信バッファに残っているオクテットが、これから
    606                                  *  送信しようとしているオクテット数より多ければ
    607                                  *  FIN フラグをクリアする。
     575                                 *  送信バッファに残っているオクテットが、これから
     576                                 *  送信しようとしているオクテット数より多ければ
     577                                 *  FIN フラグをクリアする。
    608578                                 */
    609579                                if (doff < cep->swbuf_count)
     
    613583                        else {
    614584                                /*
    615                                  *  TCP_TIM_PERSIST: 持続タイマ
    616                                  *  rxtshift:        再送信回数の log(2)
     585                                 *  TCP_TIM_PERSIST: 持続タイマ
     586                                 *  rxtshift:        再送信回数の log(2)
    617587                                 */
    618588                                cep->timer[TCP_TIM_PERSIST] = 0;
     
    622592
    623593                /*
    624                  *  len: 今回送信するオクテット数
    625                  *        swbuf_count (送信バッファにあるオクテット数)
     594                 *  len: 今回送信するオクテット数
     595                 *        swbuf_count (送信バッファにあるオクテット数)
    626596                 *                                    |
    627597                 *    0                               V
     
    631601                 *    ^               ^<------------->
    632602                 *    |               |      len
    633                  *    |<------------->snd_nxt (前回送信した SEQ)
     603                 *    |<------------->snd_nxt (前回送信した SEQ)
    634604                 *    |       doff
    635                  *    snd_una (まだ確認されていない)
     605                 *    snd_una (まだ確認されていない)
    636606                 */
    637607                if (cep->swbuf_count < win)
     
    641611
    642612                /*
    643                  *  すでに送信されていれば、SYN ビットをオフする。
    644                  *  しかし、以下の条件では送信を控える。
     613                 *  すでに送信されていれば、SYN ビットをオフする。
     614                 *  しかし、以下の条件では送信を控える。
    645615                 *
    646                  *    ・状æ
    647 ‹ãŒ SYN 送信。
    648                  *    ・セグメントがデータを含んでいる。
     616                 *    ・状態が SYN 送信。
     617                 *    ・セグメントがデータを含んでいる。
    649618                 */
    650619                if ((flags & TCP_FLG_SYN) && SEQ_GT(cep->snd_nxt, cep->snd_una)) {
    651620                        flags &= ~TCP_FLG_SYN;
    652                         doff --;                /* -1 は SYN フラグ分 */
    653                         len ++;                 /* +1 は SYN フラグ分 */
     621                        doff --;                /* -1 は SYN フラグ分 */
     622                        len ++;                 /* +1 は SYN フラグ分 */
    654623                        if (len > 0 && cep->fsm_state == TCP_FSM_SYN_SENT)
    655624                                break;
     
    664633
    665634                        /*
    666                          *  len が 0 以下なら、0 に設定する。
    667                          *  もし、送信ウィンドウサイズが 0 なら、
    668                          *  再送信タイマをキャンセルし、
    669                          *  前回送信した SEQ (snd_nxt) を
    670                          *  確認された最大送信 SEQ (snd_una) に戻す。
    671                          *  そして、持続タイマーが止まっていれば、再設定する。
     635                         *  len が 0 以下なら、0 に設定する。
     636                         *  もし、送信ウィンドウサイズが 0 なら、
     637                         *  再送信タイマをキャンセルし、
     638                         *  前回送信した SEQ (snd_nxt) を
     639                         *  確認された最大送信 SEQ (snd_una) に戻す。
     640                         *  そして、持続タイマーが止まっていれば、再設定する。
    672641                         */
    673642                        len = 0;
     
    683652
    684653                /*
    685                  *  今回送信するオクテット数 (len) は、
    686                  *  相手の最大受信セグメントサイズ (maxseg) をè¶
    687 ãˆãªã„ようにする。
     654                 *  今回送信するオクテット数 (len) は、
     655                 *  相手の最大受信セグメントサイズ (maxseg) を超えないようにする。
    688656                 */
    689657                if (len > cep->maxseg) {
     
    693661
    694662                /*
    695                  *        swbuf_count (送信バッファにあるオクテット数)
     663                 *        swbuf_count (送信バッファにあるオクテット数)
    696664                 *                                           |
    697665                 *    0                                      V
     
    701669                 *    ^               ^<------------->
    702670                 *    |               |      len
    703                  *    |<------------->snd_nxt (前回送信した SEQ)
     671                 *    |<------------->snd_nxt (前回送信した SEQ)
    704672                 *    |       doff
    705                  *    snd_una (まだ確認されていない)
     673                 *    snd_una (まだ確認されていない)
    706674                 *
    707                  *  今回送信後も、送信バッファにデータが残っていれば
    708                  *  FIN フラグをクリアする。
     675                 *  今回送信後も、送信バッファにデータが残っていれば
     676                 *  FIN フラグをクリアする。
    709677                 */
    710678                if (SEQ_LT(cep->snd_nxt + len, cep->snd_una + cep->swbuf_count))
     
    712680
    713681                /*
    714                  *  ここから win は、受信ウィンドウサイズ。
    715                  *  受信バッファの空き容量
     682                 *  ここから win は、受信ウィンドウサイズ。
     683                 *  受信バッファの空き容量
    716684                 */
    717685                win = cep->rbufsz - cep->rwbuf_count;
    718686
    719687                /*
    720                  *  愚かなウィンドウ・シンドロームの回避処理 (送信側)
     688                 *  愚かなウィンドウ・シンドロームの回避処理 (送信側)
    721689                 *
    722                  *  以下の条件で、送信を行う。
     690                 *  以下の条件で、送信を行う。
    723691                 *
    724                  *    ・フルサイズ (maxseg) のセグメントを送ることができる。
    725                  *    ・相手の最大の受信ウィンドウサイズの 1/2 のデータを
    726                  *      送ることができる。
    727                  *    ・送信バッファを空にでき、アイドルか非é
    728 å»¶ã‚ªãƒ—ションが有効なとき。
     692                 *    ・フルサイズ (maxseg) のセグメントを送ることができる。
     693                 *    ・相手の最大の受信ウィンドウサイズの 1/2 のデータを
     694                 *      送ることができる。
     695                 *    ・送信バッファを空にでき、アイドルか非遅延オプションが有効なとき。
    729696                 */
    730697                if (len) {
    731698
    732699                        /*
    733                          *  今回送信するオクテット数 (len) が
    734                          *  相手の最大受信セグメントサイズ (maxseg) に
    735                          *  一致するときは送信する。
     700                         *  今回送信するオクテット数 (len) が
     701                         *  相手の最大受信セグメントサイズ (maxseg) に
     702                         *  一致するときは送信する。
    736703                         */
    737704                        if (len == cep->maxseg) {
     
    741708
    742709                        /*
    743                          *  今回の送信で、送信バッファを空にでき、
    744                          *  アイドルか非 PUSH オプションが有効なとき。
     710                         *  今回の送信で、送信バッファを空にでき、
     711                         *  アイドルか非 PUSH オプションが有効なとき。
    745712                         */
    746713                        if ((idle || (cep->flags & TCP_CEP_FLG_NO_DELAY)) &&
     
    752719
    753720                        /*
    754                          *  max_sndwnd: 今までの最大送信ウィンドサイズ
    755                          *  snd_nxt:    次に送信する SEQ
    756                          *  snd_max:    送信した最大 SEQ
     721                         *  max_sndwnd: 今までの最大送信ウィンドサイズ
     722                         *  snd_nxt:    次に送信する SEQ
     723                         *  snd_max:    送信した最大 SEQ
    757724                         *
    758                          *  次の条件では送信を行う。
     725                         *  次の条件では送信を行う。
    759726                         *
    760                          *    ・強制送信フラグがセットされている。
    761                          *    ・データ長が相手の最大の受信ウィンドウサイズの 1/2 以上で、
    762                          *      相手の最大の受信ウィンドウサイズが 0 より大きい。
    763                          *    ・次に送信する SEQ が送信した最大 SEQ より小さい、
    764                          *      つまり、再送するとき。
     727                         *    ・強制送信フラグがセットされている。
     728                         *    ・データ長が相手の最大の受信ウィンドウサイズの 1/2 以上で、
     729                         *      相手の最大の受信ウィンドウサイズが 0 より大きい。
     730                         *    ・次に送信する SEQ が送信した最大 SEQ より小さい、
     731                         *      つまり、再送するとき。
    765732                         */
    766733                        if ((cep->flags & TCP_CEP_FLG_FORCE) ||
     
    774741
    775742                /*
    776                  *  愚かなウィンドウ・シンドロームの回避処理 (受信側)
     743                 *  愚かなウィンドウ・シンドロームの回避処理 (受信側)
    777744                 *
    778                  *  ウィンドウサイズがフルサイズの 2 倍のセグメント、あるいは
    779                  *  受信バッファ容量の 1/2 の、いずれか小さいほうの
    780                  *  サイズで増加される場合は、ウィンドウサイズの更新を行う。
     745                 *  ウィンドウサイズがフルサイズの 2 倍のセグメント、あるいは
     746                 *  受信バッファ容量の 1/2 の、いずれか小さいほうの
     747                 *  サイズで増加される場合は、ウィンドウサイズの更新を行う。
    781748                 */
    782749                if (win > 0) {
     
    784751
    785752                        /*
    786                          *  win:              受信バッファの空き容量
    787                          *  MAX_TCP_WIN_SIZE: TCP ヘッダの win フィールドに設定できる最大値
    788                          *  rcv_adv:          受信を期å¾
    789 ã—ている最大の SEQ
    790                          *  rcv_nxt:          受信を期å¾
    791 ã—ている最小の SEQ
     753                         *  win:              受信バッファの空き容量
     754                         *  MAX_TCP_WIN_SIZE: TCP ヘッダの win フィールドに設定できる最大値
     755                         *  rcv_adv:          受信を期待している最大の SEQ
     756                         *  rcv_nxt:          受信を期待している最小の SEQ
    792757                         */
    793758                        if (win < MAX_TCP_WIN_SIZE)
     
    804769       
    805770                /*
    806                  *  ACK を送信する。
     771                 *  ACK を送信する。
    807772                 */
    808773                if (cep->flags & TCP_CEP_FLG_ACK_NOW) {
     
    827792
    828793                /*
    829                  *  snd_nxt: 次に送信する SEQ
    830                  *  snd_una: 未確認の最小送信 SEQ、または確認された最大送信 SEQ
     794                 *  snd_nxt: 次に送信する SEQ
     795                 *  snd_una: 未確認の最小送信 SEQ、または確認された最大送信 SEQ
    831796                 *
    832                  *  相手から FIN を受信し、まだ FIN を送信していないか、
    833                  *  送るデータがないときは、FIN を相手に届けるため、
    834                  *  セグメントを送信する。
     797                 *  相手から FIN を受信し、まだ FIN を送信していないか、
     798                 *  送るデータがないときは、FIN を相手に届けるため、
     799                 *  セグメントを送信する。
    835800                 */
    836801                if ((flags & TCP_FLG_FIN) &&
     
    841806
    842807                /*
    843                  *  送信すべきデータがあり、再送タイマと持続タイマが切れているときは
    844                  *  持続タイマを設定する。
     808                 *  送信すべきデータがあり、再送タイマと持続タイマが切れているときは
     809                 *  持続タイマを設定する。
    845810                 */
    846811                if (cep->swbuf_count && cep->timer[TCP_TIM_REXMT  ] == 0 &&
     
    857822
    858823/*
    859  *  tcptsk_alloc_swbufq -- 送信ウィンドバッファ割り当て
     824 *  tcptsk_alloc_swbufq -- 送信ウィンドバッファ割り当て
    860825 */
    861826
     
    867832
    868833        /*
    869          *  snd_wnd:  相手の受信可能ウィンドサイズ
    870          *  snd_cwnd: 輻輳ウィンドサイズ
     834         *  snd_wnd:  相手の受信可能ウィンドサイズ
     835         *  snd_cwnd: 輻輳ウィンドサイズ
    871836         *
    872          *  win: どちらか小さいウィンドサイズに設定する。
     837         *  win: どちらか小さいウィンドサイズに設定する。
    873838         */
    874839        win = cep->snd_wnd < cep->snd_cwnd ? cep->snd_wnd : cep->snd_cwnd;
    875840
    876841        /*
    877          *  相手の受信ウィンドが閉じている場合は、開くまでå¾
    878 æ©Ÿã™ã‚‹ã€‚
     842         *  相手の受信ウィンドが閉じている場合は、開くまで待機する。
    879843         */
    880844        if (win == 0) {
     
    885849#ifdef TCP_CFG_NON_BLOCKING
    886850
    887                 /* ノンブロッキングコール */
     851                /* ノンブロッキングコール */
    888852                if (!IS_PTR_DEFINED(cep->callback)) {
    889853                        syslog(LOG_WARNING, "[TCP] no call back, CEP: %d.", GET_TCP_CEPID(cep));
    890854
    891                         /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
     855                        /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
    892856                        cep->snd_tskid = TA_NULL;
    893857                        cep->snd_tfn   = cep->snd_nblk_tfn = TFN_TCP_UNDEF;
     
    904868                                                   (GET_TCP_CEPID(cep) & NBA_ID_MASK)), TMO_POL)) != E_OK) {
    905869
    906                         /* ネットワークバッファを予約する。*/
     870                        /* ネットワークバッファを予約する。*/
    907871                        cep->flags = (cep->flags & ~TCP_CEP_FLG_WBCS_MASK) | TCP_CEP_FLG_WBCS_NBUF_PEND;
    908872                        }
    909873                else {
    910874
    911                         /* 送信ウィンドバッファを初期化する。*/
     875                        /* 送信ウィンドバッファを初期化する。*/
    912876                        tcp_init_swbuf(cep);
    913877
     
    918882                                uint_t len;
    919883
    920                                 /* 送信ウィンドバッファの書き込みアドレスを設定する。*/
     884                                /* 送信ウィンドバッファの書き込みアドレスを設定する。*/
    921885                                len = TCP_GET_SWBUF_ADDR(cep, cep->snd_p_buf);
    922886
    923                                 /* コールバック関数を呼び出す。*/
     887                                /* コールバック関数を呼び出す。*/
    924888#ifdef TCP_CFG_NON_BLOCKING_COMPAT14
    925889                                (*cep->callback)(GET_TCP_CEPID(cep), cep->snd_nblk_tfn, (void*)(uint32_t)len);
     
    929893
    930894
    931                                 /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
     895                                /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
    932896                                cep->snd_tskid = TA_NULL;
    933897                                cep->snd_tfn   = cep->snd_nblk_tfn = TFN_TCP_UNDEF;
     
    939903                                uint_t len;
    940904
    941                                 /* 送信ウィンドバッファにデータを書き込む。*/
     905                                /* 送信ウィンドバッファにデータを書き込む。*/
    942906                                len = TCP_WRITE_SWBUF(cep, cep->snd_data, (uint_t)cep->snd_len);
    943907
    944908#ifdef TCP_CFG_EXTENTIONS
    945909
    946                                 /* 送信緊急ポインタを設定する。*/
     910                                /* 送信緊急ポインタを設定する。*/
    947911                                if (cep->snd_nblk_tfn == TFN_TCP_SND_OOB)
    948912                                        cep->snd_up = cep->snd_una + len;
     
    950914#endif  /* of #ifdef TCP_CFG_EXTENTIONS */
    951915
    952                                 /* フラグを、送信可能に設定し、強制的に送信する。*/
     916                                /* フラグを、送信可能に設定し、強制的に送信する。*/
    953917                                cep->flags |= TCP_CEP_FLG_FORCE | TCP_CEP_FLG_FORCE_CLEAR | TCP_CEP_FLG_POST_OUTPUT;
    954918
    955                                 /* コールバック関数を呼び出す。*/
     919                                /* コールバック関数を呼び出す。*/
    956920#ifdef TCP_CFG_NON_BLOCKING_COMPAT14
    957921                                (*cep->callback)(GET_TCP_CEPID(cep), cep->snd_nblk_tfn, (void*)(uint32_t)len);
     
    961925
    962926
    963                                 /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
     927                                /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
    964928                                cep->snd_tskid = TA_NULL;
    965929                                cep->snd_tfn   = cep->snd_nblk_tfn = TFN_TCP_UNDEF;
     
    973937
    974938/*
    975  *  tcptsk_free_swbufq -- 送信ウィンドバッファ開放
     939 *  tcptsk_free_swbufq -- 送信ウィンドバッファ開放
    976940 */
    977941
     
    980944{
    981945        /*
    982          *  受信確認が完了し、ネットワークインタフェースからの
    983          *  出力も完了したときは、送信ウィンドバッファキューを解放する。
    984          */
    985 
    986         /* 送信ウィンドバッファの使用中サイズをリセットする。*/
     946         *  受信確認が完了し、ネットワークインタフェースからの
     947         *  出力も完了したときは、送信ウィンドバッファキューを解放する。
     948         */
     949
     950        /* 送信ウィンドバッファの使用中サイズをリセットする。*/
    987951        cep->swbuf_count = 0;
    988952
    989         /* 送信ウィンドバッファキューのネットワークバッファを解放する。*/
     953        /* 送信ウィンドバッファキューのネットワークバッファを解放する。*/
    990954        syscall(rel_net_buf(cep->swbufq));
    991955        cep->swbufq = NULL;
    992956
    993         /* フラグを空きに設定する。*/
     957        /* フラグを空きに設定する。*/
    994958        cep->flags = (cep->flags & ~TCP_CEP_FLG_WBCS_MASK) | TCP_CEP_FLG_WBCS_FREE;
    995959
    996         /* 送信ウィンドバッファに空きができたことを知らせる。*/
     960        /* 送信ウィンドバッファに空きができたことを知らせる。*/
    997961        syscall(set_flg(cep->snd_flgid, TCP_CEP_EVT_SWBUF_READY));
    998962
    999         /* 送信ウィンドバッファの空きå¾
    1000 ã¡ã®ã¨ãã¯ã€TCP 出力タスクを起動する。*/
     963        /* 送信ウィンドバッファの空き待ちのときは、TCP 出力タスクを起動する。*/
    1001964        if ((cep->flags & TCP_CEP_FLG_WBCS_NBUF_REQ) != 0) {
    1002965                sig_sem(SEM_TCP_POST_OUTPUT);
     
    1007970
    1008971/*
    1009  *  TCP 出力タスク
     972 *  TCP 出力タスク
    1010973 */
    1011974
     
    1026989#ifdef _IP6_CFG
    1027990
    1028         /* IPv6 のステートレス・アドレス自動設定を実行する。*/
     991        /* IPv6 のステートレス・アドレス自動設定を実行する。*/
    1029992        in6_if_up(IF_GET_IFNET());
    1030993
     
    1033996        while (true) {
    1034997
    1035                 /* 出力がポストされるまでå¾
    1036 ã¤ã€‚*/
     998                /* 出力がポストされるまで待つ。*/
    1037999                syscall(wai_sem(SEM_TCP_POST_OUTPUT));
    10381000
     
    10591021
    10601022                        /*
    1061                          *  ネットワークインタフェースから送信が終わっていないときは、
    1062                          *  送信を予約する。
     1023                         *  ネットワークインタフェースから送信が終わっていないときは、
     1024                         *  送信を予約する。
    10631025                         */
    10641026                        if (cep->flags & TCP_CEP_FLG_POST_OUTPUT &&
     
    10751037
    10761038                        /*
    1077                          *  送信予約中に、ネットワークインタフェースから送信が終了したら、
    1078                          *  送信を開始する。ただし、完å
    1079 ¨ã«é€ä¿¡ãŒçµ‚了したときは何もしない。
     1039                         *  送信予約中に、ネットワークインタフェースから送信が終了したら、
     1040                         *  送信を開始する。ただし、完全に送信が終了したときは何もしない。
    10801041                         */
    10811042                        if (cep->flags & TCP_CEP_FLG_RESERVE_OUTPUT) {
     
    11001061
    11011062                                        /*
    1102                                          *  tcp_con_cep のノンブロッキングコールで、
    1103                                          *  未割当のの場合は、ポート番号を割り当てる。
    1104                                          *  p_myaddr が NADR (-1) か、
    1105                                          *  自ポート番号が TCP_PORTANY なら、自動で割り当てる。
     1063                                         *  tcp_con_cep のノンブロッキングコールで、
     1064                                         *  未割当のの場合は、ポート番号を割り当てる。
     1065                                         *  p_myaddr が NADR (-1) か、
     1066                                         *  自ポート番号が TCP_PORTANY なら、自動で割り当てる。
    11061067                                         */
    11071068                                        if (cep->p_myaddr == NADR || cep->p_myaddr->portno == TCP_PORTANY)
     
    11181079                                                        syslog(LOG_WARNING, "[TCP] no call back, CEP: %d.", GET_TCP_CEPID(cep));
    11191080
    1120                                                 /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
     1081                                                /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
    11211082                                                cep->snd_tfn   = cep->snd_nblk_tfn = TFN_TCP_UNDEF;
    11221083                                                cep->snd_tskid = TA_NULL;
     
    11301091
    11311092                                if (cep->flags & TCP_CEP_FLG_CLOSE_AFTER_OUTPUT) {
    1132                                         /* コネクションを閉じる。*/
     1093                                        /* コネクションを閉じる。*/
    11331094                                        tcp_close(cep);
    11341095                                        cep->flags &= ~TCP_CEP_FLG_CLOSE_AFTER_OUTPUT;
     
    11361097
    11371098                                if (cep->flags & TCP_CEP_FLG_RESTORE_NEXT_OUTPUT) {
    1138                                         /* snd_nxt をå
    1139 ƒã«æˆ»ã™ã€‚*/
     1099                                        /* snd_nxt を元に戻す。*/
    11401100                                        if (SEQ_GT(cep->snd_old_nxt, cep->snd_nxt))
    11411101                                                cep->snd_nxt = cep->snd_old_nxt;
     
    11501110                        } while (ix != last_ix);
    11511111
    1152                 /* 次回は、処理した通信端点を後回しにする。*/
     1112                /* 次回は、処理した通信端点を後回しにする。*/
    11531113                last_ix = sel_ix;
    11541114                }
  • asp3_gr_sakura/trunk/tinet/netinet/tcp_seq.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8472
    8573/*
    86  *  SEQ と ACK 番号は、32 ビット符号付整数で比較する。
     74 *  SEQ と ACK 番号は、32 ビット符号付整数で比較する。
    8775 */
    8876
     
    9381
    9482/*
    95  *  関数シミュレーションマクロ
     83 *  関数シミュレーションマクロ
    9684 */
    9785
     
    9987
    10088/*
    101  *  å
    102 ¨åŸŸå¤‰æ•°
     89 *  全域変数
    10390 */
    10491
    105 extern T_TCP_SEQ tcp_iss;               /* TCP の SEQ の初期値 */
     92extern T_TCP_SEQ tcp_iss;               /* TCP の SEQ の初期値 */
    10693
    10794/*
    108  *  インライン関数
     95 *  インライン関数
    10996 */
    11097
    11198/*
    112  *  init_receive_seq -- 受信 SEQ 番号を初期化する。
     99 *  init_receive_seq -- 受信 SEQ 番号を初期化する。
    113100 */
    114101
     
    120107
    121108/*
    122  *  init_send_seq -- 送信 SEQ 番号を初期化する。
     109 *  init_send_seq -- 送信 SEQ 番号を初期化する。
    123110 */
    124111
  • asp3_gr_sakura/trunk/tinet/netinet/tcp_subr.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    129117
    130118/*
    131  *  å
    132 ¨åŸŸå¤‰æ•°
    133  */
    134 
    135 /*
    136  *  TCP の SEQ の初期値、プログラムが起動して、最初に TCP セグメントを
    137  *  送受信するときに、get_tim() により初期化する。
     119 *  全域変数
     120 */
     121
     122/*
     123 *  TCP の SEQ の初期値、プログラムが起動して、最初に TCP セグメントを
     124 *  送受信するときに、get_tim() により初期化する。
    138125 */
    139126T_TCP_SEQ tcp_iss = 0;
     
    142129
    143130/*
    144  *  SNMP の 管理æƒ
    145 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     131 *  SNMP の 管理情報ベース (MIB)
    146132 */
    147133
     
    151137
    152138/*
    153  *  局所変数
    154  */
    155 
    156 static uint16_t tcp_port_auto = TCP_PORT_FIRST_AUTO;    /* 自動割り当て番号     */
     139 *  局所変数
     140 */
     141
     142static uint16_t tcp_port_auto = TCP_PORT_FIRST_AUTO;    /* 自動割り当て番号     */
    157143
    158144#if defined(NUM_TCP_TW_CEP_ENTRY) && NUM_TCP_TW_CEP_ENTRY > 0
    159145
    160146/*
    161  *  タスクからの Time Wait 状æ
    162 ‹ CEP 分離機能
    163  */
    164 
    165 /*
    166  *  変数
     147 *  タスクからの Time Wait 状態 CEP 分離機能
     148 */
     149
     150/*
     151 *  変数
    167152 */
    168153
     
    170155
    171156/*
    172  *  tcp_move_twcep -- å¿
    173 è¦ãªæƒ
    174 å ±ã‚’ Time Wait 用 TCP 通信端点に移して、
    175  *                    標準の TCP 通信端点を開放する。
     157 *  tcp_move_twcep -- 必要な情報を Time Wait 用 TCP 通信端点に移して、
     158 *                    標準の TCP 通信端点を開放する。
    176159 */
    177160
     
    181164        T_TCP_TWCEP*    twcep;
    182165
    183         /* 空きの Time Wait 用 TCP 通信端点を探索する。*/
     166        /* 空きの Time Wait 用 TCP 通信端点を探索する。*/
    184167        for (twcep = &tcp_twcep[NUM_TCP_TW_CEP_ENTRY]; twcep -- != tcp_twcep; ) {
    185168                if (twcep->fsm_state != TCP_FSM_TIME_WAIT) {
    186169
    187170                        /*
    188                          *  通信端点をロックし、
    189                          *  å¿
    190 è¦ãªæƒ
    191 å ±ã‚’ Time Wait 用 TCP 通信端点に移す。
     171                         *  通信端点をロックし、
     172                         *  必要な情報を Time Wait 用 TCP 通信端点に移す。
    192173                         */
    193174                        syscall(wai_sem(cep->semid_lock));
     
    202183                        twcep->timer_2msl       = cep->timer[TCP_TIM_2MSL];
    203184
    204                         /* 通信端点をロックを解除する。*/
     185                        /* 通信端点をロックを解除する。*/
    205186                        syscall(sig_sem(cep->semid_lock));
    206187
    207                         /* 標準 TCP 通信端点を開放する。*/
     188                        /* 標準 TCP 通信端点を開放する。*/
    208189                        tcp_close(cep);
    209190
     
    214195
    215196/*
    216  *  tcp_find_twcep -- ポート番号から Time Wait 用 TCP 通信端点を得る。
     197 *  tcp_find_twcep -- ポート番号から Time Wait 用 TCP 通信端点を得る。
    217198 */
    218199
     
    226207       
    227208        /*
    228          *  状æ
    229 ‹ãŒ TIME WAIT で、
    230          *  IP アドレスとポート番号が一致する通信端点を探索する。
     209         *  状態が TIME WAIT で、
     210         *  IP アドレスとポート番号が一致する通信端点を探索する。
    231211         */
    232212        for (twcep = &tcp_twcep[NUM_TCP_TW_CEP_ENTRY]; twcep -- != tcp_twcep; ) {
     
    245225
    246226/*
    247  *  tcp_find_cep -- ポート番号から TCP 通信端点を得る。
     227 *  tcp_find_cep -- ポート番号から TCP 通信端点を得る。
    248228 */
    249229
     
    257237       
    258238        /*
    259          *  状æ
    260 ‹ãŒ SYN 送信済み以後は、
    261          *  IP アドレスとポート番号が一致する TCP 通信端点を探索する。
     239         *  状態が SYN 送信済み以後は、
     240         *  IP アドレスとポート番号が一致する TCP 通信端点を探索する。
    262241         */
    263242        for (cep = &tcp_cep[tmax_tcp_cepid]; cep -- != tcp_cep; ) {
     
    270249                }
    271250
    272         /* IPv4 で受動オープン中の TCP 通信端点をå
    273 ˆã«æŽ¢ç´¢ã™ã‚‹ã€‚*/   
     251        /* IPv4 で受動オープン中の TCP 通信端点を先に探索する。*/   
    274252        for (cep = &tcp_cep[tmax_tcp_cepid]; cep -- != tcp_cep; ) {
    275253                if ((cep->flags & TCP_CEP_FLG_IPV4)                   &&
     
    281259                }
    282260
    283         /* 受動オープン中の TCP 通信端点を探索する。*/       
     261        /* 受動オープン中の TCP 通信端点を探索する。*/   
    284262        for (cep = &tcp_cep[tmax_tcp_cepid]; cep -- != tcp_cep; ) {
    285263
     
    327305
    328306/*
    329  *  tcp_is_addr_accept -- 受信可能な IP アドレスとポート番号であることを確認する。
     307 *  tcp_is_addr_accept -- 受信可能な IP アドレスとポート番号であることを確認する。
    330308 */
    331309
     
    340318
    341319        /*
    342          *  次のときは破棄する。
    343          *    ・ポート番号が同一で、送受信 IP アドレス が同一。
    344          *      ただし、送信å
    345 ƒ IP アドレスがローカルループバックなら良い。
    346          *    ・マルチキャストアドレス
     320         *  次のときは破棄する。
     321         *    ・ポート番号が同一で、送受信 IP アドレス が同一。
     322         *      ただし、送信元 IP アドレスがローカルループバックなら良い。
     323         *    ・マルチキャストアドレス
    347324         */
    348325
     
    354331
    355332        /*
    356          *  次のときは、受信可能ではない。
    357          *    ・ポート番号が同一で、送受信 IP アドレス が同一。
    358          *    ・マルチキャストアドレス
     333         *  次のときは、受信可能ではない。
     334         *    ・ポート番号が同一で、送受信 IP アドレス が同一。
     335         *    ・マルチキャストアドレス
    359336         */
    360337        if (tcph->dport == tcph->sport && IN_ARE_HDR_ADDR_EQUAL(input))
     
    370347
    371348/*
    372  *  tcp_free_reassq -- 受信再構成キューのネットワークバッファを解放する。
     349 *  tcp_free_reassq -- 受信再構成キューのネットワークバッファを解放する。
    373350 *
    374  *    注意:
    375  *      å¿
    376 è¦ã§ã‚れば、この関数を呼び出す前に、通信端点をロックし、
    377  *      戻った後、解除するå¿
    378 è¦ãŒã‚る。
     351 *    注意:
     352 *      必要であれば、この関数を呼び出す前に、通信端点をロックし、
     353 *      戻った後、解除する必要がある。
    379354 */
    380355
     
    393368
    394369/*
    395  *  tcp_alloc_auto_port -- 自動割り当てポート番号を設定する。
     370 *  tcp_alloc_auto_port -- 自動割り当てポート番号を設定する。
    396371 */
    397372
     
    480455
    481456/*
    482  *  tcp_alloc_port -- 指定されたポート番号を設定する。
     457 *  tcp_alloc_port -- 指定されたポート番号を設定する。
    483458 */
    484459
     
    500475
    501476/*
    502  *  tcp_init -- TCP モジュールの初期化
     477 *  tcp_init -- TCP モジュールの初期化
    503478 */
    504479
     
    516491
    517492/*
    518  * tcp_init_iss シーケンス番号を初期化する。
     493 * tcp_init_iss シーケンス番号を初期化する。
    519494 */
    520495
     
    530505
    531506/*
    532  *  tcp_close -- コネクションを開放する。
     507 *  tcp_close -- コネクションを開放する。
    533508 */
    534509
     
    536511tcp_close (T_TCP_CEP *cep)
    537512{
    538         /* タイマーを停止する。*/
     513        /* タイマーを停止する。*/
    539514        tcp_cancel_timers(cep);
    540515
    541516        /*
    542          *  通信端点をロックし、
    543          *  受信再構成キューのネットワークバッファを解放する。
     517         *  通信端点をロックし、
     518         *  受信再構成キューのネットワークバッファを解放する。
    544519         */
    545520        syscall(wai_sem(cep->semid_lock));
     
    547522        syscall(sig_sem(cep->semid_lock));
    548523
    549         /* 状æ
    550 ‹ã‚’未使用にする。*/
     524        /* 状態を未使用にする。*/
    551525        cep->fsm_state = TCP_FSM_CLOSED;
    552526
    553527        /*
    554          * 以下に関係しないフラグをクリアーする。
    555          * ・送受信ウィンドバッファの省コピー機能
    556          * ・動的な通信端点の生成・削除機能
    557          * ・通信端点のネットワーク層プロトコル
     528         * 以下に関係しないフラグをクリアーする。
     529         * ・送受信ウィンドバッファの省コピー機能
     530         * ・動的な通信端点の生成・削除機能
     531         * ・通信端点のネットワーク層プロトコル
    558532         */
    559533        cep->flags &= TCP_CEP_FLG_NOT_CLEAR;
     
    562536
    563537        if (cep->snd_nblk_tfn != TFN_TCP_UNDEF || cep->rcv_nblk_tfn != TFN_TCP_UNDEF) {
    564                 /* ノンブロッキングコール */
     538                /* ノンブロッキングコール */
    565539
    566540#ifdef TCP_CFG_NON_BLOCKING_COMPAT14
     
    575549
    576550                                case TFN_TCP_ACP_CEP:
    577                                         /* TCP 通信端点からTCP 受付口を解放する。*/
     551                                        /* TCP 通信端点からTCP 受付口を解放する。*/
    578552                                        cep->rep = NULL;
    579553
     
    587561                                case TFN_TCP_RCV_BUF:
    588562
    589                                         /* 受信ウィンドバッファの空アドレスを獲得する。*/
     563                                        /* 受信ウィンドバッファの空アドレスを獲得する。*/
    590564                                        len = TCP_GET_RWBUF_ADDR(cep, cep->rcv_p_buf);
    591565
    592                                         /* 異常切断等のエラーを設定する。*/
     566                                        /* 異常切断等のエラーを設定する。*/
    593567                                        if (cep->error == E_TMOUT)
    594568                                                len = E_CLS;
     
    601575                                case TFN_TCP_RCV_DAT:
    602576
    603                                         /* 受信ウィンドバッファからデータを取り出す。*/
     577                                        /* 受信ウィンドバッファからデータを取り出す。*/
    604578                                        len = TCP_READ_RWBUF(cep, cep->rcv_data, (uint_t)cep->rcv_len);
    605579
    606                                         /* 異常切断等のエラーを設定する。*/
     580                                        /* 異常切断等のエラーを設定する。*/
    607581                                        if (cep->error == E_TMOUT)
    608582                                                len = E_CLS;
     
    626600                                        }
    627601
    628                                 /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
     602                                /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
    629603                                cep->rcv_tskid = TA_NULL;
    630604                                cep->rcv_tfn   = cep->rcv_nblk_tfn = TFN_TCP_UNDEF;
     
    636610
    637611                                case TFN_TCP_CON_CEP:
    638                                         /* TCP 通信端点から TCP 受付口を解放する。*/
     612                                        /* TCP 通信端点から TCP 受付口を解放する。*/
    639613                                        cep->rep = NULL;
    640614
     
    659633                                        }
    660634
    661                                 /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
     635                                /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
    662636                                cep->snd_tskid = TA_NULL;
    663637                                cep->snd_tfn   = cep->snd_nblk_tfn = TFN_TCP_UNDEF;
     
    678652                                case TFN_TCP_ACP_CEP:
    679653
    680                                         /* TCP 通信端点からTCP 受付口を解放する。*/
     654                                        /* TCP 通信端点からTCP 受付口を解放する。*/
    681655                                        cep->rep = NULL;
    682656
     
    685659#endif
    686660
    687                                         /* 接続エラーを設定する。*/
     661                                        /* 接続エラーを設定する。*/
    688662                                        len      = E_CLS;
    689663                                        (*cep->callback)(GET_TCP_CEPID(cep), cep->rcv_nblk_tfn, (void*)&len);
     
    692666                                case TFN_TCP_RCV_BUF:
    693667
    694                                         /* 受信ウィンドバッファの空アドレスを獲得する。*/
     668                                        /* 受信ウィンドバッファの空アドレスを獲得する。*/
    695669                                        len = TCP_GET_RWBUF_ADDR(cep, cep->rcv_p_buf);
    696670
    697                                         /* 異常切断等のエラーを設定する。*/
     671                                        /* 異常切断等のエラーを設定する。*/
    698672                                        if (cep->error == E_TMOUT)
    699673                                                len = E_CLS;
     
    706680                                case TFN_TCP_RCV_DAT:
    707681
    708                                         /* 受信ウィンドバッファからデータを取り出す。*/
     682                                        /* 受信ウィンドバッファからデータを取り出す。*/
    709683                                        len = TCP_READ_RWBUF(cep, cep->rcv_data, (uint_t)cep->rcv_len);
    710684
    711                                         /* 異常切断等のエラーを設定する。*/
     685                                        /* 異常切断等のエラーを設定する。*/
    712686                                        if (cep->error == E_TMOUT)
    713687                                                len = E_CLS;
     
    731705                                        }
    732706
    733                                 /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
     707                                /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
    734708                                cep->rcv_tskid = TA_NULL;
    735709                                cep->rcv_tfn   = cep->rcv_nblk_tfn = TFN_TCP_UNDEF;
     
    743717                                case TFN_TCP_CON_CEP:
    744718
    745                                         /* TCP 通信端点からTCP 受付口を解放する。*/
     719                                        /* TCP 通信端点からTCP 受付口を解放する。*/
    746720                                        cep->rep = NULL;
    747721
     
    750724#endif
    751725
    752                                         /* 接続エラーを設定する。*/
     726                                        /* 接続エラーを設定する。*/
    753727                                        len      = E_CLS;
    754728                                        (*cep->callback)(GET_TCP_CEPID(cep), cep->snd_nblk_tfn, (void*)&len);
     
    769743                                        }
    770744
    771                                 /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
     745                                /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
    772746                                cep->snd_tskid = TA_NULL;
    773747                                cep->snd_tfn   = cep->snd_nblk_tfn = TFN_TCP_UNDEF;
     
    779753
    780754                /*
    781                  *  通信端点をロックし、
    782                  *  送受信ウィンドバッファキューのネットワークバッファを解放する。
     755                 *  通信端点をロックし、
     756                 *  送受信ウィンドバッファキューのネットワークバッファを解放する。
    783757                 */
    784758                syscall(wai_sem(cep->semid_lock));
     
    787761                syscall(sig_sem(cep->semid_lock));
    788762
    789                 /* 未使用になったことを知らせる。*/
     763                /* 未使用になったことを知らせる。*/
    790764                syscall(set_flg(cep->est_flgid, TCP_CEP_EVT_CLOSED));
    791765                }
    792         else {  /* 非ノンブロッキングコール */
     766        else {  /* 非ノンブロッキングコール */
    793767
    794768#endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
    795769
    796                 /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
     770                /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
    797771                cep->snd_tskid = cep->rcv_tskid = TA_NULL;
    798772                cep->snd_tfn   = cep->rcv_tfn   = TFN_TCP_UNDEF;
    799773
    800774                /*
    801                  *  通信端点をロックし、
    802                  *  送受信ウィンドバッファキューのネットワークバッファを解放する。
     775                 *  通信端点をロックし、
     776                 *  送受信ウィンドバッファキューのネットワークバッファを解放する。
    803777                 */
    804778                syscall(wai_sem(cep->semid_lock));
     
    807781                syscall(sig_sem(cep->semid_lock));
    808782
    809                 /* 未使用になったことを知らせる。*/
     783                /* 未使用になったことを知らせる。*/
    810784                syscall(set_flg(cep->est_flgid, TCP_CEP_EVT_CLOSED));
    811785
    812786                /*
    813                  * å
    814 ¥å‡ºåŠ›ã‚¿ã‚¹ã‚¯ã‚’起床して、
    815                  * 送受信不可になったことを知らせる。
     787                 * 入出力タスクを起床して、
     788                 * 送受信不可になったことを知らせる。
    816789                 */
    817790                syscall(set_flg(cep->snd_flgid, TCP_CEP_EVT_SWBUF_READY));
     
    828801
    829802/*
    830  *  tcp_drop -- TCP 接続を破棄する。
     803 *  tcp_drop -- TCP 接続を破棄する。
    831804 */
    832805
     
    846819                cep->fsm_state = TCP_FSM_CLOSED;
    847820
    848                 /* 送信と、送信後コネクションの切断を指示する。*/
     821                /* 送信と、送信後コネクションの切断を指示する。*/
    849822                cep->flags |=  TCP_CEP_FLG_POST_OUTPUT | TCP_CEP_FLG_CLOSE_AFTER_OUTPUT;
    850823                sig_sem(SEM_TCP_POST_OUTPUT);
     
    857830
    858831/*
    859  *  tcp_respond -- TCP の単一メッセージを送信する。
     832 *  tcp_respond -- TCP の単一メッセージを送信する。
    860833 */
    861834
     
    872845
    873846        /*
    874          *  output が NULL でなければ、これはå
    875 ¥åŠ›ã—たセグメントの
    876          *  net_buf で、そのまま再利用する。
     847         *  output が NULL でなければ、これは入力したセグメントの
     848         *  net_buf で、そのまま再利用する。
    877849         */
    878850        if (output != NULL) {
     
    880852
    881853                /*
    882                  * IPv4 では、IP ヘッダのオプションを削除する。
    883                  * IPv6 では、拡張ヘッダを削除する。
     854                 * IPv4 では、IP ヘッダのオプションを削除する。
     855                 * IPv6 では、拡張ヘッダを削除する。
    884856                 */
    885857                if (IP_REMOVE_OPTIONS(output) != E_OK) {
     
    892864#if defined(_IP6_CFG)
    893865
    894                 /* トラヒッククラスとフローラベルをクリアする。*/
     866                /* トラヒッククラスとフローラベルをクリアする。*/
    895867                SET_IP_CF(output, 0);
    896868
    897869#endif  /* of #if defined(_IP6_CFG) */
    898870
    899                 /* TCP SDU 長を 0 にする。*/
     871                /* TCP SDU 長を 0 にする。*/
    900872                SET_IP_SDU_SIZE(output, TCP_HDR_SIZE);
    901873
    902874                tcph = GET_TCP_HDR(output, IF_IP_TCP_HDR_OFFSET(output));
    903875
    904                 /* ポート番号を交換する。*/
     876                /* ポート番号を交換する。*/
    905877                portno = tcph->sport;
    906878                tcph->sport = tcph->dport;
    907879                tcph->dport = portno;
    908880
    909                 /* TCP ヘッダにæƒ
    910 å ±ã‚’設定する。*/
     881                /* TCP ヘッダに情報を設定する。*/
    911882                tcph->doff = TCP_MAKE_DATA_OFF(TCP_HDR_SIZE);
    912883                }
    913884       
    914         /* cep が NULL であれば、何もしないで終了する。*/
     885        /* cep が NULL であれば、何もしないで終了する。*/
    915886        else if (cep == NULL)
    916887                return;
     
    931902
    932903        /*
    933          *  チェックサムを設定する。
     904         *  チェックサムを設定する。
    934905         */
    935906        hdr_offset = IF_IP_TCP_HDR_OFFSET(output);
     
    937908                             (uint_t)GET_TCP_HDR_SIZE(output, hdr_offset));
    938909
    939         /* ネットワークバッファ長を調整する。*/
     910        /* ネットワークバッファ長を調整する。*/
    940911        output->len = (uint16_t)GET_IF_IP_TCP_HDR_SIZE(output, hdr_offset);
    941912
     
    946917#endif  /* of #ifdef TCP_CFG_TRACE */
    947918
    948         /* ネットワーク層 (IP) の出力関数を呼び出す。*/
     919        /* ネットワーク層 (IP) の出力関数を呼び出す。*/
    949920        IP_OUTPUT(output, TMO_TCP_OUTPUT);
    950921        }
    951922#if 0
    952923/*
    953  *  tcp_get_segment -- TCP セグメントを獲得し、ヘッダを設定する。
     924 *  tcp_get_segment -- TCP セグメントを獲得し、ヘッダを設定する。
    954925 *
    955  *    戻り値 エラーコード
    956  *    optlen    オプションサイズ、4 オクテット単位
    957  *    maxlen    最大セグメントサイズ(IF/IP/TCP ヘッダサイズを含まない)
    958  *    len       TCP SDU サイズ
     926 *    戻り値       エラーコード
     927 *    optlen    オプションサイズ、4 オクテット単位
     928 *    maxlen    最大セグメントサイズ(IF/IP/TCP ヘッダサイズを含まない)
     929 *    len       TCP SDU サイズ
    959930 */
    960931
     
    966937        ER              error;
    967938
    968         /* IP データグラムを獲得する。*/
     939        /* IP データグラムを獲得する。*/
    969940        if ((error = IN_GET_DATAGRAM(nbuf,
    970941                                     (uint_t)(TCP_HDR_SIZE + optlen + len),
     
    978949                }
    979950
    980         /* TCP ヘッダにæƒ
    981 å ±ã‚’設定する。*/
    982 
    983         /* TCP ヘッダにæƒ
    984 å ±ã‚’設定する。*/
     951        /* TCP ヘッダに情報を設定する。*/
     952
     953        /* TCP ヘッダに情報を設定する。*/
    985954        tcph = GET_TCP_HDR(*nbuf, IF_IP_TCP_HDR_OFFSET(*nbuf));
    986955        tcph->sport     = htons(cep->myaddr.portno);
     
    993962#endif
    994963/*
    995  *  tcpn_get_segment -- TCP セグメントを獲得し、ヘッダを設定する。
     964 *  tcpn_get_segment -- TCP セグメントを獲得し、ヘッダを設定する。
    996965 *
    997  *    戻り値 エラーコード
    998  *    optlen    オプションサイズ、4 オクテット単位
    999  *    maxlen    最大セグメントサイズ(IF/IP/TCP ヘッダサイズを含む)
    1000  *    len       TCP SDU サイズ
     966 *    戻り値       エラーコード
     967 *    optlen    オプションサイズ、4 オクテット単位
     968 *    maxlen    最大セグメントサイズ(IF/IP/TCP ヘッダサイズを含む)
     969 *    len       TCP SDU サイズ
    1001970 */
    1002971
     
    1008977        ER              error;
    1009978
    1010         /* IP データグラムを獲得する。*/
     979        /* IP データグラムを獲得する。*/
    1011980        if ((error = IN_GET_DATAGRAM(nbuf,
    1012981                                     (uint_t)(TCP_HDR_SIZE + optlen + len),
     
    1020989                }
    1021990
    1022         /* TCP ヘッダにæƒ
    1023 å ±ã‚’設定する。*/
    1024 
    1025         /* TCP ヘッダにæƒ
    1026 å ±ã‚’設定する。*/
     991        /* TCP ヘッダに情報を設定する。*/
     992
     993        /* TCP ヘッダに情報を設定する。*/
    1027994        tcph = GET_TCP_HDR(*nbuf, IF_IP_TCP_HDR_OFFSET(*nbuf));
    1028995        tcph->sport     = htons(cep->myaddr.portno);
     
    10351002
    10361003/*
    1037  *  tcp_can_send_more -- 送信できるか、通信端点の状æ
    1038 ‹ã‚’見る。
     1004 *  tcp_can_send_more -- 送信できるか、通信端点の状態を見る。
    10391005 */
    10401006
     
    10441010        ER      error;
    10451011
    1046         /* 送信できるか、CEP の FSM 状æ
    1047 ‹ã‚’見る。*/
     1012        /* 送信できるか、CEP の FSM 状態を見る。*/
    10481013        if (!TCP_FSM_CAN_SEND_MORE(cep->fsm_state)) {
    10491014                if ((error = cep->error) == E_OK)
     
    10521017#ifdef TCP_CFG_NON_BLOCKING
    10531018
    1054                 /* タイムアウトをチェックする。*/
    1055                 if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
     1019                /* タイムアウトをチェックする。*/
     1020                if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
    10561021
    10571022                        if (!IS_PTR_DEFINED(cep->callback))
    10581023                                error = E_OBJ;
    10591024                        else {
    1060                                 /* コールバック関数を呼び出す。*/
     1025                                /* コールバック関数を呼び出す。*/
    10611026#ifdef TCP_CFG_NON_BLOCKING_COMPAT14
    10621027                                (*cep->callback)(GET_TCP_CEPID(cep), fncd, (void*)error);
     
    10831048#ifdef TCP_CFG_NON_BLOCKING
    10841049
    1085                         /* タイムアウトをチェックする。*/
    1086                         if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
     1050                        /* タイムアウトをチェックする。*/
     1051                        if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
    10871052                                if (!IS_PTR_DEFINED(cep->callback))
    10881053                                        error = E_OBJ;
     
    10901055                                        error = E_OBJ;
    10911056
    1092                                         /* コールバック関数を呼び出す。*/
     1057                                        /* コールバック関数を呼び出す。*/
    10931058#ifdef TCP_CFG_NON_BLOCKING_COMPAT14
    10941059                                        (*cep->callback)(GET_TCP_CEPID(cep), fncd, (void*)error);
     
    11161081
    11171082/*
    1118  *  tcp_can_recv_more -- 受信できるか、通信端点の状æ
    1119 ‹ã‚’見る。
     1083 *  tcp_can_recv_more -- 受信できるか、通信端点の状態を見る。
    11201084 *
    1121  *  注意: 戻り値
     1085 *  注意: 戻り値
    11221086 *
    1123  *      E_OK    受信可能
    1124  *      E_OBJ   ç›¸æ‰‹ã‹ã‚‰åˆ‡æ–­ã•ã‚ŒãŸã‹ã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—た。
     1087 *      E_OK    受信可能
     1088 *      E_OBJ   相手から切断されたか、エラーが発生した。
    11251089 */
    11261090
     
    11291093{
    11301094        /*
    1131          *  受信できるか、fsm_state を見る。受信できない場合は
    1132          *  長さ 0、またはエラーを返す。
     1095         *  受信できるか、fsm_state を見る。受信できない場合は
     1096         *  長さ 0、またはエラーを返す。
    11331097         */
    11341098        if (!TCP_FSM_CAN_RECV_MORE(cep->fsm_state) &&
     
    11381102#ifdef TCP_CFG_NON_BLOCKING
    11391103
    1140                 /* タイムアウトをチェックする。*/
    1141                 if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
     1104                /* タイムアウトをチェックする。*/
     1105                if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
    11421106
    11431107                        if (!IS_PTR_DEFINED(cep->callback))
    11441108                                *error = E_OBJ;
    11451109                        else {
    1146                                 /* コールバック関数を呼び出す。*/
     1110                                /* コールバック関数を呼び出す。*/
    11471111#ifdef TCP_CFG_NON_BLOCKING_COMPAT14
    11481112                                (*cep->callback)(GET_TCP_CEPID(cep), fncd, (void*)*error);
     
    11571121
    11581122                /*
    1159                  *  通信端点をロックして、
    1160                  *  受信ウィンドバッファキューのネットワークバッファを解放する。
     1123                 *  通信端点をロックして、
     1124                 *  受信ウィンドバッファキューのネットワークバッファを解放する。
    11611125                 */
    11621126                syscall(wai_sem(cep->semid_lock));
     
    11741138#ifdef TCP_CFG_NON_BLOCKING
    11751139
    1176                         /* タイムアウトをチェックする。*/
    1177                         if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
     1140                        /* タイムアウトをチェックする。*/
     1141                        if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
    11781142                                if (!IS_PTR_DEFINED(cep->callback))
    11791143                                        *error = E_OBJ;
     
    11811145                                        *error = E_OBJ;
    11821146
    1183                                         /* コールバック関数を呼び出す。*/
     1147                                        /* コールバック関数を呼び出す。*/
    11841148#ifdef TCP_CFG_NON_BLOCKING_COMPAT14
    11851149                                        (*cep->callback)(GET_TCP_CEPID(cep), fncd, (void*)*error);
     
    12061170
    12071171/*
    1208  *  tcp_wait_rwbuf -- 受信ウィンドバッファにデータがå
    1209 ¥ã‚‹ã®ã‚’å¾
    1210 ã¤ã€‚
     1172 *  tcp_wait_rwbuf -- 受信ウィンドバッファにデータが入るのを待つ。
    12111173 */
    12121174
     
    12181180
    12191181        if (cep->rwbuf_count == 0) {
    1220                 /* 受信ウィンドバッファにデータがなければ、å
    1221 ¥åŠ›ãŒã‚るまでå¾
    1222 ã¤ã€‚*/
     1182                /* 受信ウィンドバッファにデータがなければ、入力があるまで待つ。*/
    12231183                while (cep->rwbuf_count == 0) {
    12241184                        if ((error = twai_flg(cep->rcv_flgid, TCP_CEP_EVT_RWBUF_READY, TWF_ORW, &flag, tmout)) != E_OK) {
     
    12281188
    12291189                        /*
    1230                          *  受信できるか、fsm_state を見る。受信できない状æ
    1231 ‹ã§ã€
    1232                          *  受信ウィンドバッファに文字がない場合は終了する。
     1190                         *  受信できるか、fsm_state を見る。受信できない状態で、
     1191                         *  受信ウィンドバッファに文字がない場合は終了する。
    12331192                         */
    12341193                        if (!TCP_FSM_CAN_RECV_MORE(cep->fsm_state) &&
     
    12361195
    12371196                                /*
    1238                                  *  通信端点をロックして、
    1239                                  *  受信ウィンドバッファキューのネットワークバッファを解放する。
     1197                                 *  通信端点をロックして、
     1198                                 *  受信ウィンドバッファキューのネットワークバッファを解放する。
    12401199                                 */
    12411200                                syscall(wai_sem(cep->semid_lock));
     
    12551214
    12561215/*
    1257  *  tcp_move_ra2rw -- 受信再構成キューで再構成したセグメントを受信ウィンドバッファに書き込む。
     1216 *  tcp_move_ra2rw -- 受信再構成キューで再構成したセグメントを受信ウィンドバッファに書き込む。
    12581217 */
    12591218
     
    12651224
    12661225        /*
    1267          *  受信データを受信ウィンドバッファに書き込み、
    1268          *  rcv_nxt を完了した SEQ だけ進める。
     1226         *  受信データを受信ウィンドバッファに書き込み、
     1227         *  rcv_nxt を完了した SEQ だけ進める。
    12691228         */
    12701229        if (TCP_FSM_HAVE_ESTABLISHED(cep->fsm_state)) {
     
    12751234                                break;
    12761235
    1277                         /* 次のセグメントに進む。*/
     1236                        /* 次のセグメントに進む。*/
    12781237                        cep->reassq = qhdr->next;
    12791238
    1280                         /* FIN フラグのみ残す。*/
     1239                        /* FIN フラグのみ残す。*/
    12811240                        flags &= TCP_FLG_FIN;
    12821241
    1283                         /* データを受信ウィンドバッファに書き込む。*/
     1242                        /* データを受信ウィンドバッファに書き込む。*/
    12841243                        TCP_WRITE_RWBUF(cep, q, (uint_t)(GET_IP_TCP_Q_HDR_OFFSET(q)));
    12851244                        }
     
    12931252
    12941253/*
    1295  *  tcp_write_raque -- 受信セグメントを再構成して、受信再構成キューに繋ぐ。
     1254 *  tcp_write_raque -- 受信セグメントを再構成して、受信再構成キューに繋ぐ。
    12961255 */
    12971256
     
    13041263        int32_t         len;
    13051264
    1306         /*  TCP ヘッダの位置を保存する。*/
     1265        /*  TCP ヘッダの位置を保存する。*/
    13071266        SET_IP_TCP_Q_HDR_OFFSET(input, thoff);
    13081267
    13091268        /*
    1310          *  MAX_TCP_REALLOC_SIZE 以下の場合は、新たにネットワークバッファを
    1311          *  割当てて、データをコピーする。
    1312          *  このとき、IP のオプション(拡張ヘッダ)と TCP のオプションは削除する。
     1269         *  MAX_TCP_REALLOC_SIZE 以下の場合は、新たにネットワークバッファを
     1270         *  割当てて、データをコピーする。
     1271         *  このとき、IP のオプション(拡張ヘッダ)と TCP のオプションは削除する。
    13131272         */
    13141273        len  = IF_IP_TCP_HDR_SIZE(input) + inqhdr->slen;
     
    13171276
    13181277                /*
    1319                  *  ネットワークバッファが確保できないときは割当てない。
     1278                 *  ネットワークバッファが確保できないときは割当てない。
    13201279                 */
    13211280                if (tget_net_buf(&new, (uint_t)len, TMO_TCP_GET_NET_BUF) != E_OK)
     
    13421301
    13431302        /*
    1344          *  今回追加するセグメントより前(p)と後(q)のセグメントを探す。
     1303         *  今回追加するセグメントより前(p)と後(q)のセグメントを探す。
    13451304         *
    13461305         *    +-------------------------+
     
    13651324
    13661325        /*
    1367          *  前(p)のセグメントがあれば、既に、今回と同じセグメントが
    1368          *  あることもある。その場合は、その部分またはå
    1369 ¨ã¦ã‚’破棄する。
     1326         *  前(p)のセグメントがあれば、既に、今回と同じセグメントが
     1327         *  あることもある。その場合は、その部分または全てを破棄する。
    13701328         *
    13711329         *    qhdr->seq
     
    13891347
    13901348                        /*
    1391                          *  len が正であれば、前(p) のセグメントと今回の
    1392                          *  セグメントが重なっている。
     1349                         *  len が正であれば、前(p) のセグメントと今回の
     1350                         *  セグメントが重なっている。
    13931351                         */
    13941352                        if (len >= inqhdr->slen) {
    13951353
    13961354                                /*
    1397                                  *  len が今回のセグメントと同じなら
    1398                                  *  まったく同じセグメントなので何もしない。
     1355                                 *  len が今回のセグメントと同じなら
     1356                                 *  まったく同じセグメントなので何もしない。
    13991357                                 */
    14001358                                if (new != NULL) {
     
    14071365
    14081366                        /*
    1409                          *  追加するセグメントの SDU を len 分前に詰める。
     1367                         *  追加するセグメントの SDU を len 分前に詰める。
    14101368                         */
    14111369                        inqhdr->seq  += len;
     
    14161374
    14171375        /*
    1418          *  キューにつなぐ前に、新しいネットワークバッファにデータを移す。
    1419          *  TCP のオプションは削除する。
     1376         *  キューにつなぐ前に、新しいネットワークバッファにデータを移す。
     1377         *  TCP のオプションは削除する。
    14201378         */
    14211379        if (new != NULL) {
     
    14301388
    14311389        /*
    1432          *  重なる後(q)のセグメントを調整する。
     1390         *  重なる後(q)のセグメントを調整する。
    14331391         *
    14341392         *    inqhdr->seq
     
    14501408                len = inqhdr->seq + inqhdr->slen - qhdr->seq;
    14511409                if (len <= 0)
    1452                         /* len が負なら重なっていない。*/
     1410                        /* len が負なら重なっていない。*/
    14531411                        break;
    14541412                else if (len < qhdr->slen) {
    14551413
    14561414                        /*
    1457                          *  後ろで重なっているセグメントの SDU を len 分前に詰める。
     1415                         *  後ろで重なっているセグメントの SDU を len 分前に詰める。
    14581416                         *
    14591417                         *    inqhdr->seq
     
    14991457
    15001458/*
    1501  *  tcp_rexmt_val -- 再送タイムアウト値を返す。
     1459 *  tcp_rexmt_val -- 再送タイムアウト値を返す。
    15021460 */
    15031461
     
    15151473
    15161474/*
    1517  *  tcp_init_cep -- 通信端点を初期化する。
     1475 *  tcp_init_cep -- 通信端点を初期化する。
    15181476 */
    15191477
     
    15241482#ifdef TCP_CFG_RWBUF_CSAVE
    15251483        /*
    1526          * 受信ウィンドバッファの省コピー機能を有効にした場合、
    1527          * 受信ウィンドバッファがå
    1528 ¨ã¦è§£æ”¾ã•ã‚Œãªã„ことがあるので、
    1529          * ここで解放する。
     1484         * 受信ウィンドバッファの省コピー機能を有効にした場合、
     1485         * 受信ウィンドバッファが全て解放されないことがあるので、
     1486         * ここで解放する。
    15301487         */
    15311488        if (cep->rwbufq != NULL) {
     
    15421499        cep->rbuf_rptr  = cep->rbuf_wptr = cep->rbuf;
    15431500
    1544         cep->maxseg     = DEF_TCP_SND_SEG;              /* 送信最大セグメントサイズ         */
    1545         cep->srtt       = TCP_TVAL_SRTT_BASE;           /* 滑らかな移動平均                     */
     1501        cep->maxseg     = DEF_TCP_SND_SEG;              /* 送信最大セグメントサイズ         */
     1502        cep->srtt       = TCP_TVAL_SRTT_BASE;           /* 滑らかな移動平均                     */
    15461503        cep->rttvar     = ((TCP_TVAL_RTO_BASE - TCP_TVAL_SRTT_BASE) << TCP_RTTVAR_SHIFT) / 4;
    1547                                                         /* 滑らかな分散                           */
    1548         cep->rxtcur     = TCP_TVAL_RTO_BASE;            /* 現在の再送値                           */
    1549         cep->snd_cwnd   =  MAX_TCP_WIN_SIZE;            /* 輻輳ウィンドサイズ                  */
    1550         cep->snd_ssthresh= MAX_TCP_WIN_SIZE;            /* 輻輳ウィンドサイズ(snd_cwnd)の     åˆ¶é™å€¤       */
     1504                                                        /* 滑らかな分散                               */
     1505        cep->rxtcur     = TCP_TVAL_RTO_BASE;            /* 現在の再送値                               */
     1506        cep->snd_cwnd   =  MAX_TCP_WIN_SIZE;            /* 輻輳ウィンドサイズ                    */
     1507        cep->snd_ssthresh= MAX_TCP_WIN_SIZE;            /* 輻輳ウィンドサイズ(snd_cwnd)の 制限値     */
    15511508
    15521509        /*
    1553          * 以下に関係しないフラグをクリアーする。
    1554          * ・送受信ウィンドバッファの省コピー機能
    1555          * ・動的な通信端点の生成・削除機能
    1556          * ・通信端点のネットワーク層プロトコル
     1510         * 以下に関係しないフラグをクリアーする。
     1511         * ・送受信ウィンドバッファの省コピー機能
     1512         * ・動的な通信端点の生成・削除機能
     1513         * ・通信端点のネットワーク層プロトコル
    15571514         */
    15581515        cep->flags &= TCP_CEP_FLG_NOT_CLEAR;
    15591516
    1560         /* セマフォを初期化する。*/
     1517        /* セマフォを初期化する。*/
    15611518        sig_sem(cep->semid_lock);
    15621519
    1563         /* フラグを初期化する。*/
     1520        /* フラグを初期化する。*/
    15641521        syscall(set_flg(cep->snd_flgid, TCP_CEP_EVT_SWBUF_READY));
    15651522        syscall(clr_flg(cep->rcv_flgid, TCP_CEP_EVT_RWBUF_READY));
     
    15671524
    15681525/*
    1569  *  tcp_notify -- ICMP エラーの処理
     1526 *  tcp_notify -- ICMP エラーの処理
    15701527 */
    15711528
     
    15781535
    15791536                /*
    1580                  *  コネクション開設済で、ホスト到達不能エラーの場合は、
    1581                  *  再送により処理する。
     1537                 *  コネクション開設済で、ホスト到達不能エラーの場合は、
     1538                 *  再送により処理する。
    15821539                 */
    15831540                if (cep->fsm_state == TCP_FSM_ESTABLISHED &&
     
    15861543
    15871544                /*
    1588                  *  コネクション開設中、同じエラーを何度か受信した場合は、
    1589                  *  å¾
    1590 ã¡çŠ¶æ
    1591 ‹ã‚’解除し、対応する関数にエラーを返させる。
     1545                 *  コネクション開設中、同じエラーを何度か受信した場合は、
     1546                 *  待ち状態を解除し、対応する関数にエラーを返させる。
    15921547                 */
    15931548                if (cep->fsm_state < TCP_FSM_ESTABLISHED && cep->rxtshift > 3 && cep->net_error != E_OK) {
     
    15981553                        cep->net_error = error;
    15991554
    1600                         /* 送信を指示する。*/
     1555                        /* 送信を指示する。*/
    16011556                        cep->flags |=  TCP_CEP_FLG_POST_OUTPUT;
    16021557                        sig_sem(SEM_TCP_POST_OUTPUT);
     
    16061561
    16071562/*
    1608  *  tcp_lock_cep -- TCP 通信端点をロックする。
     1563 *  tcp_lock_cep -- TCP 通信端点をロックする。
    16091564 */
    16101565
     
    16171572        *p_cep = NULL;
    16181573
    1619         /* TCP 通信端点 ID をチェックする。*/
     1574        /* TCP 通信端点 ID をチェックする。*/
    16201575        if (!VALID_TCP_CEPID(cepid))
    16211576                return E_ID;
    16221577
    1623         /* TCP 通信端点を得る。*/
     1578        /* TCP 通信端点を得る。*/
    16241579        cep = GET_TCP_CEP(cepid);
    16251580
    1626         /* TCP 通信端点をロックする。*/
     1581        /* TCP 通信端点をロックする。*/
    16271582        syscall(wai_sem(cep->semid_lock));
    16281583
    1629         /* TCP 通信端点をチェックする。*/
     1584        /* TCP 通信端点をチェックする。*/
    16301585        if (!VALID_TCP_CEP(cep)) {
    16311586                syscall(sig_sem(cep->semid_lock));
     
    16341589
    16351590        /*
    1636          *  API 機能コードとタスク識別子を記録する。
    1637          *  すでに記録されていれば、ペンディング中なのでエラー
     1591         *  API 機能コードとタスク識別子を記録する。
     1592         *  すでに記録されていれば、ペンディング中なのでエラー
    16381593         */
    16391594        if (IS_TFN_TCP_RCV(tfn)) {
     
    16571612                }
    16581613
    1659         /* 通信端点のロックを解除する。*/
     1614        /* 通信端点のロックを解除する。*/
    16601615        syscall(sig_sem(cep->semid_lock));
    16611616
     
    16671622
    16681623/*
    1669  *  トレース出力に用いるシリアルポート番号
     1624 *  トレース出力に用いるシリアルポート番号
    16701625 */
    16711626
     
    16751630
    16761631/*
    1677  *  コネクションの状æ
    1678 ‹
     1632 *  コネクションの状態
    16791633 */
    16801634
     
    16941648
    16951649/*
    1696  *  trace_putchar -- シリアルポートへの文字出力
     1650 *  trace_putchar -- シリアルポートへの文字出力
    16971651 */
    16981652
     
    17051659
    17061660/*
    1707  *  シリアルポートへの書式付文字列出力ライブラリ
    1708  */
    1709 
    1710 /*
    1711  *  数値変換のための変換表
     1661 *  シリアルポートへの書式付文字列出力ライブラリ
     1662 */
     1663
     1664/*
     1665 *  数値変換のための変換表
    17121666 */
    17131667
     
    17161670
    17171671/*
    1718  *  convert -- trace_printf の数値変換
     1672 *  convert -- trace_printf の数値変換
    17191673 */
    17201674
     
    17531707
    17541708/*
    1755  *  trace_printf -- シリアルポートへの書式付文字列出力
     1709 *  trace_printf -- シリアルポートへの書式付文字列出力
    17561710 */
    17571711
     
    17661720        va_start(ap, fmt);
    17671721        while ((ch = *fmt ++) != '\0') {
    1768                 if (ch != '%') {                /* 書式指定以外 */
     1722                if (ch != '%') {                /* 書式指定以外 */
    17691723                        trace_putchar(portid, (char)ch);
    17701724                        continue;
     
    17731727                width = longflag = 0;
    17741728                padchar = ' ';
    1775                 if ((ch = *fmt ++) == '0') {    /* 上位桁の 0 */
     1729                if ((ch = *fmt ++) == '0') {    /* 上位桁の 0 */
    17761730                        padchar = '0';
    17771731                        ch = *fmt ++;
    17781732                        }
    17791733
    1780                 while ('0' <= ch && ch <= '9') {        /* 出力å¹
    1781  */
     1734                while ('0' <= ch && ch <= '9') {        /* 出力幅 */
    17821735                        width = width * 10 + ch - '0';
    17831736                        ch = *fmt ++;
    17841737                        }
    17851738
    1786                 while (ch == 'l') {             /* long (long) の指定 */
     1739                while (ch == 'l') {             /* long (long) の指定 */
    17871740                        longflag ++;
    17881741                        ch = *fmt ++;
     
    18451798
    18461799/*
    1847  *  TCP フラグ文字列
     1800 *  TCP フラグ文字列
    18481801 */
    18491802
     
    18641817
    18651818/*
    1866  *  送信 TCP ヘッダのトレース出力
     1819 *  送信 TCP ヘッダのトレース出力
    18671820 */
    18681821
     
    19251878
    19261879/*
    1927  *  受信 TCP ヘッダのトレース出力
     1880 *  受信 TCP ヘッダのトレース出力
    19281881 *
    1929  *    注意: TCP ヘッダå†
    1930 ã¯ã€ã™ã§ã«ãƒ›ã‚¹ãƒˆãƒã‚¤ãƒˆã‚ªãƒ¼ãƒ€
     1882 *    注意: TCP ヘッダ内は、すでにホストバイトオーダ
    19311883 */
    19321884
  • asp3_gr_sakura/trunk/tinet/netinet/tcp_subr_cs.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    134122
    135123/*
    136  *  TCP 通信端点の送信ウィンドバッファの省コピー機能が有効な場合
    137  *  ただし、通信端点の送信ウィンドバッファ(cep->sbuf)の値により、
    138  *  TCP 通信端点毎に送信ウィンドバッファの省コピー機能を使用するか、
    139  *  使用しないかを切り替える。
    140  */
    141 
    142 /*
    143  *  tcp_drop_swbuf -- 送信ウィンドバッファから指定されたオクテット分削除する(選択)。
     124 *  TCP 通信端点の送信ウィンドバッファの省コピー機能が有効な場合
     125 *  ただし、通信端点の送信ウィンドバッファ(cep->sbuf)の値により、
     126 *  TCP 通信端点毎に送信ウィンドバッファの省コピー機能を使用するか、
     127 *  使用しないかを切り替える。
     128 */
     129
     130/*
     131 *  tcp_drop_swbuf -- 送信ウィンドバッファから指定されたオクテット分削除する(選択)。
    144132 */
    145133
     
    154142
    155143/*
    156  *  tcp_write_swbuf -- 送信ウィンドバッファにデータを書き込む(選択)。
     144 *  tcp_write_swbuf -- 送信ウィンドバッファにデータを書き込む(選択)。
    157145 */
    158146
     
    167155
    168156/*
    169  *  tcp_read_swbuf -- 送信ウィンドバッファからデータを読み出す(選択)。
     157 *  tcp_read_swbuf -- 送信ウィンドバッファからデータを読み出す(選択)。
    170158 */
    171159
     
    178166
    179167/*
    180  *  tcp_wait_swbuf -- 送信ウィンドバッファと相手の受信ウィンドが開くのをå¾
    181 ã¤ï¼ˆé¸æŠžï¼‰ã€‚
     168 *  tcp_wait_swbuf -- 送信ウィンドバッファと相手の受信ウィンドが開くのを待つ(選択)。
    182169 */
    183170
     
    192179
    193180/*
    194  *  tcp_get_swbuf_addr -- 送信ウィンドバッファの空きアドレスを獲得する(選択)。
     181 *  tcp_get_swbuf_addr -- 送信ウィンドバッファの空きアドレスを獲得する(選択)。
    195182 */
    196183
     
    205192
    206193/*
    207  *  tcp_send_swbuf -- 送信ウィンドバッファのデータを送信可能にする(選択)。
     194 *  tcp_send_swbuf -- 送信ウィンドバッファのデータを送信可能にする(選択)。
    208195 */
    209196
     
    218205
    219206/*
    220  *  tcp_free_swbufq -- 送信ウィンドバッファキューの解放を指示する(選択)。
     207 *  tcp_free_swbufq -- 送信ウィンドバッファキューの解放を指示する(選択)。
    221208 */
    222209
     
    229216
    230217/*
    231  *  tcp_alloc_swbuf -- 送信ウィンドバッファ用のネットワークバッファの割り当てを指示する(選択)。
     218 *  tcp_alloc_swbuf -- 送信ウィンドバッファ用のネットワークバッファの割り当てを指示する(選択)。
    232219 */
    233220
     
    240227
    241228/*
    242  *  tcp_is_swbuf_full -- 送信ウィンドバッファが満杯かチェックする(選択)。
     229 *  tcp_is_swbuf_full -- 送信ウィンドバッファが満杯かチェックする(選択)。
    243230 */
    244231
     
    255242
    256243/*
    257  *  tcp_drop_swbuf_cs -- 送信ウィンドバッファから指定されたオクテット分削除する(専用)。
     244 *  tcp_drop_swbuf_cs -- 送信ウィンドバッファから指定されたオクテット分削除する(専用)。
    258245 */
    259246
     
    262249{
    263250
    264         /*送信ウィンドバッファから指定されたオクテット分削除する。*/
     251        /*送信ウィンドバッファから指定されたオクテット分削除する。*/
    265252        cep->swbuf_count -= (uint16_t)len;
    266253
    267         /* 送信済みで、ACKå¾
    268 ã¡ã®æ™‚は、ACK完了に変更する。*/
     254        /* 送信済みで、ACK待ちの時は、ACK完了に変更する。*/
    269255        if (len > 0 && (cep->flags & TCP_CEP_FLG_WBCS_MASK) == TCP_CEP_FLG_WBCS_SENT) {
    270256                cep->flags = (cep->flags & ~TCP_CEP_FLG_WBCS_MASK) | TCP_CEP_FLG_WBCS_ACKED;
     
    274260
    275261/*
    276  *  tcp_write_swbuf_cs -- 送信ウィンドバッファにデータを書き込む(専用)。
     262 *  tcp_write_swbuf_cs -- 送信ウィンドバッファにデータを書き込む(専用)。
    277263 */
    278264
     
    283269        uint_t  hdr_size = IF_IP_TCP_NET_HDR_SIZE(&cep->dstaddr.ipaddr);
    284270
    285         /* 通信端点をロックする。*/
     271        /* 通信端点をロックする。*/
    286272        syscall(wai_sem(cep->semid_lock));
    287273
     
    295281                 *   <---------------- error --------------->
    296282                 *              ^
    297                  *              net_buf で 4 オクテット境界にアラインされている。
     283                 *              net_buf で 4 オクテット境界にアラインされている。
    298284                 *
    299                  *  tcp_output と ip_output で、チェックサムを計算するとき、
    300                  *  n が 4 オクテット境界になるように SDU の後ろに 0 を
    301                  *  パッディングする。その分を考æ
    302 ®ã—て送信ウィンドバッファの
    303                  *  空きサイズを 4 オクテット境界に調整する。
     285                 *  tcp_output と ip_output で、チェックサムを計算するとき、
     286                 *  n が 4 オクテット境界になるように SDU の後ろに 0 を
     287                 *  パッディングする。その分を考慮して送信ウィンドバッファの
     288                 *  空きサイズを 4 オクテット境界に調整する。
    304289                 */
    305290                error = (uint_t)(((error - hdr_size) >> 2 << 2) + hdr_size);
     
    310295                        len = (uint_t)(error - hdr_size);
    311296
    312                 /* 送信ウインドサイズによりサイズを調整する。*/
     297                /* 送信ウインドサイズによりサイズを調整する。*/
    313298                if (len > cep->snd_wnd)
    314299                        len = cep->snd_wnd;
     
    316301                        len = cep->snd_cwnd;
    317302
    318                 /* 相手の最大受信セグメントサイズ (maxseg) をè¶
    319 ãˆãªã„ようにする。*/
     303                /* 相手の最大受信セグメントサイズ (maxseg) を超えないようにする。*/
    320304                if (len > cep->maxseg)
    321305                        len = cep->maxseg;
    322306
    323                 /* データを移す。*/
     307                /* データを移す。*/
    324308                memcpy(cep->sbuf_wptr, (void*)((uint8_t*)data), (size_t)len);
    325309                cep->sbuf_wptr   += len;
     
    327311                error             = len;
    328312
    329                 /* ネットワークバッファ長と IP データグラム長を設定する。*/
     313                /* ネットワークバッファ長と IP データグラム長を設定する。*/
    330314                cep->swbufq->len = (uint16_t)(cep->swbuf_count + hdr_size);
    331315                SET_IP_SDU_SIZE(cep->swbufq, cep->swbuf_count + TCP_HDR_SIZE);
    332316
    333                 /* フラグを、送信可能に設定する。*/
     317                /* フラグを、送信可能に設定する。*/
    334318                cep->flags = (cep->flags & ~TCP_CEP_FLG_WBCS_MASK) | TCP_CEP_FLG_WBCS_SEND_READY;
    335319                }
    336320
    337         else {  /* 送信ウインドバッファが不正 */
     321        else {  /* 送信ウインドバッファが不正 */
    338322                syslog(LOG_WARNING, "[TCP] illegal window buff for send, CEP: %d, %4d < %4d.",
    339323                                    GET_TCP_CEPID(cep), error, hdr_size);
    340324
    341                 /* 送信ウィンドバッファキューのネットワークバッファを解放する。*/
     325                /* 送信ウィンドバッファキューのネットワークバッファを解放する。*/
    342326                tcp_free_swbufq_cs(cep);
    343327                }
    344328
    345         /* 通信端点のロックを解除する。*/
     329        /* 通信端点のロックを解除する。*/
    346330        syscall(sig_sem(cep->semid_lock));
    347331
     
    350334
    351335/*
    352  *  tcp_wait_swbuf_cs -- 送信ウィンドバッファと相手の受信ウィンドが開くのをå¾
    353 ã¤ï¼ˆå°‚用)。
     336 *  tcp_wait_swbuf_cs -- 送信ウィンドバッファと相手の受信ウィンドが開くのを待つ(専用)。
    354337 */
    355338
     
    362345        int_t   win;
    363346
    364         /* 送信ウィンドバッファが割当て済みで、空きがあれば終了する。*/
     347        /* 送信ウィンドバッファが割当て済みで、空きがあれば終了する。*/
    365348        if ((cep->flags & TCP_CEP_FLG_WBCS_MASK) == TCP_CEP_FLG_WBCS_NBUF_READY &&
    366349            (cep->swbuf_count + IF_IP_TCP_NET_HDR_SIZE(&cep->dstaddr.ipaddr)) < net_buf_siz(cep->swbufq))
    367350                return E_OK;
    368351
    369         /* 送信中であれば、終了するまでå¾
    370 æ©Ÿã™ã‚‹ã€‚*/
     352        /* 送信中であれば、終了するまで待機する。*/
    371353        while ((cep->flags & TCP_CEP_FLG_WBCS_MASK) != TCP_CEP_FLG_WBCS_FREE) {
    372354
    373                 /* 送信å¾
    374 ã¡ã®æ™‚é–“ã‚’ tmout から減ずる。*/
     355                /* 送信待ちの時間を tmout から減ずる。*/
    375356                if (!(tmout == TMO_POL || tmout == TMO_FEVR))
    376357                        syscall(get_tim(&before));
     
    381362                syscall(clr_flg(cep->snd_flgid, (FLGPTN)(~TCP_CEP_EVT_SWBUF_READY)));
    382363
    383                 /* 送信å¾
    384 ã¡ã®æ™‚é–“ã‚’ tmout から減ずる。*/
     364                /* 送信待ちの時間を tmout から減ずる。*/
    385365                if (!(tmout == TMO_POL || tmout == TMO_FEVR)) {
    386366                        syscall(get_tim(&after));
     
    391371
    392372                /*
    393                  *  送信できるか、CEP の FSM 状æ
    394 ‹ã‚’見る。
    395                  *  送信ウインドバッファが空くまでå¾
    396 ã¤é–“に、送信不能になった場合は、
    397                  *  コネクションが切断されたことを意味している。
     373                 *  送信できるか、CEP の FSM 状態を見る。
     374                 *  送信ウインドバッファが空くまで待つ間に、送信不能になった場合は、
     375                 *  コネクションが切断されたことを意味している。
    398376                 */
    399377                if (!TCP_FSM_CAN_SEND_MORE(cep->fsm_state))
     
    401379                }
    402380
    403         /* 相手の受信ウィンドが閉じている場合は、開くまでå¾
    404 æ©Ÿã™ã‚‹ã€‚*/
     381        /* 相手の受信ウィンドが閉じている場合は、開くまで待機する。*/
    405382        while (true) {
    406383
    407384                /*
    408                  *  snd_wnd:  相手の受信可能ウィンドサイズ
    409                  *  snd_cwnd: 輻輳ウィンドサイズ
     385                 *  snd_wnd:  相手の受信可能ウィンドサイズ
     386                 *  snd_cwnd: 輻輳ウィンドサイズ
    410387                 *
    411                  *  win: どちらか小さいウィンドサイズに設定する。
     388                 *  win: どちらか小さいウィンドサイズに設定する。
    412389                 */
    413390                win = cep->snd_wnd < cep->snd_cwnd ? cep->snd_wnd : cep->snd_cwnd;
     
    415392                        break;
    416393
    417                 /* 開きå¾
    418 ã¡ã®æ™‚é–“ã‚’ tmout から減ずる。*/
     394                /* 開き待ちの時間を tmout から減ずる。*/
    419395                if (!(tmout == TMO_POL || tmout == TMO_FEVR))
    420396                        syscall(get_tim(&before));
     
    425401                syscall(clr_flg(cep->snd_flgid, (FLGPTN)(~TCP_CEP_EVT_SWBUF_READY)));
    426402
    427                 /* 開きå¾
    428 ã¡ã®æ™‚é–“ã‚’ tmout から減ずる。*/
     403                /* 開き待ちの時間を tmout から減ずる。*/
    429404                if (!(tmout == TMO_POL || tmout == TMO_FEVR)) {
    430405                        syscall(get_tim(&after));
     
    435410
    436411                /*
    437                  *  送信できるか、CEP の FSM 状æ
    438 ‹ã‚’見る。
    439                  *  送信ウインドバッファが空くまでå¾
    440 ã¤é–“に、送信不能になった場合は、
    441                  *  コネクションが切断されたことを意味している。
     412                 *  送信できるか、CEP の FSM 状態を見る。
     413                 *  送信ウインドバッファが空くまで待つ間に、送信不能になった場合は、
     414                 *  コネクションが切断されたことを意味している。
    442415                 */
    443416                if (!TCP_FSM_CAN_SEND_MORE(cep->fsm_state))
     
    445418                }
    446419
    447         /* ネットワークバッファを獲得する。*/
     420        /* ネットワークバッファを獲得する。*/
    448421        if ((error = tcpn_get_segment(&cep->swbufq, cep, 0,
    449422                                     TCP_CFG_SWBUF_CSAVE_MIN_SIZE,
     
    452425                return error;
    453426
    454         /* 送信ウィンドバッファを初期化する。*/
     427        /* 送信ウィンドバッファを初期化する。*/
    455428        tcp_init_swbuf(cep);
    456429
     
    459432
    460433/*
    461  *  tcp_get_swbuf_addr_cs -- 送信ウィンドバッファの空きアドレスを獲得する(専用)。
     434 *  tcp_get_swbuf_addr_cs -- 送信ウィンドバッファの空きアドレスを獲得する(専用)。
    462435 */
    463436
     
    467440        ER_UINT error;
    468441
    469         /* 通信端点をロックする。*/
     442        /* 通信端点をロックする。*/
    470443        syscall(wai_sem(cep->semid_lock));
    471444
     
    479452                 *   <---------------- error --------------->
    480453                 *              ^
    481                  *              net_buf で 4 オクテット境界にアラインされている。
     454                 *              net_buf で 4 オクテット境界にアラインされている。
    482455                 *
    483                  *  tcp_output と ip_output で、チェックサムを計算するとき、
    484                  *  n が 4 オクテット境界になるように SDU の後ろに 0 を
    485                  *  パッディングする。その分を考æ
    486 ®ã—て送信ウィンドバッファの
    487                  *  空きサイズを 4 オクテット境界に調整する。
     456                 *  tcp_output と ip_output で、チェックサムを計算するとき、
     457                 *  n が 4 オクテット境界になるように SDU の後ろに 0 を
     458                 *  パッディングする。その分を考慮して送信ウィンドバッファの
     459                 *  空きサイズを 4 オクテット境界に調整する。
    488460                 */
    489461                error = (uint_t)(((error - IF_IP_TCP_NET_HDR_SIZE(&cep->dstaddr.ipaddr)) >> 2 << 2) - cep->swbuf_count);
    490462
    491                 /* 送信ウインドサイズによりサイズを調整する。*/
     463                /* 送信ウインドサイズによりサイズを調整する。*/
    492464                if (error > cep->snd_wnd)
    493465                        error = cep->snd_wnd;
     
    495467                        error = cep->snd_cwnd;
    496468
    497                 /* 相手の最大受信セグメントサイズ (maxseg) をè¶
    498 ãˆãªã„ようにする。*/
     469                /* 相手の最大受信セグメントサイズ (maxseg) を超えないようにする。*/
    499470                if (error > cep->maxseg)
    500471                        error = cep->maxseg;
    501472
    502                 /* 送信ウィンドバッファの空きデータ長を設定し、その値を返す。*/
     473                /* 送信ウィンドバッファの空きデータ長を設定し、その値を返す。*/
    503474                cep->get_buf_len = error;
    504475
    505                 /* 送信ウィンドバッファの空きアドレスのå
    506 ˆé ­ã‚’設定する。*/
     476                /* 送信ウィンドバッファの空きアドレスの先頭を設定する。*/
    507477                *p_buf = cep->sbuf_wptr;
    508478                }
    509479
    510         else {  /* ネットワークバッファが不正 */
    511 
    512                 /* 送信ウィンドバッファキューのネットワークバッファを解放する。*/
     480        else {  /* ネットワークバッファが不正 */
     481
     482                /* 送信ウィンドバッファキューのネットワークバッファを解放する。*/
    513483                tcp_free_swbufq_cs(cep);
    514484                }
    515485
    516         /* 通信端点のロックを解除する。*/
     486        /* 通信端点のロックを解除する。*/
    517487        syscall(sig_sem(cep->semid_lock));
    518488
     
    521491
    522492/*
    523  *  tcp_send_swbuf_cs -- 送信ウィンドバッファのデータを送信可能にする(専用)。
     493 *  tcp_send_swbuf_cs -- 送信ウィンドバッファのデータを送信可能にする(専用)。
    524494 */
    525495
     
    527497tcp_send_swbuf_cs (T_TCP_CEP *cep, uint_t len)
    528498{
    529         /* 通信端点をロックする。*/
     499        /* 通信端点をロックする。*/
    530500        syscall(wai_sem(cep->semid_lock));
    531501
     
    533503        cep->swbuf_count += len;
    534504
    535         /* ネットワークバッファ長と IP データグラム長を設定する。*/
     505        /* ネットワークバッファ長と IP データグラム長を設定する。*/
    536506        cep->swbufq->len = (uint16_t)(cep->swbuf_count + IF_IP_TCP_NET_HDR_SIZE(&cep->dstaddr.ipaddr));
    537507        SET_IP_SDU_SIZE(cep->swbufq, len + TCP_HDR_SIZE);
    538508
    539         /* tcp_get_buf の割当て長をリセットする。*/
     509        /* tcp_get_buf の割当て長をリセットする。*/
    540510        cep->get_buf_len = 0;
    541511
    542         /* 通信端点のロックを解除する。*/
     512        /* 通信端点のロックを解除する。*/
    543513        syscall(sig_sem(cep->semid_lock));
    544514
    545         /* フラグを、送信可能に設定し、強制的に送信する。*/
     515        /* フラグを、送信可能に設定し、強制的に送信する。*/
    546516        cep->flags = (cep->flags & ~TCP_CEP_FLG_WBCS_MASK) | TCP_CEP_FLG_WBCS_SEND_READY
    547517                                                       | TCP_CEP_FLG_FORCE
     
    551521
    552522/*
    553  *  tcp_free_swbufq_cs -- 送信ウィンドバッファキューの解放を指示する(専用)。
     523 *  tcp_free_swbufq_cs -- 送信ウィンドバッファキューの解放を指示する(専用)。
    554524 *
    555  *    注意:
    556  *      å¿
    557 è¦ã§ã‚れば、この関数を呼び出す前に、通信端点をロックし、
    558  *      戻った後、解除するå¿
    559 è¦ãŒã‚る。
     525 *    注意:
     526 *      必要であれば、この関数を呼び出す前に、通信端点をロックし、
     527 *      戻った後、解除する必要がある。
    560528 */
    561529
     
    563531tcp_free_swbufq_cs (T_TCP_CEP *cep)
    564532{
    565         /* 送信ウィンドバッファの空きå¾
    566 ã¡ã‚’取り消す。*/
     533        /* 送信ウィンドバッファの空き待ちを取り消す。*/
    567534        cep->flags &= ~TCP_CEP_FLG_WBCS_NBUF_REQ;
    568535
    569536        if ((cep->flags & TCP_CEP_FLG_WBCS_MASK) != TCP_CEP_FLG_WBCS_FREE) {
    570537                /*
    571                  *  送信ウィンドバッファを削除するために、フラグを ACK 完了に設定し、
    572                  *  TCP 出力タスクを起動する。
     538                 *  送信ウィンドバッファを削除するために、フラグを ACK 完了に設定し、
     539                 *  TCP 出力タスクを起動する。
    573540                 */
    574541                cep->flags = (cep->flags & ~TCP_CEP_FLG_WBCS_MASK) | TCP_CEP_FLG_WBCS_ACKED;
     
    578545
    579546/*
    580  *  tcp_alloc_swbuf_cs -- 送信ウィンドバッファ用のネットワークバッファの割り当てを指示する(専用)。
     547 *  tcp_alloc_swbuf_cs -- 送信ウィンドバッファ用のネットワークバッファの割り当てを指示する(専用)。
    581548 */
    582549
     
    587554
    588555        /*
    589          *  送信ウィンドバッファが未使用の場合のみ、
    590          *  送信ウィンドバッファ用のネットワークバッファの割り当てを指示する。
     556         *  送信ウィンドバッファが未使用の場合のみ、
     557         *  送信ウィンドバッファ用のネットワークバッファの割り当てを指示する。
    591558         */
    592559        if ((cep->flags & TCP_CEP_FLG_WBCS_MASK) == TCP_CEP_FLG_WBCS_FREE)
     
    595562
    596563/*
    597  *  tcp_is_swbuf_full_cs -- 送信ウィンドバッファが満杯かチェックする(専用)。
     564 *  tcp_is_swbuf_full_cs -- 送信ウィンドバッファが満杯かチェックする(専用)。
    598565 */
    599566
     
    606573
    607574/*
    608  *  tcp_init_swbuf -- 送信ウィンドバッファを初期化する(専用)。
     575 *  tcp_init_swbuf -- 送信ウィンドバッファを初期化する(専用)。
    609576 *
    610  *    注意: tcp_get_segment でネットワークバッファを獲得した
    611  *          直後に呼び出すこと。
     577 *    注意: tcp_get_segment でネットワークバッファを獲得した
     578 *          直後に呼び出すこと。
    612579 */
    613580
     
    615582tcp_init_swbuf (T_TCP_CEP *cep)
    616583{
    617         /* 送信ウインドバッファの使用中サイズをリセットする。*/
     584        /* 送信ウインドバッファの使用中サイズをリセットする。*/
    618585        cep->swbuf_count = 0;
    619586
    620         /* 送信ウインドバッファのアドレスを設定する。*/
     587        /* 送信ウインドバッファのアドレスを設定する。*/
    621588        cep->sbuf_wptr = cep->sbuf_rptr = GET_TCP_SDU(cep->swbufq, IF_IP_TCP_NET_HDR_OFFSET(&cep->dstaddr.ipaddr));
    622589
    623         /* フラグを、ネットワークバッファ割当て済みに設定する。*/
     590        /* フラグを、ネットワークバッファ割当て済みに設定する。*/
    624591        cep->flags = (cep->flags & ~(TCP_CEP_FLG_WBCS_NBUF_REQ | TCP_CEP_FLG_WBCS_MASK))
    625592                                 |   TCP_CEP_FLG_WBCS_NBUF_READY;
     
    627594
    628595/*
    629  *  tcp_push_res_nbuf -- ネットワークバッファを予約する(専用)。
     596 *  tcp_push_res_nbuf -- ネットワークバッファを予約する(専用)。
    630597 */
    631598
     
    645612                if ((cep->flags & TCP_CEP_FLG_WBCS_MASK) == TCP_CEP_FLG_WBCS_NBUF_PEND) {
    646613
    647                         /* ネットワークバッファを予約する。*/
     614                        /* ネットワークバッファを予約する。*/
    648615                        cep->swbufq = nbuf;
    649616                        nbuf = NULL;
    650617
    651                         /* フラグを予約に設定する。*/
     618                        /* フラグを予約に設定する。*/
    652619                        cep->flags = (cep->flags & ~TCP_CEP_FLG_WBCS_MASK) | TCP_CEP_FLG_WBCS_NBUF_RSVD;
    653620                        sel_ix = ix;
     
    664631
    665632/*
    666  *  tcp_pull_res_nbuf -- 予約してあるネットワークバッファ返す(専用)。
     633 *  tcp_pull_res_nbuf -- 予約してあるネットワークバッファ返す(専用)。
    667634 */
    668635
     
    676643        if ((cep->flags & TCP_CEP_FLG_WBCS_MASK) == TCP_CEP_FLG_WBCS_NBUF_RSVD) {
    677644
    678                 /* 予約してあるネットワークバッファを返す。*/
     645                /* 予約してあるネットワークバッファを返す。*/
    679646                nbuf = cep->swbufq;
    680647                cep->swbufq = NULL;
    681648
    682                 /* TCP 出力タスクを起動する。*/
     649                /* TCP 出力タスクを起動する。*/
    683650                sig_sem(SEM_TCP_POST_OUTPUT);
    684651                }
     
    698665
    699666/*
    700  *  TCP 通信端点の受信ウィンドバッファの省コピー機能が有効な場合
    701  *  ただし、通信端点の受信ウィンドバッファ(cep->rbuf)の値により、
    702  *  TCP 通信端点毎に受信ウィンドバッファの省コピー機能を使用するか、
    703  *  使用しないかを切り替える。
    704  */
    705 
    706 /*
    707  *  tcp_drop_rwbuf -- 受信ウィンドバッファキューの最初のネットワークバッファを解放する。
     667 *  TCP 通信端点の受信ウィンドバッファの省コピー機能が有効な場合
     668 *  ただし、通信端点の受信ウィンドバッファ(cep->rbuf)の値により、
     669 *  TCP 通信端点毎に受信ウィンドバッファの省コピー機能を使用するか、
     670 *  使用しないかを切り替える。
     671 */
     672
     673/*
     674 *  tcp_drop_rwbuf -- 受信ウィンドバッファキューの最初のネットワークバッファを解放する。
    708675 */
    709676
     
    718685
    719686/*
    720  *  tcp_read_rwbuf -- 受信ウィンドバッファから指定されたオクテット分読み出す。
     687 *  tcp_read_rwbuf -- 受信ウィンドバッファから指定されたオクテット分読み出す。
    721688 */
    722689
     
    731698
    732699/*
    733  *  tcp_get_rwbuf_addr -- 受信ウィンドバッファの空きアドレスを獲得する。
     700 *  tcp_get_rwbuf_addr -- 受信ウィンドバッファの空きアドレスを獲得する。
    734701 */
    735702
     
    744711
    745712/*
    746  *  tcp_free_rwbufq -- 受信ウィンドバッファキューを解放する。
     713 *  tcp_free_rwbufq -- 受信ウィンドバッファキューを解放する。
    747714 */
    748715
     
    755722
    756723/*
    757  *  tcp_write_rwbuf -- 受信ウィンドバッファにデータを書き込む。
     724 *  tcp_write_rwbuf -- 受信ウィンドバッファにデータを書き込む。
    758725 */
    759726
     
    770737
    771738/*
    772  *  TCP 通信端点の受信ウィンドバッファの省コピー機能が有効
    773  */
    774 
    775 /*
    776  *  tcp_drop_rwbuf -- 受信ウィンドバッファキューの最初のネットワークバッファを解放する。
     739 *  TCP 通信端点の受信ウィンドバッファの省コピー機能が有効
     740 */
     741
     742/*
     743 *  tcp_drop_rwbuf -- 受信ウィンドバッファキューの最初のネットワークバッファを解放する。
    777744 */
    778745
     
    787754                cep->rwbuf_count -= len;
    788755
    789                 /* ネットワークバッファにデータが無くなったら解放する。*/
     756                /* ネットワークバッファにデータが無くなったら解放する。*/
    790757                if (len == qhdr->slen) {
    791758                        T_NET_BUF *next;
     
    809776
    810777/*
    811  *  tcp_read_rwbuf -- 受信ウィンドバッファから指定されたオクテット分読み出す。
     778 *  tcp_read_rwbuf -- 受信ウィンドバッファから指定されたオクテット分読み出す。
    812779 */
    813780
     
    819786        uint8_t         *buf = (uint8_t*)data;
    820787
    821         /* 通信端点をロックする。*/
     788        /* 通信端点をロックする。*/
    822789        syscall(wai_sem(cep->semid_lock));
    823790
    824791        /*
    825          *  受信ウィンドバッファキューにネットワークバッファが無くなるか
    826          *  len が 0 になるまで続ける。
     792         *  受信ウィンドバッファキューにネットワークバッファが無くなるか
     793         *  len が 0 になるまで続ける。
    827794         */
    828795        while (cep->rwbufq != NULL && len > 0) {
     
    830797
    831798                /*
    832                  *  len と受信ウィンドバッファキューのå
    833 ˆé ­ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒãƒƒãƒ•ã‚¡ã®
    834                  *  データ数の小さい方を移すデータ数にする。
     799                 *  len と受信ウィンドバッファキューの先頭ネットワークバッファの
     800                 *  データ数の小さい方を移すデータ数にする。
    835801                 */
    836802                if (len > qhdr->slen)
     
    844810
    845811                /*
    846                  *  受信ウィンドバッファキューのネットワークバッファに
    847                  *  データが無くなったら解放する。
     812                 *  受信ウィンドバッファキューのネットワークバッファに
     813                 *  データが無くなったら解放する。
    848814                 */
    849815                tcp_drop_rwbuf_cs(cep, blen);
     
    854820                }
    855821
    856         /* 通信端点のロックを解除する。*/
     822        /* 通信端点のロックを解除する。*/
    857823        syscall(sig_sem(cep->semid_lock));
    858824
     
    861827
    862828/*
    863  *  tcp_get_rwbuf_addr -- 受信ウィンドバッファの空きアドレスを獲得する。
     829 *  tcp_get_rwbuf_addr -- 受信ウィンドバッファの空きアドレスを獲得する。
    864830 */
    865831
     
    870836        uint_t          len;
    871837
    872         /* 通信端点をロックする。*/
     838        /* 通信端点をロックする。*/
    873839        syscall(wai_sem(cep->semid_lock));
    874840
    875841        if (cep->rwbufq == NULL) {
    876842
    877                 /* 受信ウィンドバッファがå
    878 ¨ã¦é–‹æ”¾ã•ã‚Œã¦ã„るとき。*/
     843                /* 受信ウィンドバッファが全て開放されているとき。*/
    879844                *p_buf = NULL;
    880845                len = 0;
     
    882847        else {
    883848
    884                 /* 受信ウィンドバッファのデータのアドレスのå
    885 ˆé ­ã‚’設定する。*/
     849                /* 受信ウィンドバッファのデータのアドレスの先頭を設定する。*/
    886850                qhdr = GET_TCP_Q_HDR(cep->rwbufq, GET_IP_TCP_Q_HDR_OFFSET(cep->rwbufq));
    887851                *p_buf = GET_TCP_SDU(cep->rwbufq, GET_IP_TCP_Q_HDR_OFFSET(cep->rwbufq)) + qhdr->soff;
    888852
    889                 /* 受信ウィンドバッファのデータ長を計算する。*/
     853                /* 受信ウィンドバッファのデータ長を計算する。*/
    890854                len = qhdr->slen;
    891855                }
    892856
    893         /* 通信端点のロックを解除する。*/
     857        /* 通信端点のロックを解除する。*/
    894858        syscall(sig_sem(cep->semid_lock));
    895859
    896         /* 受信ウィンドバッファのデータ長を設定し、その値を返す。*/
     860        /* 受信ウィンドバッファのデータ長を設定し、その値を返す。*/
    897861        cep->rcv_buf_len = len;
    898862        return len;
     
    900864
    901865/*
    902  *  tcp_free_rwbufq -- 受信ウィンドバッファキューを解放する。
     866 *  tcp_free_rwbufq -- 受信ウィンドバッファキューを解放する。
    903867 *
    904  *    注意:
    905  *      å¿
    906 è¦ã§ã‚れば、この関数を呼び出す前に、通信端点をロックし、
    907  *      戻った後、解除するå¿
    908 è¦ãŒã‚る。
     868 *    注意:
     869 *      必要であれば、この関数を呼び出す前に、通信端点をロックし、
     870 *      戻った後、解除する必要がある。
    909871 */
    910872
     
    928890                        }
    929891
    930                 /* 受信ウィンドバッファの使用中サイズをリセットする。*/
     892                /* 受信ウィンドバッファの使用中サイズをリセットする。*/
    931893                cep->rwbuf_count = 0;
    932894                }
     
    934896
    935897/*
    936  *  tcp_write_rwbuf -- 受信ウィンドバッファにデータを書き込む。
     898 *  tcp_write_rwbuf -- 受信ウィンドバッファにデータを書き込む。
    937899 *
    938  *    注意:
    939  *      å
    940 ¥åŠ› input は、T_TCP_Q_HDR によりリンクされ、
    941  *      並べ替えが終了していなければならない。また、
    942  *      追加するデータは、受信ウィンドバッファに収まること。
     900 *    注意:
     901 *      入力 input は、T_TCP_Q_HDR によりリンクされ、
     902 *      並べ替えが終了していなければならない。また、
     903 *      追加するデータは、受信ウィンドバッファに収まること。
    943904 */
    944905
     
    950911        uint_t          inlen, last;
    951912
    952         /* 通信端点をロックする。*/
     913        /* 通信端点をロックする。*/
    953914        syscall(wai_sem(cep->semid_lock));
    954915
     
    963924
    964925                /*
    965                  *  TCP 通信端点の受信ウィンドバッファの省コピー機能の、
    966                  *  受信ウィンドバッファキューの最大エントリ数をè¶
    967 ãˆã‚‹ã¨ãã¯ã€
    968                  *  受信したセグメントを破棄する。
    969                  *  ただし、SDU 長が 0 のセグメントと FIN セグメントは破棄しない。
    970                  *  なお、正常に受信したセグメントも破棄するため、再送回数が増加する。
     926                 *  TCP 通信端点の受信ウィンドバッファの省コピー機能の、
     927                 *  受信ウィンドバッファキューの最大エントリ数を超えるときは、
     928                 *  受信したセグメントを破棄する。
     929                 *  ただし、SDU 長が 0 のセグメントと FIN セグメントは破棄しない。
     930                 *  なお、正常に受信したセグメントも破棄するため、再送回数が増加する。
    971931                 */
    972932                syscall(rel_net_buf(input));
    973933
    974                 /* 通信端点のロックを解除する。*/
     934                /* 通信端点のロックを解除する。*/
    975935                syscall(sig_sem(cep->semid_lock));
    976936                return;
     
    983943        qhdr  = (T_TCP_Q_HDR*)GET_TCP_HDR(input, thoff);
    984944
    985         /* 受信済みシーケンス番号を更新する。*/
     945        /* 受信済みシーケンス番号を更新する。*/
    986946        cep->rcv_nxt += inlen;
    987947
    988         /* 緊急データの SDU 補正を行う。*/
     948        /* 緊急データの SDU 補正を行う。*/
    989949        if (qhdr->urp > 0 && inlen > 0) {
    990950                inlen      -= qhdr->urp;
     
    995955        last  = cep->rwbuf_count;
    996956
    997         /* ネットワークバッファを受信ウィンドバッファキューの最後に連結する。*/
     957        /* ネットワークバッファを受信ウィンドバッファキューの最後に連結する。*/
    998958        qhdr->next = NULL;
    999959        nextp = &cep->rwbufq;
     
    1003963
    1004964        /*
    1005          *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
    1006          *  これは、アプリケーションに、相手からこれ以上データが送られて
    1007          *  こないことを知らせるためである。
     965         *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
     966         *  これは、アプリケーションに、相手からこれ以上データが送られて
     967         *  こないことを知らせるためである。
    1008968         */
    1009969        if (inlen > 0) {
     
    1013973                }
    1014974
    1015         /* 通信端点のロックを解除する。*/
     975        /* 通信端点のロックを解除する。*/
    1016976        syscall(sig_sem(cep->semid_lock));
    1017977
    1018978#ifdef TCP_CFG_NON_BLOCKING
    1019979
    1020         if (cep->rcv_nblk_tfn == TFN_TCP_RCV_BUF) {     /* ノンブロッキングコール */
     980        if (cep->rcv_nblk_tfn == TFN_TCP_RCV_BUF) {     /* ノンブロッキングコール */
    1021981
    1022982                int_t   len;
     
    1026986
    1027987                /*
    1028                  *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
    1029                  *  これは、アプリケーションに、相手からこれ以上データが送られて
    1030                  *  こないことを知らせるためである。
     988                 *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
     989                 *  これは、アプリケーションに、相手からこれ以上データが送られて
     990                 *  こないことを知らせるためである。
    1031991                 */
    1032992                if (len > 0 || inlen == 0) {
    1033993
    1034                         /* tcp_rcv_buf の割当て長を設定する。*/
     994                        /* tcp_rcv_buf の割当て長を設定する。*/
    1035995                        cep->rcv_buf_len = len;
    1036996
    1037                         /* 受信ウィンドバッファのアドレスを返す。*/
     997                        /* 受信ウィンドバッファのアドレスを返す。*/
    1038998                        *cep->rcv_p_buf = GET_TCP_SDU(cep->rwbufq,
    1039999                                          GET_IP_TCP_Q_HDR_OFFSET(cep->rwbufq)) + qhdr->soff;
     
    10521012
    10531013                                /*
    1054                                  *  通信端点をロックして、
    1055                                  *  受信ウィンドバッファキューのネットワークバッファを解放する。
     1014                                 *  通信端点をロックして、
     1015                                 *  受信ウィンドバッファキューのネットワークバッファを解放する。
    10561016                                 */
    10571017                                syscall(wai_sem(cep->semid_lock));
     
    10611021                        }
    10621022
    1063                 /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
     1023                /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
    10641024                cep->rcv_tskid = TA_NULL;
    10651025                cep->rcv_tfn   = cep->rcv_nblk_tfn = TFN_TCP_UNDEF;
    10661026                }
    10671027
    1068         else if (cep->rcv_nblk_tfn == TFN_TCP_RCV_DAT) {        /* ノンブロッキングコール */
     1028        else if (cep->rcv_nblk_tfn == TFN_TCP_RCV_DAT) {        /* ノンブロッキングコール */
    10691029                int_t   len;
    10701030
    1071                 /* 受信ウィンドバッファからデータを取り出す。*/
     1031                /* 受信ウィンドバッファからデータを取り出す。*/
    10721032                if ((len = tcp_read_rwbuf_cs(cep, cep->rcv_data, (uint_t)cep->rcv_len)) > 0) {
    1073                         /* 相手にウィンドウサイズが変わったことを知らせるため出力をポストする。*/
     1033                        /* 相手にウィンドウサイズが変わったことを知らせるため出力をポストする。*/
    10741034                        cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    10751035                        sig_sem(SEM_TCP_POST_OUTPUT);
     
    10771037
    10781038                /*
    1079                  *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
    1080                  *  これは、アプリケーションに、相手からこれ以上データが送られて
    1081                  *  こないことを知らせるためである。
     1039                 *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
     1040                 *  これは、アプリケーションに、相手からこれ以上データが送られて
     1041                 *  こないことを知らせるためである。
    10821042                 */
    10831043                if (len > 0 || inlen == 0) {
     
    10941054                        }
    10951055
    1096                 /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
     1056                /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
    10971057                cep->rcv_tskid = TA_NULL;
    10981058                cep->rcv_tfn   = cep->rcv_nblk_tfn = TFN_TCP_UNDEF;
     
    11041064                if (inlen == 0 && cep->rwbuf_count == 0) {
    11051065                        /*
    1106                          *  受信ウィンドバッファå†
    1107 ã®ãƒ‡ãƒ¼ã‚¿æ•°ãŒ 0 で、
    1108                          *  相手から FIN フラグが付いたセグメントを受信したときは、
    1109                          *  通信端点をロックして、
    1110                          *  受信ウィンドバッファキューのネットワークバッファを解放する。
     1066                         *  受信ウィンドバッファ内のデータ数が 0 で、
     1067                         *  相手から FIN フラグが付いたセグメントを受信したときは、
     1068                         *  通信端点をロックして、
     1069                         *  受信ウィンドバッファキューのネットワークバッファを解放する。
    11111070                         */
    11121071                        syscall(wai_sem(cep->semid_lock));
     
    11161075
    11171076                /*
    1118                  *  受信ウィンドバッファにデータがå
    1119 ¥ã‚‹ã‹ã€ inlen == 0 の時、å
    1120 ¥åŠ›ã‚¿ã‚¹ã‚¯ã‚’起床する。
    1121                  *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
    1122                  *  これは、アプリケーションに、相手からこれ以上データが送られて
    1123                  *  こないことを知らせるためである。
     1077                 *  受信ウィンドバッファにデータが入るか、 inlen == 0 の時、入力タスクを起床する。
     1078                 *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
     1079                 *  これは、アプリケーションに、相手からこれ以上データが送られて
     1080                 *  こないことを知らせるためである。
    11241081                 */
    11251082                if ((last == 0 && cep->rwbuf_count > 0) || inlen == 0) {
  • asp3_gr_sakura/trunk/tinet/netinet/tcp_subr_ncs.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    130118
    131119/*
    132  *  TCP 通信端点の送信ウィンドバッファの省コピー機能が無効
    133  */
    134 
    135 /*
    136  *  tcp_read_swbuf -- 送信ウィンドバッファからデータを読み出す。
     120 *  TCP 通信端点の送信ウィンドバッファの省コピー機能が無効
     121 */
     122
     123/*
     124 *  tcp_read_swbuf -- 送信ウィンドバッファからデータを読み出す。
    137125 */
    138126
     
    144132        uint_t  hdr_offset = IF_IP_TCP_HDR_OFFSET(output);
    145133
    146         /* SDU の大きさをチェックする。*/
     134        /* SDU の大きさをチェックする。*/
    147135        if (sdu_size < GET_TCP_HDR_SIZE(output, hdr_offset) + len) {
    148136                syslog(LOG_INFO, "[TCP] shrink SUD len: %d -> %d",
     
    153141        wptr = GET_TCP_SDU(output, hdr_offset);
    154142
    155         /* 通信端点をロックする。*/
     143        /* 通信端点をロックする。*/
    156144        syscall(wai_sem(cep->semid_lock));
    157145
     
    159147        if (rptr - (uint8_t*)cep->sbuf > cep->sbufsz) {
    160148
    161                 /* 転送開始が送信ウィンドバッファの終わりをè¶
    162 ãˆã‚‹ã¨ãã®å‡¦ç†ã€€*/
     149                /* 転送開始が送信ウィンドバッファの終わりを超えるときの処理 */
    163150                rptr = (uint8_t*)cep->sbuf_rptr - (cep->sbufsz - doff);
    164151                }
     
    166153                uint_t sub;
    167154
    168                 /* 転送範囲がラウンドするときの処理 */
     155                /* 転送範囲がラウンドするときの処理 */
    169156                sub = (uint_t)(cep->sbufsz - (rptr - (uint8_t*)cep->sbuf));
    170157                memcpy((void*)wptr, rptr, (size_t)sub);
     
    178165        NET_COUNT_TCP(net_count_tcp[NC_TCP_SEND_DATA_OCTETS], len);
    179166
    180         /* 通信端点のロックを解除する。*/
     167        /* 通信端点のロックを解除する。*/
    181168        syscall(sig_sem(cep->semid_lock));
    182169        }
    183170
    184171/*
    185  *  tcp_drop_swbuf -- 送信ウィンドバッファから指定されたオクテット分削除する。
     172 *  tcp_drop_swbuf -- 送信ウィンドバッファから指定されたオクテット分削除する。
    186173 */
    187174
     
    191178        uint_t  last;
    192179
    193         /* 通信端点をロックする。*/
     180        /* 通信端点をロックする。*/
    194181        syscall(wai_sem(cep->semid_lock));
    195182
     
    197184
    198185        if (cep->sbuf_rptr + len > (uint8_t*)cep->sbuf + cep->sbufsz)
    199                 /* ラウンドするときの計算 */
     186                /* ラウンドするときの計算 */
    200187                cep->sbuf_rptr -= cep->sbufsz - len;
    201188        else
     
    203190        cep->swbuf_count -= (uint16_t)len;
    204191
    205         /* 通信端点のロックを解除する。*/
     192        /* 通信端点のロックを解除する。*/
    206193        syscall(sig_sem(cep->semid_lock));
    207194
    208195#ifdef TCP_CFG_NON_BLOCKING
    209196
    210         if (cep->snd_nblk_tfn == TFN_TCP_GET_BUF) {     /* ノンブロッキングコール */
    211 
    212                 /* 通信端点をロックする。*/
     197        if (cep->snd_nblk_tfn == TFN_TCP_GET_BUF) {     /* ノンブロッキングコール */
     198
     199                /* 通信端点をロックする。*/
    213200                syscall(wai_sem(cep->semid_lock));
    214201
    215                 /* 送信データ長を計算する。*/
     202                /* 送信データ長を計算する。*/
    216203                if (cep->sbufsz - cep->swbuf_count > cep->sbufsz - (cep->sbuf_wptr - (uint8_t*)cep->sbuf))
    217                         /* 書込みポインタがラウンドするときは、書込みポインタから送信ウィンドバッファの終わりまで */
     204                        /* 書込みポインタがラウンドするときは、書込みポインタから送信ウィンドバッファの終わりまで */
    218205                        len = (uint_t)(cep->sbufsz - (cep->sbuf_wptr - (uint8_t*)cep->sbuf));
    219206                else
    220207                        len = cep->sbufsz - cep->swbuf_count;
    221208
    222                 /* 通信端点のロックを解除する。*/
     209                /* 通信端点のロックを解除する。*/
    223210                syscall(sig_sem(cep->semid_lock));
    224211
    225212                if (len > 0) {
    226213
    227                         /* tcp_get_buf の割当て長を設定する。*/
     214                        /* tcp_get_buf の割当て長を設定する。*/
    228215                        cep->get_buf_len = len;
    229216
    230                         /* 送信ウィンドバッファのアドレスを返す。*/
     217                        /* 送信ウィンドバッファのアドレスを返す。*/
    231218                        *cep->snd_p_buf = cep->sbuf_wptr;
    232219
     
    241228                                syslog(LOG_WARNING, "[TCP] no call back, CEP: %d.", GET_TCP_CEPID(cep));
    242229
    243                         /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
     230                        /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
    244231                        cep->snd_tskid = TA_NULL;
    245232                        cep->snd_tfn   = cep->snd_nblk_tfn = TFN_TCP_UNDEF;
     
    250237
    251238        else if (cep->snd_nblk_tfn == TFN_TCP_SND_DAT ||
    252                  cep->snd_nblk_tfn == TFN_TCP_SND_OOB) {        /* ノンブロッキングコール */
     239                 cep->snd_nblk_tfn == TFN_TCP_SND_OOB) {        /* ノンブロッキングコール */
    253240
    254241#else   /* of #ifdef TCP_CFG_EXTENTIONS */
    255242
    256         else if (cep->snd_nblk_tfn == TFN_TCP_SND_DAT) {        /* ノンブロッキングコール */
     243        else if (cep->snd_nblk_tfn == TFN_TCP_SND_DAT) {        /* ノンブロッキングコール */
    257244
    258245#endif  /* of #ifdef TCP_CFG_EXTENTIONS */
     
    260247                ER_UINT error;
    261248
    262                 /* 送信ウィンドバッファにデータを書き込む。*/
     249                /* 送信ウィンドバッファにデータを書き込む。*/
    263250                error = TCP_WRITE_SWBUF(cep, cep->snd_data, (uint_t)cep->snd_len);
    264251
    265252#ifdef TCP_CFG_EXTENTIONS
    266253
    267                 /* 送信緊急ポインタを設定する。*/
     254                /* 送信緊急ポインタを設定する。*/
    268255                if (cep->snd_nblk_tfn == TFN_TCP_SND_OOB)
    269256                        cep->snd_up = cep->snd_una + error;
     
    281268                        syslog(LOG_WARNING, "[TCP] no call back, CEP: %d.", GET_TCP_CEPID(cep));
    282269
    283                 /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
     270                /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
    284271                cep->snd_tskid = TA_NULL;
    285272                cep->snd_tfn   = cep->snd_nblk_tfn = TFN_TCP_UNDEF;
     
    289276#endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
    290277
    291                 /* 送信ウィンドバッファに空きが出来たら出力タスクを起床する。*/
     278                /* 送信ウィンドバッファに空きが出来たら出力タスクを起床する。*/
    292279                if (last == cep->sbufsz && cep->swbuf_count < cep->sbufsz)
    293280                        syscall(set_flg(cep->snd_flgid, TCP_CEP_EVT_SWBUF_READY));
     
    300287
    301288        if (cep->swbuf_count > 0) {
    302                 /* 送信ウィンドバッファにデータがあれば出力をポストする。*/
     289                /* 送信ウィンドバッファにデータがあれば出力をポストする。*/
    303290                cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    304291                sig_sem(SEM_TCP_POST_OUTPUT);
     
    307294
    308295/*
    309  *  tcp_write_swbuf -- 送信ウィンドバッファにデータを書き込む。
     296 *  tcp_write_swbuf -- 送信ウィンドバッファにデータを書き込む。
    310297 */
    311298
     
    315302        uint_t  offset;
    316303
    317         /* 通信端点をロックする。*/
     304        /* 通信端点をロックする。*/
    318305        syscall(wai_sem(cep->semid_lock));
    319306
    320         /* len と送信ウィンドバッファの空きの小さい方を移すデータ数にする。*/
     307        /* len と送信ウィンドバッファの空きの小さい方を移すデータ数にする。*/
    321308        if (len > (cep->sbufsz - cep->swbuf_count))
    322309                len = cep->sbufsz - cep->swbuf_count;
    323310
    324         /* 書き込みポインタがラウンドするときの処理 */
     311        /* 書き込みポインタがラウンドするときの処理 */
    325312        if (len > cep->sbufsz - (cep->sbuf_wptr - (uint8_t*)cep->sbuf)) {
    326313                offset = (uint_t)(cep->sbufsz - (cep->sbuf_wptr -(uint8_t*)cep->sbuf));
     
    336323        cep->swbuf_count += len - offset;
    337324
    338         /* 通信端点のロックを解除する。*/
     325        /* 通信端点のロックを解除する。*/
    339326        syscall(sig_sem(cep->semid_lock));
    340327
     
    343330
    344331/*
    345  *  tcp_wait_swbuf -- 送信ウィンドバッファが空くのをå¾
    346 ã¤ã€‚
     332 *  tcp_wait_swbuf -- 送信ウィンドバッファが空くのを待つ。
    347333 */
    348334
     
    355341        while (cep->swbuf_count >= cep->sbufsz) {
    356342                /*
    357                  *  送信ウィンドバッファの空きがなければ、出力をポストして、
    358                  *  送信ウィンドバッファが空くまでå¾
    359 ã¤ã€‚
     343                 *  送信ウィンドバッファの空きがなければ、出力をポストして、
     344                 *  送信ウィンドバッファが空くまで待つ。
    360345                 */
    361346                cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
     
    368353
    369354                /*
    370                  *  送信できるか、CEP の FSM 状æ
    371 ‹ã‚’見る。
    372                  *  送信ウィンドバッファが空くまでå¾
    373 ã¤é–“に、送信不能になった場合は、
    374                  *  コネクションが切断されたことを意味している。
     355                 *  送信できるか、CEP の FSM 状態を見る。
     356                 *  送信ウィンドバッファが空くまで待つ間に、送信不能になった場合は、
     357                 *  コネクションが切断されたことを意味している。
    375358                 */
    376359                if (!TCP_FSM_CAN_SEND_MORE(cep->fsm_state)) {
     
    382365        }
    383366/*
    384  *  tcp_get_swbuf_addr -- 送信ウィンドバッファの空きアドレスを獲得する。
     367 *  tcp_get_swbuf_addr -- 送信ウィンドバッファの空きアドレスを獲得する。
    385368 */
    386369
     
    390373        uint_t  len;
    391374
    392         /* 通信端点をロックする。*/
     375        /* 通信端点をロックする。*/
    393376        syscall(wai_sem(cep->semid_lock));
    394377
    395         /* 送信ウィンドバッファの空きアドレスのå
    396 ˆé ­ã‚’設定する。*/
     378        /* 送信ウィンドバッファの空きアドレスの先頭を設定する。*/
    397379        *p_buf = cep->sbuf_wptr;
    398380
    399         /* 送信ウィンドバッファの空きサイズを計算する。*/
     381        /* 送信ウィンドバッファの空きサイズを計算する。*/
    400382        if (cep->sbufsz - cep->swbuf_count > cep->sbufsz - (cep->sbuf_wptr - (uint8_t*)cep->sbuf))
    401                 /* 書込みポインタがラウンドするときは、書込みポインタから送信ウィンドバッファの終わりまで */
     383                /* 書込みポインタがラウンドするときは、書込みポインタから送信ウィンドバッファの終わりまで */
    402384                len = (uint_t)(cep->sbufsz - (cep->sbuf_wptr - (uint8_t*)cep->sbuf));
    403385        else
    404386                len = cep->sbufsz - cep->swbuf_count;
    405387
    406         /* 通信端点のロックを解除する。*/
     388        /* 通信端点のロックを解除する。*/
    407389        syscall(sig_sem(cep->semid_lock));
    408390
    409         /* 送信ウィンドバッファの空きデータ長を設定し、その値を返す。*/
     391        /* 送信ウィンドバッファの空きデータ長を設定し、その値を返す。*/
    410392        cep->get_buf_len = len;
    411393        return (ER_UINT)len;
     
    413395
    414396/*
    415  *  tcp_send_swbuf -- 送信ウィンドバッファのデータを送信可能にする。
     397 *  tcp_send_swbuf -- 送信ウィンドバッファのデータを送信可能にする。
    416398 */
    417399
     
    419401tcp_send_swbuf_ncs (T_TCP_CEP *cep, uint_t len)
    420402{
    421         /* 通信端点をロックする。*/
     403        /* 通信端点をロックする。*/
    422404        syscall(wai_sem(cep->semid_lock));
    423405
     
    425407        cep->swbuf_count += len;
    426408
    427         /* 書込みポインタがラウンドするときの処理 */
     409        /* 書込みポインタがラウンドするときの処理 */
    428410        if (cep->sbuf_wptr >= (uint8_t*)cep->sbuf + cep->sbufsz)
    429411                cep->sbuf_wptr  = (uint8_t*)cep->sbuf;
    430412
    431         /* tcp_get_buf の割当て長をリセットする。*/
     413        /* tcp_get_buf の割当て長をリセットする。*/
    432414        cep->get_buf_len = 0;
    433415
    434         /* 通信端点のロックを解除する。*/
     416        /* 通信端点のロックを解除する。*/
    435417        syscall(sig_sem(cep->semid_lock));
    436418
    437         /* 送信ウィンドバッファがフルのときは強制的に送信する。*/
     419        /* 送信ウィンドバッファがフルのときは強制的に送信する。*/
    438420        if (cep->swbuf_count >= cep->sbufsz)
    439421                cep->flags |= TCP_CEP_FLG_FORCE | TCP_CEP_FLG_FORCE_CLEAR;
     
    441423
    442424/*
    443  *  tcp_is_swbuf_full -- 送信ウィンドバッファが満杯かチェックする。
     425 *  tcp_is_swbuf_full -- 送信ウィンドバッファが満杯かチェックする。
    444426 */
    445427
     
    455437
    456438/*
    457  *  TCP 通信端点の受信ウィンドバッファの省コピー機能が無効
    458  */
    459 
    460 /*
    461  *  tcp_drop_rwbuf -- 受信ウィンドバッファから指定されたオクテット分削除する。
     439 *  TCP 通信端点の受信ウィンドバッファの省コピー機能が無効
     440 */
     441
     442/*
     443 *  tcp_drop_rwbuf -- 受信ウィンドバッファから指定されたオクテット分削除する。
    462444 */
    463445
     
    468450        cep->rbuf_rptr  += len;
    469451
    470         /* 読み出しポインタがラウンドするときの処理 */
     452        /* 読み出しポインタがラウンドするときの処理 */
    471453        if (cep->rbuf_rptr >= (uint8_t*)cep->rbuf + cep->rbufsz)
    472454                cep->rbuf_rptr  = (uint8_t*)cep->rbuf;
     
    474456
    475457/*
    476  *  tcp_read_rwbuf -- 受信ウィンドバッファから指定されたオクテット分読み出す。
     458 *  tcp_read_rwbuf -- 受信ウィンドバッファから指定されたオクテット分読み出す。
    477459 */
    478460
     
    482464        uint_t  offset;
    483465
    484         /* 通信端点をロックする。*/
     466        /* 通信端点をロックする。*/
    485467        syscall(wai_sem(cep->semid_lock));
    486468
    487         /* len と受信ウィンドバッファのデータ数の小さい方を取り出すデータ数にする。*/
     469        /* len と受信ウィンドバッファのデータ数の小さい方を取り出すデータ数にする。*/
    488470        if (len > cep->rwbuf_count)
    489471                len = cep->rwbuf_count;
    490472
    491         /* 読み出しポインタがラウンドするときの処理 */
     473        /* 読み出しポインタがラウンドするときの処理 */
    492474        if (len > cep->rbufsz - (cep->rbuf_rptr - (uint8_t*)cep->rbuf)) {
    493475                offset = (uint_t)(cep->rbufsz - (cep->rbuf_rptr -(uint8_t*)cep->rbuf));
     
    503485        cep->rbuf_rptr  += len - offset;
    504486
    505         /* 通信端点のロックを解除する。*/
     487        /* 通信端点のロックを解除する。*/
    506488        syscall(sig_sem(cep->semid_lock));
    507489
     
    510492
    511493/*
    512  *  tcp_get_rwbuf_addr -- 受信ウィンドバッファの空きアドレスを獲得する。
     494 *  tcp_get_rwbuf_addr -- 受信ウィンドバッファの空きアドレスを獲得する。
    513495 */
    514496
     
    518500        uint_t  len;
    519501
    520         /* 通信端点をロックする。*/
     502        /* 通信端点をロックする。*/
    521503        syscall(wai_sem(cep->semid_lock));
    522504
    523         /* 受信ウィンドバッファのデータ長を計算する。*/
     505        /* 受信ウィンドバッファのデータ長を計算する。*/
    524506        if (cep->rwbuf_count > cep->rbufsz - (cep->rbuf_rptr - (uint8_t*)cep->rbuf))
    525                 /* ポインタがラウンドするときは受信ウィンドバッファの終わりまで */
     507                /* ポインタがラウンドするときは受信ウィンドバッファの終わりまで */
    526508                len = (uint_t)(cep->rbufsz - (cep->rbuf_rptr - (uint8_t*)cep->rbuf));
    527509        else
    528510                len = cep->rwbuf_count;
    529511
    530         /* 受信ウィンドバッファのデータのアドレスのå
    531 ˆé ­ã‚’設定する。*/
     512        /* 受信ウィンドバッファのデータのアドレスの先頭を設定する。*/
    532513        *p_buf = cep->rbuf_rptr;
    533514
    534         /* 通信端点のロックを解除する。*/
     515        /* 通信端点のロックを解除する。*/
    535516        syscall(sig_sem(cep->semid_lock));
    536517
    537         /* 受信ウィンドバッファのデータ長を設定し、その値を返す。*/
     518        /* 受信ウィンドバッファのデータ長を設定し、その値を返す。*/
    538519        cep->rcv_buf_len = len;
    539520        return len;
     
    541522
    542523/*
    543  *  tcp_write_rwbuf -- 受信ウィンドバッファにデータを書き込む。
     524 *  tcp_write_rwbuf -- 受信ウィンドバッファにデータを書き込む。
    544525 *
    545  *    注意:
    546  *      å
    547 ¥åŠ› input は、T_TCP_Q_HDR によりリンクされ、
    548  *      並べ替えが終了していなければならない。また、
    549  *      追加するデータは、受信ウィンドバッファに収まること。
     526 *    注意:
     527 *      入力 input は、T_TCP_Q_HDR によりリンクされ、
     528 *      並べ替えが終了していなければならない。また、
     529 *      追加するデータは、受信ウィンドバッファに収まること。
    550530 */
    551531
     
    556536        uint_t          offset, inlen, last;
    557537
    558         /* 通信端点をロックする。*/
     538        /* 通信端点をロックする。*/
    559539        syscall(wai_sem(cep->semid_lock));
    560540
    561541        qhdr  = (T_TCP_Q_HDR*)GET_TCP_HDR(input, thoff);
    562542
    563         /* 受信済みシーケンス番号を更新する。*/
     543        /* 受信済みシーケンス番号を更新する。*/
    564544        cep->rcv_nxt += qhdr->slen;
    565545
     
    567547        inlen = qhdr->slen;
    568548
    569         /* 緊急データの SDU 補正を行う。*/
     549        /* 緊急データの SDU 補正を行う。*/
    570550        if (qhdr->urp > 0 && inlen > 0) {
    571551                inlen      -= qhdr->urp;
     
    575555
    576556        /*
    577          *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
    578          *  これは、アプリケーションに、相手からこれ以上データが送られて
    579          *  こないことを知らせるためである。
     557         *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
     558         *  これは、アプリケーションに、相手からこれ以上データが送られて
     559         *  こないことを知らせるためである。
    580560         */
    581561        if (inlen > 0) {
    582562
    583                 /* 書き込みポインタがラウンドするときの処理 */
     563                /* 書き込みポインタがラウンドするときの処理 */
    584564                if (inlen > cep->rbufsz - (cep->rbuf_wptr - (uint8_t*)cep->rbuf)) {
    585565                        offset = (uint_t)(cep->rbufsz - (cep->rbuf_wptr - (uint8_t*)cep->rbuf));
     
    604584#ifdef TCP_CFG_NON_BLOCKING
    605585
    606         if (cep->rcv_nblk_tfn == TFN_TCP_RCV_BUF) {     /* ノンブロッキングコール */
     586        if (cep->rcv_nblk_tfn == TFN_TCP_RCV_BUF) {     /* ノンブロッキングコール */
    607587
    608588                int_t   len;
    609589
    610                 /* 受信ウィンドバッファの空きデータ長を計算する。*/
     590                /* 受信ウィンドバッファの空きデータ長を計算する。*/
    611591                if (cep->rwbuf_count > cep->rbufsz - (cep->rbuf_rptr - (uint8_t*)cep->rbuf)) {
    612                         /* ポインタがラウンドするときは受信ウィンドバッファの終わりまで */
     592                        /* ポインタがラウンドするときは受信ウィンドバッファの終わりまで */
    613593                        len = (uint_t)(cep->rbufsz - (cep->rbuf_rptr - (uint8_t*)cep->rbuf));
    614594                        }
     
    616596                        len = cep->rwbuf_count;
    617597
    618                 /* 通信端点のロックを解除する。*/
     598                /* 通信端点のロックを解除する。*/
    619599                syscall(sig_sem(cep->semid_lock));
    620600
    621601                /*
    622                  *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
    623                  *  これは、アプリケーションに、相手からこれ以上データが送られて
    624                  *  こないことを知らせるためである。
     602                 *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
     603                 *  これは、アプリケーションに、相手からこれ以上データが送られて
     604                 *  こないことを知らせるためである。
    625605                 */
    626606                if (len > 0 || inlen == 0) {
    627607
    628                         /* tcp_rcv_buf の割当て長を設定する。*/
     608                        /* tcp_rcv_buf の割当て長を設定する。*/
    629609                        cep->rcv_buf_len = len;
    630610
    631                         /* 受信ウィンドバッファのアドレスを返す。*/
     611                        /* 受信ウィンドバッファのアドレスを返す。*/
    632612                        *cep->rcv_p_buf = cep->rbuf_rptr;
    633613
     
    646626
    647627                                /*
    648                                  *  通信端点をロックして、
    649                                  *  受信ウィンドバッファキューのネットワークバッファを解放する。
     628                                 *  通信端点をロックして、
     629                                 *  受信ウィンドバッファキューのネットワークバッファを解放する。
    650630                                 */
    651631                                syscall(wai_sem(cep->semid_lock));
     
    655635                        }
    656636
    657                 /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
     637                /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
    658638                cep->rcv_tskid = TA_NULL;
    659639                cep->rcv_tfn   = cep->rcv_nblk_tfn = TFN_TCP_UNDEF;
    660640                }
    661641
    662         else if (cep->rcv_nblk_tfn == TFN_TCP_RCV_DAT) {        /* ノンブロッキングコール */
     642        else if (cep->rcv_nblk_tfn == TFN_TCP_RCV_DAT) {        /* ノンブロッキングコール */
    663643                ER_UINT len;
    664644
    665                 /* 通信端点のロックを解除する。*/
     645                /* 通信端点のロックを解除する。*/
    666646                syscall(sig_sem(cep->semid_lock));
    667647
    668                 /* 受信ウィンドバッファからデータを取り出す。*/
     648                /* 受信ウィンドバッファからデータを取り出す。*/
    669649                if ((len = TCP_READ_RWBUF(cep, cep->rcv_data, (uint_t)cep->rcv_len)) > 0) {
    670                         /* 相手にウィンドウサイズが変わったことを知らせるため出力をポストする。*/
     650                        /* 相手にウィンドウサイズが変わったことを知らせるため出力をポストする。*/
    671651                        cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    672652                        sig_sem(SEM_TCP_POST_OUTPUT);
     
    674654
    675655                /*
    676                  *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
    677                  *  これは、アプリケーションに、相手からこれ以上データが送られて
    678                  *  こないことを知らせるためである。
     656                 *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
     657                 *  これは、アプリケーションに、相手からこれ以上データが送られて
     658                 *  こないことを知らせるためである。
    679659                 */
    680660                if (len > 0 || inlen == 0) {
     
    691671                        }
    692672
    693                 /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
     673                /* 記憶されているタスク ID と API 機能コードをクリアーする。*/
    694674                cep->rcv_tskid = TA_NULL;
    695675                cep->rcv_tfn   = cep->rcv_nblk_tfn = TFN_TCP_UNDEF;
     
    700680#endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
    701681
    702                 /* 通信端点のロックを解除する。*/
     682                /* 通信端点のロックを解除する。*/
    703683                syscall(sig_sem(cep->semid_lock));
    704684
    705685                if (inlen == 0 && cep->rwbuf_count == 0) {
    706686                        /*
    707                          *  受信ウィンドバッファå†
    708 ã®ãƒ‡ãƒ¼ã‚¿æ•°ãŒ 0 で、
    709                          *  相手から FIN フラグが付いたセグメントを受信したときは、
    710                          *  通信端点をロックして、
    711                          *  受信ウィンドバッファキューのネットワークバッファを解放する。
     687                         *  受信ウィンドバッファ内のデータ数が 0 で、
     688                         *  相手から FIN フラグが付いたセグメントを受信したときは、
     689                         *  通信端点をロックして、
     690                         *  受信ウィンドバッファキューのネットワークバッファを解放する。
    712691                         */
    713692                        syscall(wai_sem(cep->semid_lock));
     
    717696
    718697                /*
    719                  *  受信ウィンドバッファにデータがå
    720 ¥ã‚‹ã‹ã€ inlen == 0 の時、å
    721 ¥åŠ›ã‚¿ã‚¹ã‚¯ã‚’起床する。
    722                  *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
    723                  *  これは、アプリケーションに、相手からこれ以上データが送られて
    724                  *  こないことを知らせるためである。
     698                 *  受信ウィンドバッファにデータが入るか、 inlen == 0 の時、入力タスクを起床する。
     699                 *  FIN フラグが付いたセグメントは inlen == 0 になることもある。
     700                 *  これは、アプリケーションに、相手からこれ以上データが送られて
     701                 *  こないことを知らせるためである。
    725702                 */
    726703                if ((last == 0 && cep->rwbuf_count > 0) || inlen == 0)
  • asp3_gr_sakura/trunk/tinet/netinet/tcp_timer.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    119107
    120108/*
    121  *  局所関数
     109 *  局所関数
    122110 */
    123111
     
    131119
    132120/*
    133  *  バックオフ時間
     121 *  バックオフ時間
    134122 *
    135  *  再送を行うたびに、タイムアウトの時間を延長する。
     123 *  再送を行うたびに、タイムアウトの時間を延長する。
    136124 */
    137125
     
    143131        };
    144132
    145 #define TCP_TOTAL_BACK_OFF      511     /* バックオフ時間の合計 */
    146 
    147 /*
    148  *  tcp_timers -- タイムアウト処理
     133#define TCP_TOTAL_BACK_OFF      511     /* バックオフ時間の合計 */
     134
     135/*
     136 *  tcp_timers -- タイムアウト処理
    149137 */
    150138
     
    158146
    159147        /*
    160          *  再送タイマ
     148         *  再送タイマ
    161149         */
    162150        case TCP_TIM_REXMT:
    163151       
    164152                /*
    165                  *  最大再送回数 (TCP_MAX_REXMT_SHIFT、標準 12 回) になったときは、
    166                  *  コネクションを切断する。
     153                 *  最大再送回数 (TCP_MAX_REXMT_SHIFT、標準 12 回) になったときは、
     154                 *  コネクションを切断する。
    167155                 */
    168156                if (++ cep->rxtshift > TCP_MAX_REXMT_SHIFT) {
     
    174162
    175163                /*
    176                  *  再送タイムアウトを計算する。
     164                 *  再送タイムアウトを計算する。
    177165                 */
    178166                cep->rxtcur = tcp_range_set((T_TCP_TIME)(tcp_rexmt_val(cep) * tcp_back_off[cep->rxtshift]),
     
    182170
    183171                /*
    184                  *  srtt:   å¹³æ»‘化された RTT
    185                  *  rttvar: 平滑化された分散
     172                 *  srtt:   平滑化された RTT
     173                 *  rttvar: 平滑化された分散
    186174                 *
    187                  *  再送回数が最大再送回数の 1/4 になったときは、
    188                  *  平滑化された分散 (rttvar) に srtt を加算し、
    189                  *  平滑化された RTT を 0 にする。
     175                 *  再送回数が最大再送回数の 1/4 になったときは、
     176                 *  平滑化された分散 (rttvar) に srtt を加算し、
     177                 *  平滑化された RTT を 0 にする。
    190178                 * 
    191179                 */
     
    196184
    197185                /*
    198                  *  snd_nxt: 次に送信する SEQ、この時点では、前回送信した SEQ
    199                  *  snd_una: 未確認の最小送信 SEQ        または、確認された最大送信 SEQ
     186                 *  snd_nxt: 次に送信する SEQ、この時点では、前回送信した SEQ
     187                 *  snd_una: 未確認の最小送信 SEQ        または、確認された最大送信 SEQ
    200188                 *
    201                  *  前回送信した SEQ (snd_nxt) を
    202                  *  確認された最大送信 SEQ (snd_una) まで戻す。
     189                 *  前回送信した SEQ (snd_nxt) を
     190                 *  確認された最大送信 SEQ (snd_una) まで戻す。
    203191                 */
    204192                cep->snd_nxt = cep->snd_una;
     
    206194
    207195                /*
    208                  *  rtt: 往復時間の計測を中止する。
     196                 *  rtt: 往復時間の計測を中止する。
    209197                 */
    210198                cep->rtt     = 0;
    211199
    212200                /*
    213                  *  送信ウインドの設定
     201                 *  送信ウインドの設定
    214202                 *
    215                  *  snd_wnd:  相手の受信可能ウィンドサイズ
    216                  *  snd_cwnd: 輻輳ウィンドサイズ
    217                  *  maxseg  : 相手の最大受信セグメントサイズ
     203                 *  snd_wnd:  相手の受信可能ウィンドサイズ
     204                 *  snd_cwnd: 輻輳ウィンドサイズ
     205                 *  maxseg  : 相手の最大受信セグメントサイズ
    218206                 *
    219                  *  相手の受信可能ウィンドサイズ (snd_wnd) か、
    220                  *  輻輳ウィンドサイズ (snd_cwnd) の
    221                  *  どちらか小さいサイズの 1/2 を、更に
    222                  *  相手の最大受信セグメントサイズ (maxseg) で割った値。
    223                  *  ただし、2 以上
     207                 *  相手の受信可能ウィンドサイズ (snd_wnd) か、
     208                 *  輻輳ウィンドサイズ (snd_cwnd) の
     209                 *  どちらか小さいサイズの 1/2 を、更に
     210                 *  相手の最大受信セグメントサイズ (maxseg) で割った値。
     211                 *  ただし、2 以上
    224212                 */
    225213                if (cep->snd_wnd < cep->snd_cwnd)
     
    232220
    233221                /*
    234                  *  輻輳ウィンドサイズ (snd_cwnd) は
    235                  *  相手の受信可能ウィンドサイズ (snd_wnd) に、
    236                  *  輻輳ウィンドサイズのしきい値 (snd_ssthresh) は
    237                  *  相手の受信可能ウィンドサイズ (snd_wnd) の win 倍に
    238                  *  設定する。
     222                 *  輻輳ウィンドサイズ (snd_cwnd) は
     223                 *  相手の受信可能ウィンドサイズ (snd_wnd) に、
     224                 *  輻輳ウィンドサイズのしきい値 (snd_ssthresh) は
     225                 *  相手の受信可能ウィンドサイズ (snd_wnd) の win 倍に
     226                 *  設定する。
    239227                 */
    240228                cep->snd_cwnd     = cep->maxseg;
     
    242230                cep->dupacks      = 0;
    243231
    244                 /* 出力をポストする。*/
     232                /* 出力をポストする。*/
    245233                cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    246234                sig_sem(SEM_TCP_POST_OUTPUT);
     
    248236
    249237        /*
    250          *  持続タイマ     
     238         *  持続タイマ       
    251239         */
    252240        case TCP_TIM_PERSIST:
    253241
    254242                /*
    255                  *  最大再送回数 (TCP_MAX_REXMT_SHIFT、標準 12 回) をè¶
    256 ãˆã¦ã„て、
    257                  *  アイドル時間が、保留タイマの標準値 (TCP_TVAL_KEEP_IDLE、
    258                  *  標準 2 * 60 * 60 秒) 以上か、
    259                  *  再送タイムアウト値 * バックオフ時間の合計以上なら
    260                  *  コネクションを切断する。
     243                 *  最大再送回数 (TCP_MAX_REXMT_SHIFT、標準 12 回) を超えていて、
     244                 *  アイドル時間が、保留タイマの標準値 (TCP_TVAL_KEEP_IDLE、
     245                 *  標準 2 * 60 * 60 秒) 以上か、
     246                 *  再送タイムアウト値 * バックオフ時間の合計以上なら
     247                 *  コネクションを切断する。
    261248                 */
    262249                if (cep->rxtshift > TCP_MAX_REXMT_SHIFT &&
     
    268255                        }
    269256
    270                 /* 持続タイマを再設定し、出力をポストする。*/
     257                /* 持続タイマを再設定し、出力をポストする。*/
    271258                tcp_set_persist_timer(cep);
    272259
     
    276263
    277264        /*
    278          *  保留 (keep alive) タイマ
     265         *  保留 (keep alive) タイマ
    279266         */
    280267        case TCP_TIM_KEEP:
    281268
    282269                /*
    283                  *  コネクションが開設されるまでにタイムアウトしたら
    284                  *  コネクションの開設を中止する。
     270                 *  コネクションが開設されるまでにタイムアウトしたら
     271                 *  コネクションの開設を中止する。
    285272                 */
    286273                if (cep->fsm_state < TCP_FSM_ESTABLISHED) {
     
    316303
    317304        /*
    318          *  2MSL タイマ             
     305         *  2MSL タイマ           
    319306         */
    320307        case TCP_TIM_2MSL:
     
    332319
    333320/*
    334  *  tcp_cancel_timers -- å
    335 ¨ã¦ã®ã‚¿ã‚¤ãƒžã‚’キャンセルする。
     321 *  tcp_cancel_timers -- 全てのタイマをキャンセルする。
    336322 */
    337323
     
    348334
    349335/*
    350  *  tcp_tw_timo -- Time Wait 用 TCP 通信端点のタイムアウト処理
     336 *  tcp_tw_timo -- Time Wait 用 TCP 通信端点のタイムアウト処理
    351337 */
    352338
     
    360346
    361347        /*
    362          *  Time Wait 用 TCP 通信端点でタイムアウトのエントリを探索し、
    363          *  探索したエントリを空きにする。
     348         *  Time Wait 用 TCP 通信端点でタイムアウトのエントリを探索し、
     349         *  探索したエントリを空きにする。
    364350         */
    365351        frees = 0;
     
    371357
    372358        /*
    373          *  Time Wait 用 TCP 通信端点の空きエントリが発生したら
    374          *  標準 TCP 通信端点で Time Wait 中の TCP 通信端点を探索し、
    375          *  å¿
    376 è¦ãªæƒ
    377 å ±ã‚’ Time Wait 用 TCP 通信端点に移して、
    378          *  標準の TCP 通信端点を開放する。
     359         *  Time Wait 用 TCP 通信端点の空きエントリが発生したら
     360         *  標準 TCP 通信端点で Time Wait 中の TCP 通信端点を探索し、
     361         *  必要な情報を Time Wait 用 TCP 通信端点に移して、
     362         *  標準の TCP 通信端点を開放する。
    379363         */
    380364        if (frees > 0) {
     
    387371
    388372                /*
    389                  *  もっとも長い間 Time Wait している TCP 通信端点を開放する。
     373                 *  もっとも長い間 Time Wait している TCP 通信端点を開放する。
    390374                 */
    391375                while (waits > 0) {
     
    410394
    411395/*
    412  *  tcp_slow_timo -- 500 [ms] 毎に呼出される TCP タイムアウト関数
     396 *  tcp_slow_timo -- 500 [ms] 毎に呼出される TCP タイムアウト関数
    413397 */
    414398
     
    452436
    453437/*
    454  *  tcp_fast_timo -- 200 [ms] 毎に呼出される TCP タイムアウト関数
     438 *  tcp_fast_timo -- 200 [ms] 毎に呼出される TCP タイムアウト関数
    455439 */
    456440
     
    476460
    477461/*
    478  *  tcp_range_set -- 時間を指定した範囲に設定する。
     462 *  tcp_range_set -- 時間を指定した範囲に設定する。
    479463 */
    480464
     
    491475
    492476/*
    493  *  tcp_set_persist_timer -- 持続タイマの設定
     477 *  tcp_set_persist_timer -- 持続タイマの設定
    494478 */
    495479
     
    500484
    501485        /*
    502          *  srtt:   å¹³æ»‘化された RTT
    503          *  rttvar: 平滑化された分散
     486         *  srtt:   平滑化された RTT
     487         *  rttvar: 平滑化された分散
    504488         */
    505489        time = ((cep->srtt >> 2) + cep->rttvar) >> 1;
    506490
    507491        /*
    508          *  再送タイマも設定されていれば回復不能エラー
     492         *  再送タイマも設定されていれば回復不能エラー
    509493         */
    510494        if (cep->timer[TCP_TIM_REXMT])
     
    512496
    513497        /*
    514          *  持続タイマを設定する。
     498         *  持続タイマを設定する。
    515499         */
    516500        cep->timer[TCP_TIM_PERSIST] = tcp_range_set((T_TCP_TIME)(time * tcp_back_off[cep->rxtshift]),
     
    519503
    520504        /*
    521          *  再送回数を更新する。
     505         *  再送回数を更新する。
    522506         */
    523507        if (cep->rxtshift < TCP_MAX_REXMT_SHIFT)
  • asp3_gr_sakura/trunk/tinet/netinet/tcp_timer.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8371#define _TCP_TIMER_H_
    8472
    85 /* TCP タイマ変数 */
     73/* TCP タイマ変数 */
    8674
    87 //#define NUM_TCP_TIMERS                4       /* TCP のタイマ数  */
     75//#define NUM_TCP_TIMERS                4       /* TCP のタイマ数    */
    8876
    89 #define TCP_TIM_REXMT           0       /* 再送タイマ              */
    90 #define TCP_TIM_PERSIST         1       /* 持続タイマ              */
    91 #define TCP_TIM_KEEP            2       /* 保留 (keep alive) タイマ*/
    92 #define TCP_TIM_2MSL            3       /* 2MSL タイマ               */
     77#define TCP_TIM_REXMT           0       /* 再送タイマ                */
     78#define TCP_TIM_PERSIST         1       /* 持続タイマ                */
     79#define TCP_TIM_KEEP            2       /* 保留 (keep alive) タイマ*/
     80#define TCP_TIM_2MSL            3       /* 2MSL タイマ             */
    9381
    94 /* MSL: Maximum Segment Lifetime, 最大セグメント生存時間             */
     82/* MSL: Maximum Segment Lifetime, 最大セグメント生存時間           */
    9583
    9684/*
    97  *  TCP/IP のタイマの定義
     85 *  TCP/IP のタイマの定義
    9886 */
    9987
     
    10391#define TCP_SLOW_HZ             (ULONG_C(1000)/TCP_SLOW_TMO/NET_TIMER_CYCLE)    /* Hz   */
    10492
    105 /* TCP タイマ値 */
     93/* TCP タイマ値 */
    10694
    10795#define TCP_TVAL_MSL            (TCP_SLOW_HZ * 30)
    108                                         /* 最大セグメント生存時間    */
     96                                        /* 最大セグメント生存時間  */
    10997
    110 #define TCP_TVAL_SRTT_BASE      0       /* 滑らかな往復時間の基準値*/
     98#define TCP_TVAL_SRTT_BASE      0       /* 滑らかな往復時間の基準値*/
    11199
    112100#define TCP_TVAL_RTO_BASE       (TCP_SLOW_HZ * 3)
    113                 /* æƒ
    114 å ±ãŒå¾—られない場合の再送タイムアウトの基準値      */
     101                /* 情報が得られない場合の再送タイムアウトの基準値      */
    115102
    116103#define TCP_TVAL_MIN_PERSIST    (TCP_SLOW_HZ * 5)
    117                                 /* 持続タイムアウトの最小値 */
     104                                /* 持続タイムアウトの最小値 */
    118105#define TCP_TVAL_MAX_PERSIST    (TCP_SLOW_HZ * 60)
    119                                 /* 持続タイムアウトの最大値 */
     106                                /* 持続タイムアウトの最大値 */
    120107
    121108#define TCP_TVAL_KEEP_INIT      (TCP_SLOW_HZ * 75)
    122                                         /* 保留タイマの初期値  */
     109                                        /* 保留タイマの初期値    */
    123110#define TCP_TVAL_KEEP_IDLE      (TCP_SLOW_HZ * 2 * 60 * 60)
    124                                         /* 保留タイマ起動までの標準値*/
     111                                        /* 保留タイマ起動までの標準値*/
    125112#define TCP_TVAL_KEEP_INTERVAL  (TCP_SLOW_HZ * 75)
    126                                         /* 保留タイマインターバルの標準値*/
    127 #define TCP_TVAL_KEEP_COUNT     8       /* 保留タイムアウトの最大値*/
     113                                        /* 保留タイマインターバルの標準値*/
     114#define TCP_TVAL_KEEP_COUNT     8       /* 保留タイムアウトの最大値*/
    128115
    129116#define TCP_TVAL_MIN            (TCP_SLOW_HZ * 3)
    130                                         /* 時間の最小単位        */
     117                                        /* 時間の最小単位      */
    131118#define TCP_TVAL_MAX_REXMT      (TCP_SLOW_HZ * 64)
    132                                         /* 最大再送時間           */
     119                                        /* 最大再送時間               */
    133120
    134121/*
    135  *  以下の変数の値はマクロで設定する。
     122 *  以下の変数の値はマクロで設定する。
    136123 *
    137124 *  tcp_maixidle   = tcp_keepcnt * tcp_keepintvl
     
    143130
    144131/*
    145  *  その他の定数
     132 *  その他の定数
    146133 */
    147134
    148 #define TCP_MAX_REXMT_SHIFT     12      /* 最大再送回数           */
     135#define TCP_MAX_REXMT_SHIFT     12      /* 最大再送回数               */
    149136
    150137/*
    151  *  関数
     138 *  関数
    152139 */
    153140
  • asp3_gr_sakura/trunk/tinet/netinet/tcp_usrreq.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    130118
    131119/*
    132  *  TINET をライブラリ化しない場合は、å
    133 ¨ã¦ã®æ©Ÿèƒ½ã‚’
    134  *  オブジェクトファイルに出力するため、マクロを有効にする。
     120 *  TINET をライブラリ化しない場合は、全ての機能を
     121 *  オブジェクトファイルに出力するため、マクロを有効にする。
    135122 */
    136123
     
    160147
    161148/*
    162  *  IPv6 と IPv4 で引数が異なる関数のコンパイル
     149 *  IPv6 と IPv4 で引数が異なる関数のコンパイル
    163150 */
    164151
     
    228215
    229216/*
    230  *  tcp_user_closed -- ユーザからのコネクションの開放
     217 *  tcp_user_closed -- ユーザからのコネクションの開放
    231218 */
    232219
     
    236223        switch (cep->fsm_state) {
    237224
    238         case TCP_FSM_CLOSED:            /* クローズ */
    239         case TCP_FSM_LISTEN:            /* 受動オープン   */
     225        case TCP_FSM_CLOSED:            /* クローズ */
     226        case TCP_FSM_LISTEN:            /* 受動オープン       */
    240227                cep->fsm_state = TCP_FSM_CLOSED;
    241228                cep = tcp_close(cep);
    242229                break;
    243230
    244         case TCP_FSM_SYN_SENT:          /* 能動オープン、SYN 送信済み        */
    245         case TCP_FSM_SYN_RECVD:         /* SYN を受信し、SYN 送信済み  */
     231        case TCP_FSM_SYN_SENT:          /* 能動オープン、SYN 送信済み      */
     232        case TCP_FSM_SYN_RECVD:         /* SYN を受信し、SYN 送信済み    */
    246233                cep->flags |= TCP_CEP_FLG_NEED_FIN;
    247234                break;
    248235
    249         case TCP_FSM_ESTABLISHED:       /* コネクション開設完了       */
     236        case TCP_FSM_ESTABLISHED:       /* コネクション開設完了   */
    250237                cep->fsm_state = TCP_FSM_FIN_WAIT_1;
    251238                break;
    252239
    253         case TCP_FSM_CLOSE_WAIT:        /* 相手から FIN 受信、APP の終了å¾
    254 ã¡ */
     240        case TCP_FSM_CLOSE_WAIT:        /* 相手から FIN 受信、APP の終了待ち */
    255241                cep->fsm_state = TCP_FSM_LAST_ACK;
    256242                break;
     
    263249
    264250/*
    265  *  tcp_cls_cep -- 通信端点のクローズ【標準機能】
     251 *  tcp_cls_cep -- 通信端点のクローズ【標準機能】
    266252 */
    267253
     
    275261#ifndef TCP_CFG_NON_BLOCKING
    276262
    277         /* tmout が TMO_NBLK ならエラー */
     263        /* tmout が TMO_NBLK ならエラー */
    278264        if (tmout == TMO_NBLK)
    279265                return E_PAR;
     
    282268
    283269        /*
    284          *  CEP をロックし、API 機能コードとタスク識別子を記録する。
    285          *  すでに記録されていれば、ペンディング中なのでエラー
     270         *  CEP をロックし、API 機能コードとタスク識別子を記録する。
     271         *  すでに記録されていれば、ペンディング中なのでエラー
    286272         */
    287273        if ((error = tcp_lock_cep(cepid, &cep, TFN_TCP_CLS_CEP)) != E_OK)
     
    290276#ifdef TCP_CFG_NON_BLOCKING
    291277
    292         /* タイムアウトをチェックする。*/
    293         if (tmout == TMO_NBLK) {                                /* ノンブロッキングコール */
     278        /* タイムアウトをチェックする。*/
     279        if (tmout == TMO_NBLK) {                                /* ノンブロッキングコール */
    294280
    295281                if (!IS_PTR_DEFINED(cep->callback))
    296282                        error = E_OBJ;
    297                 else if (cep->fsm_state == TCP_FSM_CLOSED) {    /* すでにクローズされているとき */
     283                else if (cep->fsm_state == TCP_FSM_CLOSED) {    /* すでにクローズされているとき */
    298284
    299285#ifdef TCP_CFG_NON_BLOCKING_COMPAT14
     
    313299                        }
    314300                else {
    315                         /* NBLK のAPI 機能コードを設定する。*/
     301                        /* NBLK のAPI 機能コードを設定する。*/
    316302                        cep->rcv_nblk_tfn = TFN_TCP_CLS_CEP;
    317303
    318                         if ((cep = tcp_user_closed(cep)) != NULL) {     /* コネクションを切断する。*/
    319                                 /* 切断セグメント出力をポストする。*/
     304                        if ((cep = tcp_user_closed(cep)) != NULL) {     /* コネクションを切断する。*/
     305                                /* 切断セグメント出力をポストする。*/
    320306                                cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    321307                                sig_sem(SEM_TCP_POST_OUTPUT);
    322308                                }
    323309
    324                         /*  cep が NULL で戻ってきた場合は、
    325                          *  既にコネクションが切断されていることを意味している。
    326                          *  また、この場合コールバック関数が呼び出されている。
     310                        /*  cep が NULL で戻ってきた場合は、
     311                         *  既にコネクションが切断されていることを意味している。
     312                         *  また、この場合コールバック関数が呼び出されている。
    327313                         */
    328314                        return E_WBLK;
    329315                        }
    330316                }
    331         else {                                                  /* 非ノンブロッキングコール */
    332 
    333 #endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
    334 
    335                 if ((cep = tcp_user_closed(cep)) == NULL) {     /* コネクションを切断する。*/
    336 
    337                         /*  cep が NULL で戻ってきた場合は、
    338                          *  既にコネクションが切断されていることを意味している。
     317        else {                                                  /* 非ノンブロッキングコール */
     318
     319#endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
     320
     321                if ((cep = tcp_user_closed(cep)) == NULL) {     /* コネクションを切断する。*/
     322
     323                        /*  cep が NULL で戻ってきた場合は、
     324                         *  既にコネクションが切断されていることを意味している。
    339325                         */
    340326                        return error;
    341327                        }
    342328                else {
    343                         /* 切断セグメント出力をポストする。*/
     329                        /* 切断セグメント出力をポストする。*/
    344330                        cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    345331                        sig_sem(SEM_TCP_POST_OUTPUT);
    346332
    347                         /* イベントフラグが CLOSED になるまでå¾
    348 ã¤ã€‚*/
     333                        /* イベントフラグが CLOSED になるまで待つ。*/
    349334                        error = twai_flg(cep->est_flgid, TCP_CEP_EVT_CLOSED, TWF_ORW, &flag, tmout);
    350335                        if (error == E_OK && cep->error != E_OK)
     
    353338                        if (error != E_OK) {
    354339                                if (error == E_RLWAI) {
    355                                         /* tcp_cls_cep がキャンセルされたときは、RST を送信する。*/
     340                                        /* tcp_cls_cep がキャンセルされたときは、RST を送信する。*/
    356341                                        tcp_respond(NULL, cep, cep->rcv_nxt, cep->snd_una - 1,
    357342                                                    cep->rbufsz - cep->rwbuf_count, TCP_FLG_RST);
    358343                                        }
    359344
    360                                 /* タイマーを停止する。*/
     345                                /* タイマーを停止する。*/
    361346                                tcp_cancel_timers(cep);
    362347
    363348                                /*
    364                                  *  通信端点をロックし、
    365                                  *  受信再構成キューのネットワークバッファを解放する。
     349                                 *  通信端点をロックし、
     350                                 *  受信再構成キューのネットワークバッファを解放する。
    366351                                 */
    367352                                syscall(wai_sem(cep->semid_lock));
     
    369354                                syscall(sig_sem(cep->semid_lock));
    370355
    371                                 /* 状æ
    372 ‹ã‚’未使用にする。*/
     356                                /* 状態を未使用にする。*/
    373357                                cep->fsm_state = TCP_FSM_CLOSED;
    374358
    375359                                /*
    376                                  * 以下に関係しないフラグをクリアーする。
    377                                  * ・送受信ウィンドバッファの省コピー機能
    378                                  * ・動的な通信端点の生成・削除機能
     360                                 * 以下に関係しないフラグをクリアーする。
     361                                 * ・送受信ウィンドバッファの省コピー機能
     362                                 * ・動的な通信端点の生成・削除機能
    379363                                 */
    380364                                cep->flags &= TCP_CEP_FLG_NOT_CLEAR;
    381365
    382366                                /*
    383                                  *  通信端点をロックし、
    384                                  *  送受信ウィンドバッファキューのネットワークバッファを解放する。
     367                                 *  通信端点をロックし、
     368                                 *  送受信ウィンドバッファキューのネットワークバッファを解放する。
    385369                                 */
    386370                                cep->rwbuf_count = 0;
     
    410394
    411395/*
    412  *  tcp_sht_cep  -- データ送信の終了【標準機能】
     396 *  tcp_sht_cep  -- データ送信の終了【標準機能】
    413397 */
    414398
     
    420404
    421405        /*
    422          *  CEP をロックし、API 機能コードとタスク識別子を記録する。
    423          *  すでに記録されていれば、ペンディング中なのでエラー
     406         *  CEP をロックし、API 機能コードとタスク識別子を記録する。
     407         *  すでに記録されていれば、ペンディング中なのでエラー
    424408         */
    425409        if ((error = tcp_lock_cep(cepid, &cep, TFN_TCP_SHT_CEP)) != E_OK)
    426410                return error;
    427411
    428         /* TCP 通信端点のコネクションが確立状æ
    429 ‹ã§ãªã‘ればエラー */
     412        /* TCP 通信端点のコネクションが確立状態でなければエラー */
    430413        if (!TCP_FSM_HAVE_ESTABLISHED(cep->fsm_state)) {
    431414                if ((error = cep->error) == E_OK)
     
    433416                }
    434417
    435         else if ((cep = tcp_user_closed(cep)) != NULL) {                /* コネクションを切断する。*/
    436 
    437                 /* 切断セグメント出力をポストする。*/
     418        else if ((cep = tcp_user_closed(cep)) != NULL) {                /* コネクションを切断する。*/
     419
     420                /* 切断セグメント出力をポストする。*/
    438421                cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    439422                sig_sem(SEM_TCP_POST_OUTPUT);
     
    450433
    451434/*
    452  *  tcp_snd_dat -- パケットの送信【標準機能】
     435 *  tcp_snd_dat -- パケットの送信【標準機能】
    453436 */
    454437
     
    461444#ifdef TCP_CFG_NON_BLOCKING
    462445
    463         /* data が NULL か、len < 0 ならエラー */
     446        /* data が NULL か、len < 0 ならエラー */
    464447        if (data == NULL || len < 0)
    465448                return E_PAR;
     
    467450#else   /* of #ifdef TCP_CFG_NON_BLOCKING */
    468451
    469         /* data が NULL、len < 0 か、tmout が TMO_NBLK ならエラー */
     452        /* data が NULL、len < 0 か、tmout が TMO_NBLK ならエラー */
    470453        if (data == NULL || len < 0 || tmout == TMO_NBLK)
    471454                return E_PAR;
     
    474457
    475458        /*
    476          *  CEP をロックし、API 機能コードとタスク識別子を記録する。
    477          *  すでに記録されていれば、ペンディング中なのでエラー
     459         *  CEP をロックし、API 機能コードとタスク識別子を記録する。
     460         *  すでに記録されていれば、ペンディング中なのでエラー
    478461         */
    479462        if ((error = tcp_lock_cep(cepid, &cep, TFN_TCP_SND_DAT)) != E_OK)
    480463                return error;
    481464
    482         /* 送信できるか、通信端点の状æ
    483 ‹ã‚’見る。*/
     465        /* 送信できるか、通信端点の状態を見る。*/
    484466        if ((error = tcp_can_send_more(cep, TFN_TCP_SND_DAT, tmout)) != E_OK)
    485467                goto err_ret;
     
    487469#ifdef TCP_CFG_NON_BLOCKING
    488470
    489         /* タイムアウトをチェックする。*/
    490         if (tmout == TMO_NBLK) {                /* ノンブロッキングコール */
    491 
    492                 /* 送信ウィンドバッファに空きがあればコールバック関数を呼び出す。*/
     471        /* タイムアウトをチェックする。*/
     472        if (tmout == TMO_NBLK) {                /* ノンブロッキングコール */
     473
     474                /* 送信ウィンドバッファに空きがあればコールバック関数を呼び出す。*/
    493475                if (!TCP_IS_SWBUF_FULL(cep)) {
    494476
    495                         /* 送信ウィンドバッファにデータを書き込む。*/
     477                        /* 送信ウィンドバッファにデータを書き込む。*/
    496478                        error = TCP_WRITE_SWBUF(cep, data, (uint_t)len);
    497479
    498                         /* 出力をポストする。*/
     480                        /* 出力をポストする。*/
    499481                        cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    500482                        sig_sem(SEM_TCP_POST_OUTPUT);
    501483
    502                         /* コールバック関数を呼び出す。*/
     484                        /* コールバック関数を呼び出す。*/
    503485#ifdef TCP_CFG_NON_BLOCKING_COMPAT14
    504486                        (*cep->callback)(GET_TCP_CEPID(cep), TFN_TCP_SND_DAT, (void*)error);
     
    518500                        }
    519501                }
    520         else {          /* 非ノンブロッキングコール */
    521 
    522 #endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
    523 
    524                 /* 送信ウィンドバッファが空くのをå¾
    525 ã¤ã€‚*/
     502        else {          /* 非ノンブロッキングコール */
     503
     504#endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
     505
     506                /* 送信ウィンドバッファが空くのを待つ。*/
    526507                if ((error = TCP_WAIT_SWBUF(cep, tmout)) != E_OK)
    527508                        goto err_ret;
    528509
    529                 /* 送信ウィンドバッファにデータを書き込む。*/
     510                /* 送信ウィンドバッファにデータを書き込む。*/
    530511                if ((error = TCP_WRITE_SWBUF(cep, data, (uint_t)len)) > 0) {
    531512
    532                         /* データを送信する。送信ウィンドバッファがフルのときは強制的に送信する。*/
     513                        /* データを送信する。送信ウィンドバッファがフルのときは強制的に送信する。*/
    533514                        if (TCP_IS_SWBUF_FULL(cep))
    534515                                cep->flags |= TCP_CEP_FLG_FORCE | TCP_CEP_FLG_FORCE_CLEAR;
    535516
    536                         /* 出力をポストする。*/
     517                        /* 出力をポストする。*/
    537518                        cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    538519                        sig_sem(SEM_TCP_POST_OUTPUT);
     
    556537
    557538/*
    558  *  tcp_get_buf -- 送信用バッファの獲得【標準機能】
     539 *  tcp_get_buf -- 送信用バッファの獲得【標準機能】
    559540 */
    560541
     
    567548#ifdef TCP_CFG_NON_BLOCKING
    568549
    569         /* p_buf が NULL ならエラー */
     550        /* p_buf が NULL ならエラー */
    570551        if (p_buf == NULL)
    571552                return E_PAR;
     
    573554#else   /* of #ifdef TCP_CFG_NON_BLOCKING */
    574555
    575         /* p_buf が NULL か、tmout が TMO_NBLK ならエラー */
     556        /* p_buf が NULL か、tmout が TMO_NBLK ならエラー */
    576557        if (p_buf == NULL || tmout == TMO_NBLK)
    577558                return E_PAR;
     
    580561
    581562        /*
    582          *  CEP をロックし、API 機能コードとタスク識別子を記録する。
    583          *  すでに記録されていれば、ペンディング中なのでエラー
     563         *  CEP をロックし、API 機能コードとタスク識別子を記録する。
     564         *  すでに記録されていれば、ペンディング中なのでエラー
    584565         */
    585566        if ((error = tcp_lock_cep(cepid, &cep, TFN_TCP_GET_BUF)) != E_OK)
    586567                return error;
    587568
    588         /* 送信できるか、通信端点の状æ
    589 ‹ã‚’見る。*/
     569        /* 送信できるか、通信端点の状態を見る。*/
    590570        if ((error = tcp_can_send_more(cep, TFN_TCP_GET_BUF, tmout)) != E_OK)
    591571                goto err_ret;
     
    593573#ifdef TCP_CFG_NON_BLOCKING
    594574
    595         /* タイムアウトをチェックする。*/
    596         if (tmout == TMO_NBLK) {                /* ノンブロッキングコール */
     575        /* タイムアウトをチェックする。*/
     576        if (tmout == TMO_NBLK) {                /* ノンブロッキングコール */
    597577
    598578                if (!TCP_IS_SWBUF_FULL(cep)) {
    599579
    600                         /* 送信ウィンドバッファに空きがあればコールバック関数を呼び出す。*/
     580                        /* 送信ウィンドバッファに空きがあればコールバック関数を呼び出す。*/
    601581                        error = TCP_GET_SWBUF_ADDR(cep, p_buf);
    602582
    603                         /* コールバック関数を呼び出す。*/
     583                        /* コールバック関数を呼び出す。*/
    604584#ifdef TCP_CFG_NON_BLOCKING_COMPAT14
    605585                        (*cep->callback)(GET_TCP_CEPID(cep), TFN_TCP_GET_BUF, (void*)error);
     
    618598                }
    619599
    620         else {          /* 非ノンブロッキングコール */
    621 
    622 #endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
    623 
    624                 /* 送信ウィンドバッファが空くのをå¾
    625 ã¤ã€‚*/
     600        else {          /* 非ノンブロッキングコール */
     601
     602#endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
     603
     604                /* 送信ウィンドバッファが空くのを待つ。*/
    626605                if ((error = TCP_WAIT_SWBUF(cep, tmout)) != E_OK)
    627606                        goto err_ret;
    628607
    629                 /* 送信ウィンドバッファの空アドレスを獲得する。*/
     608                /* 送信ウィンドバッファの空アドレスを獲得する。*/
    630609                error = TCP_GET_SWBUF_ADDR(cep, p_buf);
    631610
     
    647626
    648627/*
    649  *  tcp_snd_buf -- バッファå†
    650 ã®ãƒ‡ãƒ¼ã‚¿ã®é€ä¿¡ã€æ¨™æº–機能】
     628 *  tcp_snd_buf -- バッファ内のデータの送信【標準機能】
    651629 */
    652630
     
    657635        ER              error;
    658636
    659         /* 送信する長さ len をチェックする。*/
     637        /* 送信する長さ len をチェックする。*/
    660638        if (len < 0)
    661639                return E_PAR;
    662640
    663         /* 送信する長さlen が 0 であれば、何もしないで戻る。*/
     641        /* 送信する長さlen が 0 であれば、何もしないで戻る。*/
    664642        if (len == 0)
    665643                return E_OK;
    666644
    667645        /*
    668          *  CEP をロックし、API 機能コードとタスク識別子を記録する。
    669          *  すでに記録されていれば、ペンディング中なのでエラー
     646         *  CEP をロックし、API 機能コードとタスク識別子を記録する。
     647         *  すでに記録されていれば、ペンディング中なのでエラー
    670648         */
    671649        if ((error = tcp_lock_cep(cepid, &cep, TFN_TCP_SND_BUF)) != E_OK)
    672650                return error;
    673651
    674         /* 送信する長さ len をチェックする。*/
     652        /* 送信する長さ len をチェックする。*/
    675653        if (len > cep->get_buf_len) {
    676654                error = E_OBJ;
     
    678656                }
    679657
    680         /* 送信できるか、CEP の FSM 状æ
    681 ‹ã‚’見る。*/
     658        /* 送信できるか、CEP の FSM 状態を見る。*/
    682659        if (!TCP_FSM_CAN_SEND_MORE(cep->fsm_state)) {
    683660                if ((error = cep->error) == E_OK)
     
    686663                }
    687664
    688         /* 送信ウィンドバッファのデータを送信可能にする。*/
     665        /* 送信ウィンドバッファのデータを送信可能にする。*/
    689666        TCP_SEND_SWBUF(cep, (uint_t)len);
    690667
    691         /* 出力をポストする。*/
     668        /* 出力をポストする。*/
    692669        cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    693670        sig_sem(SEM_TCP_POST_OUTPUT);
     
    704681
    705682/*
    706  *  tcp_rcv_dat -- パケットの受信【標準機能】
     683 *  tcp_rcv_dat -- パケットの受信【標準機能】
    707684 */
    708685
     
    715692#ifdef TCP_CFG_NON_BLOCKING
    716693
    717         /* data が NULL か、len < 0 ならエラー */
     694        /* data が NULL か、len < 0 ならエラー */
    718695        if (data == NULL || len < 0)
    719696                return E_PAR;
     
    721698#else   /* of #ifdef TCP_CFG_NON_BLOCKING */
    722699
    723         /* data が NULL、len < 0 か、tmout が TMO_NBLK ならエラー */
     700        /* data が NULL、len < 0 か、tmout が TMO_NBLK ならエラー */
    724701        if (data == NULL || len < 0 || tmout == TMO_NBLK)
    725702                return E_PAR;
     
    728705
    729706        /*
    730          *  CEP をロックし、API 機能コードとタスク識別子を記録する。
    731          *  すでに記録されていれば、ペンディング中なのでエラー
     707         *  CEP をロックし、API 機能コードとタスク識別子を記録する。
     708         *  すでに記録されていれば、ペンディング中なのでエラー
    732709         */
    733710        if ((error = tcp_lock_cep(cepid, &cep, TFN_TCP_RCV_DAT)) != E_OK)
    734711                return error;
    735712
    736         /* 受信できるか、通信端点の状æ
    737 ‹ã‚’見る。*/
     713        /* 受信できるか、通信端点の状態を見る。*/
    738714        if (tcp_can_recv_more(&error, cep, TFN_TCP_RCV_DAT, tmout) != E_OK)
    739715                goto err_ret;
     
    741717#ifdef TCP_CFG_NON_BLOCKING
    742718
    743         /* タイムアウトをチェックする。*/
    744         if (tmout == TMO_NBLK) {                /* ノンブロッキングコール */
    745 
    746                 /* 受信ウィンドバッファにデータがあればコールバック関数を呼び出す。*/
     719        /* タイムアウトをチェックする。*/
     720        if (tmout == TMO_NBLK) {                /* ノンブロッキングコール */
     721
     722                /* 受信ウィンドバッファにデータがあればコールバック関数を呼び出す。*/
    747723                if (cep->rwbuf_count > 0) {
    748724
    749                         /* 受信ウィンドバッファからデータを取り出す。*/
     725                        /* 受信ウィンドバッファからデータを取り出す。*/
    750726                        len = TCP_READ_RWBUF(cep, data, (uint_t)len);
    751727
    752                         /* コールバック関数を呼び出す。*/
     728                        /* コールバック関数を呼び出す。*/
    753729#ifdef TCP_CFG_NON_BLOCKING_COMPAT14
    754730                        (*cep->callback)(GET_TCP_CEPID(cep), TFN_TCP_RCV_DAT, (void*)(uint32_t)len);
     
    766742                        }
    767743                }
    768         else {          /* 非ノンブロッキングコール */
    769 
    770 #endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
    771 
    772                 /* 受信ウィンドバッファにデータがなければ、å
    773 ¥åŠ›ãŒã‚るまでå¾
    774 ã¤ã€‚*/
     744        else {          /* 非ノンブロッキングコール */
     745
     746#endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
     747
     748                /* 受信ウィンドバッファにデータがなければ、入力があるまで待つ。*/
    775749                if ((error = tcp_wait_rwbuf(cep, tmout)) != E_OK)
    776750                        goto err_ret;
    777751
    778                 /* 受信ウィンドバッファからデータを取り出す。*/
     752                /* 受信ウィンドバッファからデータを取り出す。*/
    779753                error = TCP_READ_RWBUF(cep, data, (uint_t)len);
    780754
    781                 /* 相手にウィンドウサイズが変わったことを知らせるため出力をポストする。*/
     755                /* 相手にウィンドウサイズが変わったことを知らせるため出力をポストする。*/
    782756                cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    783757                sig_sem(SEM_TCP_POST_OUTPUT);
     
    800774
    801775/*
    802  *  tcp_rcv_buf -- 受信したデータのå
    803 ¥ã£ãŸãƒãƒƒãƒ•ã‚¡ã®ç²å¾—【標準機能】
     776 *  tcp_rcv_buf -- 受信したデータの入ったバッファの獲得【標準機能】
    804777 */
    805778
     
    812785#ifdef TCP_CFG_NON_BLOCKING
    813786
    814         /* p_buf が NULL ならエラー */
     787        /* p_buf が NULL ならエラー */
    815788        if (p_buf == NULL)
    816789                return E_PAR;
     
    818791#else   /* of #ifdef TCP_CFG_NON_BLOCKING */
    819792
    820         /* p_buf が NULL か、tmout が TMO_NBLK ならエラー */
     793        /* p_buf が NULL か、tmout が TMO_NBLK ならエラー */
    821794        if (p_buf == NULL || tmout == TMO_NBLK)
    822795                return E_PAR;
     
    825798
    826799        /*
    827          *  CEP をロックし、API 機能コードとタスク識別子を記録する。
    828          *  すでに記録されていれば、ペンディング中なのでエラー
     800         *  CEP をロックし、API 機能コードとタスク識別子を記録する。
     801         *  すでに記録されていれば、ペンディング中なのでエラー
    829802         */
    830803        if ((error = tcp_lock_cep(cepid, &cep, TFN_TCP_RCV_BUF)) != E_OK)
    831804                return error;
    832805
    833         /* 受信できるか、通信端点の状æ
    834 ‹ã‚’見る。*/
     806        /* 受信できるか、通信端点の状態を見る。*/
    835807        if (tcp_can_recv_more(&error, cep, TFN_TCP_RCV_DAT, tmout) != E_OK)
    836808                goto err_ret;
     
    838810#ifdef TCP_CFG_NON_BLOCKING
    839811
    840         /* タイムアウトをチェックする。*/
    841         if (tmout == TMO_NBLK) {                /* ノンブロッキングコール */
    842 
    843                 /* 受信ウィンドバッファにデータがあればコールバック関数を呼び出す。*/
     812        /* タイムアウトをチェックする。*/
     813        if (tmout == TMO_NBLK) {                /* ノンブロッキングコール */
     814
     815                /* 受信ウィンドバッファにデータがあればコールバック関数を呼び出す。*/
    844816                if (cep->rwbuf_count > 0) {
    845817
    846                         /* 受信ウィンドバッファの空アドレスを獲得する。*/
     818                        /* 受信ウィンドバッファの空アドレスを獲得する。*/
    847819                        error = TCP_GET_RWBUF_ADDR(cep, p_buf);
    848820
    849                         /* コールバック関数を呼び出す。*/
     821                        /* コールバック関数を呼び出す。*/
    850822#ifdef TCP_CFG_NON_BLOCKING_COMPAT14
    851823                        (*cep->callback)(GET_TCP_CEPID(cep), TFN_TCP_RCV_BUF, (void*)error);
     
    862834                        }
    863835                }
    864         else {          /* 非ノンブロッキングコール */
    865 
    866 #endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
    867 
    868                 /* 受信ウィンドバッファにデータがなければ、å
    869 ¥åŠ›ãŒã‚るまでå¾
    870 ã¤ã€‚*/
     836        else {          /* 非ノンブロッキングコール */
     837
     838#endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
     839
     840                /* 受信ウィンドバッファにデータがなければ、入力があるまで待つ。*/
    871841                if ((error = tcp_wait_rwbuf(cep, tmout)) != E_OK) {
    872842                        cep->rwbuf_count = 0;
     
    874844                        }
    875845
    876                 /* 受信ウィンドバッファのアドレスを獲得する。*/
     846                /* 受信ウィンドバッファのアドレスを獲得する。*/
    877847                error = TCP_GET_RWBUF_ADDR(cep, p_buf);
    878848
     
    894864
    895865/*
    896  *  tcp_rel_buf -- 受信用バッファの解放【標準機能】
     866 *  tcp_rel_buf -- 受信用バッファの解放【標準機能】
    897867 */
    898868
     
    903873        ER              error;
    904874
    905         /* 解放する長さ len をチェックする。*/
     875        /* 解放する長さ len をチェックする。*/
    906876        if (len < 0)
    907877                return E_PAR;
    908878
    909879        /*
    910          *  CEP をロックし、API 機能コードとタスク識別子を記録する。
    911          *  すでに記録されていれば、ペンディング中なのでエラー
     880         *  CEP をロックし、API 機能コードとタスク識別子を記録する。
     881         *  すでに記録されていれば、ペンディング中なのでエラー
    912882         */
    913883        if ((error = tcp_lock_cep(cepid, &cep, TFN_TCP_REL_BUF)) != E_OK)
    914884                return error;
    915885
    916         /* 解放する長さ len をチェックする。*/
     886        /* 解放する長さ len をチェックする。*/
    917887        if (len > cep->rcv_buf_len) {
    918888                error = E_OBJ;
     
    920890                }
    921891
    922         /* 通信端点をロックする。*/
     892        /* 通信端点をロックする。*/
    923893        syscall(wai_sem(cep->semid_lock));
    924894
    925         /* 受信ウィンドバッファから受信したオクテットを削除する。*/
     895        /* 受信ウィンドバッファから受信したオクテットを削除する。*/
    926896        TCP_DROP_RWBUF(cep, (uint_t)len);
    927897
    928         /* tcp_rcv_buf の割当て長をリセットする。*/
     898        /* tcp_rcv_buf の割当て長をリセットする。*/
    929899        cep->rcv_buf_len = 0;
    930900
    931         /* 通信端点のロックを解除する。*/
     901        /* 通信端点のロックを解除する。*/
    932902        syscall(sig_sem(cep->semid_lock));
    933903
    934         /* 相手にウィンドウサイズが変わったことを知らせるため出力をポストする。*/
     904        /* 相手にウィンドウサイズが変わったことを知らせるため出力をポストする。*/
    935905        cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    936906        sig_sem(SEM_TCP_POST_OUTPUT);
     
    947917
    948918/*
    949  *  tcp_can_snd -- ペンディングしている送信のキャンセル
     919 *  tcp_can_snd -- ペンディングしている送信のキャンセル
    950920 */
    951921
     
    955925        ER      error = E_OK;
    956926
    957         /* 通信端点をロックする。*/
     927        /* 通信端点をロックする。*/
    958928        syscall(wai_sem(cep->semid_lock));
    959929
    960930        /*
    961          *  snd_tskid が TA_NULL なら、
    962          *  ペンディングしていないのでエラー
     931         *  snd_tskid が TA_NULL なら、
     932         *  ペンディングしていないのでエラー
    963933         */
    964934        if (cep->snd_tskid == TA_NULL)
    965935                error = EV_NOPND;
    966936
    967         /* ペンディング中の API 機能コードと一致しなければエラー */
     937        /* ペンディング中の API 機能コードと一致しなければエラー */
    968938        else if (fncd != TFN_TCP_ALL && fncd != cep->snd_tfn)
    969939                error = E_OBJ;
    970940
    971         /* 処理をキャンセルする。*/
     941        /* 処理をキャンセルする。*/
    972942        else {
    973943
    974                 /* 受信再構成キューのネットワークバッファを解放する。*/
     944                /* 受信再構成キューのネットワークバッファを解放する。*/
    975945                tcp_free_reassq(cep);
    976946
    977                 /* 受信ウィンドバッファキューのネットワークバッファを解放する。*/
     947                /* 受信ウィンドバッファキューのネットワークバッファを解放する。*/
    978948                cep->rwbuf_count = 0;
    979949                TCP_FREE_RWBUFQ(cep);
    980950
    981                 /* 送信ウィンドバッファキューのネットワークバッファを解放する。*/
     951                /* 送信ウィンドバッファキューのネットワークバッファを解放する。*/
    982952                TCP_FREE_SWBUFQ(cep);
    983953
    984954#ifdef TCP_CFG_NON_BLOCKING
    985955
    986                 if (cep->snd_nblk_tfn != TFN_TCP_UNDEF) {       /* ノンブロッキングコール */
     956                if (cep->snd_nblk_tfn != TFN_TCP_UNDEF) {       /* ノンブロッキングコール */
    987957
    988958                        switch (cep->snd_nblk_tfn) {
     
    990960                        case TFN_TCP_CON_CEP:
    991961                                /*
    992                                  *  通信端点から受付口を解放し、
    993                                  *  イベントフラグをクローズに設定する。
     962                                 *  通信端点から受付口を解放し、
     963                                 *  イベントフラグをクローズに設定する。
    994964                                 */
    995965                                cep->rep = NULL;
     
    10381008                }
    10391009
    1040         /* 通信端点のロックを解除する。*/
     1010        /* 通信端点のロックを解除する。*/
    10411011        syscall(sig_sem(cep->semid_lock));
    10421012
     
    10451015
    10461016/*
    1047  *  tcp_can_rcv -- ペンディングしている受信のキャンセル
     1017 *  tcp_can_rcv -- ペンディングしている受信のキャンセル
    10481018 */
    10491019
     
    10531023        ER      error = E_OK;
    10541024
    1055         /* 通信端点をロックする。*/
     1025        /* 通信端点をロックする。*/
    10561026        syscall(wai_sem(cep->semid_lock));
    10571027
    10581028        /*
    1059          *  rcv_tskid が TA_NULL なら、
    1060          *  ペンディングしていないのでエラー
     1029         *  rcv_tskid が TA_NULL なら、
     1030         *  ペンディングしていないのでエラー
    10611031         */
    10621032        if (cep->rcv_tskid == TA_NULL)
    10631033                error = EV_NOPND;
    10641034
    1065         /* ペンディング中の API 機能コードと一致しなければエラー */
     1035        /* ペンディング中の API 機能コードと一致しなければエラー */
    10661036        else if (fncd != TFN_TCP_ALL && fncd != cep->rcv_tfn)
    10671037                error = E_OBJ;
    10681038
    1069         /* 処理をキャンセルする。*/
     1039        /* 処理をキャンセルする。*/
    10701040        else {
    10711041
    1072                 /* 受信再構成キューのネットワークバッファを解放する。*/
     1042                /* 受信再構成キューのネットワークバッファを解放する。*/
    10731043                tcp_free_reassq(cep);
    10741044
    1075                 /* 受信ウィンドバッファキューのネットワークバッファを解放する。*/
     1045                /* 受信ウィンドバッファキューのネットワークバッファを解放する。*/
    10761046                cep->rwbuf_count = 0;
    10771047                TCP_FREE_RWBUFQ(cep);
    10781048
    1079                 /* 送信ウィンドバッファキューのネットワークバッファを解放する。*/
     1049                /* 送信ウィンドバッファキューのネットワークバッファを解放する。*/
    10801050                TCP_FREE_SWBUFQ(cep);
    10811051
    10821052#ifdef TCP_CFG_NON_BLOCKING
    10831053
    1084                 if (cep->rcv_nblk_tfn != TFN_TCP_UNDEF) {       /* ノンブロッキングコール */
     1054                if (cep->rcv_nblk_tfn != TFN_TCP_UNDEF) {       /* ノンブロッキングコール */
    10851055
    10861056                        switch (cep->rcv_nblk_tfn) {
     
    10881058                        case TFN_TCP_ACP_CEP:
    10891059                                /*
    1090                                  *  通信端点から受付口を解放し、
    1091                                  *  イベントフラグをクローズに設定する。
     1060                                 *  通信端点から受付口を解放し、
     1061                                 *  イベントフラグをクローズに設定する。
    10921062                                 */
    10931063                                cep->rep = NULL;
     
    11421112                }
    11431113
    1144         /* 通信端点のロックを解除する。*/
     1114        /* 通信端点のロックを解除する。*/
    11451115        syscall(sig_sem(cep->semid_lock));
    11461116
     
    11491119
    11501120/*
    1151  *  tcp_can_cep -- ペンディングしている処理のキャンセル【標準機能】
     1121 *  tcp_can_cep -- ペンディングしている処理のキャンセル【標準機能】
    11521122 */
    11531123
     
    11581128        ER              error = E_OK, snd_err, rcv_err;
    11591129
    1160         /* API 機能コードをチェックする。*/
     1130        /* API 機能コードをチェックする。*/
    11611131        if (!VALID_TFN_TCP_CAN(fncd))
    11621132                return E_PAR;
    11631133
    1164         /* TCP 通信端点 ID をチェックする。*/
     1134        /* TCP 通信端点 ID をチェックする。*/
    11651135        if (!VALID_TCP_CEPID(cepid))
    11661136                return E_ID;
    11671137
    1168         /* TCP 通信端点を得る。*/
     1138        /* TCP 通信端点を得る。*/
    11691139        cep = GET_TCP_CEP(cepid);
    11701140
    1171         /* TCP 通信端点をチェックする。*/
     1141        /* TCP 通信端点をチェックする。*/
    11721142        if (!VALID_TCP_CEP(cep))
    11731143                return E_NOEXS;
    11741144
    1175         if (fncd == TFN_TCP_ALL) {              /* TFN_TCP_ALL の処理 */
     1145        if (fncd == TFN_TCP_ALL) {              /* TFN_TCP_ALL の処理 */
    11761146                snd_err = tcp_can_snd(cep, fncd);
    11771147                rcv_err = tcp_can_rcv(cep, fncd);
    11781148
    11791149                /*
    1180                  *  snd_err と rcv_err のどちらも EV_NOPND
    1181                  *  なら、ペンディングしていないのでエラー
     1150                 *  snd_err と rcv_err のどちらも EV_NOPND
     1151                 *  なら、ペンディングしていないのでエラー
    11821152                 */
    11831153                if (snd_err == EV_NOPND && rcv_err == EV_NOPND)
     
    11961166                }
    11971167
    1198         else if (IS_TFN_TCP_RCV(fncd)) {        /* 受信処理のキャンセル */
     1168        else if (IS_TFN_TCP_RCV(fncd)) {        /* 受信処理のキャンセル */
    11991169                if ((error = tcp_can_rcv(cep, fncd)) == EV_NOPND)
    12001170                        error = E_OBJ;
    12011171                }
    12021172
    1203         else {                                  /* 送信処理のキャンセル */
     1173        else {                                  /* 送信処理のキャンセル */
    12041174                if ((error = tcp_can_snd(cep, fncd)) == EV_NOPND)
    12051175                        error = E_OBJ;
     
    12161186
    12171187/*
    1218  *  tcp_cre_cep -- TCP 通信端点の生成【拡張機能】
     1188 *  tcp_cre_cep -- TCP 通信端点の生成【拡張機能】
    12191189 */
    12201190
     
    12251195        ER              error;
    12261196
    1227         /* TCP 通信端点 ID をチェックする。*/
     1197        /* TCP 通信端点 ID をチェックする。*/
    12281198        if (!VALID_TCP_CEPID(cepid))
    12291199                return E_ID;
    12301200
    1231         /* pk_ccep が NULL ならエラー */
     1201        /* pk_ccep が NULL ならエラー */
    12321202        if (pk_ccep == NULL)
    12331203                return E_PAR;
    12341204
    1235         /* TCP 通信端点を得る。*/
     1205        /* TCP 通信端点を得る。*/
    12361206        cep = GET_TCP_CEP(cepid);
    12371207
    1238         /* TCP 通信端点が、動的生成用でなければエラー */
     1208        /* TCP 通信端点が、動的生成用でなければエラー */
    12391209        if (!DYNAMIC_TCP_CEP(cep))
    12401210                return E_ID;
    12411211
    1242         /* 通信端点をロックする。*/
     1212        /* 通信端点をロックする。*/
    12431213        syscall(wai_sem(cep->semid_lock));
    12441214
    12451215        /*
    1246          * TCP 通信端点をチェックする。生成済みであればエラー
     1216         * TCP 通信端点をチェックする。生成済みであればエラー
    12471217         */
    12481218        if (VALID_TCP_CEP(cep))
     
    12501220        else {
    12511221
    1252                 /* TCP 通信端点生成æƒ
    1253 å ±ã‚’コピーする。*/
    1254                 cep->cepatr   = pk_ccep->cepatr;                /* 通信端点属性                   */
    1255                 cep->sbuf     = pk_ccep->sbuf;                  /* 送信用ウィンドバッファ    */
    1256                 cep->sbufsz   = pk_ccep->sbufsz;                /* 送信用ウィンドバッファサイズ   */
    1257                 cep->rbuf     = pk_ccep->rbuf;                  /* 受信用ウィンドバッファ    */
    1258                 cep->rbufsz   = pk_ccep->rbufsz;                /* 受信用ウィンドバッファサイズ   */
    1259                 cep->callback = (void*)pk_ccep->callback;       /* コールバック                   */
    1260 
    1261                 /* TCP 通信端点を生成済みにする。*/
     1222                /* TCP 通信端点生成情報をコピーする。*/
     1223                cep->cepatr   = pk_ccep->cepatr;                /* 通信端点属性                       */
     1224                cep->sbuf     = pk_ccep->sbuf;                  /* 送信用ウィンドバッファ  */
     1225                cep->sbufsz   = pk_ccep->sbufsz;                /* 送信用ウィンドバッファサイズ       */
     1226                cep->rbuf     = pk_ccep->rbuf;                  /* 受信用ウィンドバッファ  */
     1227                cep->rbufsz   = pk_ccep->rbufsz;                /* 受信用ウィンドバッファサイズ       */
     1228                cep->callback = (void*)pk_ccep->callback;       /* コールバック                       */
     1229
     1230                /* TCP 通信端点を生成済みにする。*/
    12621231                cep->flags |= TCP_CEP_FLG_VALID;
    12631232                error = E_OK;
    12641233                }
    12651234
    1266         /* 通信端点のロックを解除する。*/
     1235        /* 通信端点のロックを解除する。*/
    12671236        syscall(sig_sem(cep->semid_lock));
    12681237
     
    12731242
    12741243/*
    1275  *  tcp_del_cep -- TCP 通信端点の削除【拡張機能】
     1244 *  tcp_del_cep -- TCP 通信端点の削除【拡張機能】
    12761245 */
    12771246
     
    12841253        ER              error;
    12851254
    1286         /* TCP 通信端点 ID をチェックする。*/
     1255        /* TCP 通信端点 ID をチェックする。*/
    12871256        if (!VALID_TCP_CEPID(cepid))
    12881257                return E_ID;
    12891258
    1290         /* TCP 通信端点を得る。*/
     1259        /* TCP 通信端点を得る。*/
    12911260        cep = GET_TCP_CEP(cepid);
    12921261
    1293         /* TCP 通信端点が、動的生成用でなければエラー */
     1262        /* TCP 通信端点が、動的生成用でなければエラー */
    12941263        if (!DYNAMIC_TCP_CEP(cep))
    12951264                return E_ID;
    12961265
    1297         /* 通信端点をロックする。*/
     1266        /* 通信端点をロックする。*/
    12981267        syscall(wai_sem(cep->semid_lock));
    12991268
    13001269        /*
    1301          * TCP 通信端点をチェックする。以下の場合はエラー
    1302          * ・未生成。
    1303          * ・使用中。
     1270         * TCP 通信端点をチェックする。以下の場合はエラー
     1271         * ・未生成。
     1272         * ・使用中。
    13041273         */
    13051274        if (!VALID_TCP_CEP(cep))
     
    13091278        else {
    13101279
    1311                 /* TCP 通信端点を未生成にする。*/
     1280                /* TCP 通信端点を未生成にする。*/
    13121281                cep->flags &= ~TCP_CEP_FLG_VALID;
    13131282                error = E_OK;
    13141283                }
    13151284
    1316         /* 通信端点のロックを解除する。*/
     1285        /* 通信端点のロックを解除する。*/
    13171286        syscall(sig_sem(cep->semid_lock));
    13181287
     
    13251294
    13261295/*
    1327  *  tcp_snd_oob -- 緊急データの送信【拡張機能】
     1296 *  tcp_snd_oob -- 緊急データの送信【拡張機能】
    13281297 */
    13291298
     
    13361305#ifdef TCP_CFG_NON_BLOCKING
    13371306
    1338         /* data が NULL か、len < 0 ならエラー */
     1307        /* data が NULL か、len < 0 ならエラー */
    13391308        if (data == NULL || len < 0)
    13401309                return E_PAR;
     
    13421311#else   /* of #ifdef TCP_CFG_NON_BLOCKING */
    13431312
    1344         /* data が NULL、len < 0 か、tmout が TMO_NBLK ならエラー */
     1313        /* data が NULL、len < 0 か、tmout が TMO_NBLK ならエラー */
    13451314        if (data == NULL || len < 0 || tmout == TMO_NBLK)
    13461315                return E_PAR;
     
    13491318
    13501319        /*
    1351          *  CEP をロックし、API 機能コードとタスク識別子を記録する。
    1352          *  すでに記録されていれば、ペンディング中なのでエラー
     1320         *  CEP をロックし、API 機能コードとタスク識別子を記録する。
     1321         *  すでに記録されていれば、ペンディング中なのでエラー
    13531322         */
    13541323        if ((error = tcp_lock_cep(cepid, &cep, TFN_TCP_SND_OOB)) != E_OK)
    13551324                return error;
    13561325
    1357         /* 送信できるか、通信端点の状æ
    1358 ‹ã‚’見る。*/
     1326        /* 送信できるか、通信端点の状態を見る。*/
    13591327        if ((error = tcp_can_send_more(cep, TFN_TCP_SND_OOB, tmout)) != E_OK)
    13601328                goto err_ret;
     
    13621330#ifdef TCP_CFG_NON_BLOCKING
    13631331
    1364         /* タイムアウトをチェックする。*/
    1365         if (tmout == TMO_NBLK) {                /* ノンブロッキングコール */
    1366 
    1367                 /* 送信ウィンドバッファに空きがあればコールバック関数を呼び出す。*/
     1332        /* タイムアウトをチェックする。*/
     1333        if (tmout == TMO_NBLK) {                /* ノンブロッキングコール */
     1334
     1335                /* 送信ウィンドバッファに空きがあればコールバック関数を呼び出す。*/
    13681336                if (!TCP_IS_SWBUF_FULL(cep)) {
    13691337
    1370                         /* 送信ウィンドバッファにデータを書き込む。*/
     1338                        /* 送信ウィンドバッファにデータを書き込む。*/
    13711339                        error = TCP_WRITE_SWBUF(cep, data, (uint_t)len);
    13721340
    1373                         /* 送信緊急ポインタを設定する。*/
     1341                        /* 送信緊急ポインタを設定する。*/
    13741342                        cep->snd_up = cep->snd_una + cep->swbuf_count;
    13751343
    1376                         /* 出力をポストする。*/
     1344                        /* 出力をポストする。*/
    13771345                        cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    13781346                        sig_sem(SEM_TCP_POST_OUTPUT);
    13791347
    1380                         /* コールバック関数を呼び出す。*/
     1348                        /* コールバック関数を呼び出す。*/
    13811349#ifdef TCP_CFG_NON_BLOCKING_COMPAT14
    13821350                        (*cep->callback)(GET_TCP_CEPID(cep), TFN_TCP_SND_OOB, (void*)error);
     
    13961364                        }
    13971365                }
    1398         else {          /* 非ノンブロッキングコール */
    1399 
    1400 #endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
    1401 
    1402                 /* 送信ウィンドバッファが空くのをå¾
    1403 ã¤ã€‚*/
     1366        else {          /* 非ノンブロッキングコール */
     1367
     1368#endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
     1369
     1370                /* 送信ウィンドバッファが空くのを待つ。*/
    14041371                if ((error = TCP_WAIT_SWBUF(cep, tmout)) != E_OK)
    14051372                        goto err_ret;
    14061373
    1407                 /* 送信ウィンドバッファにデータを書き込む。*/
     1374                /* 送信ウィンドバッファにデータを書き込む。*/
    14081375                if ((error = TCP_WRITE_SWBUF(cep, data, (uint_t)len)) > 0) {
    14091376
    1410                         /* 送信緊急ポインタを設定する。*/
     1377                        /* 送信緊急ポインタを設定する。*/
    14111378                        cep->snd_up = cep->snd_una + cep->swbuf_count;
    14121379
    1413                         /* データを送信する。送信ウィンドバッファがフルのときは強制的に送信する。*/
     1380                        /* データを送信する。送信ウィンドバッファがフルのときは強制的に送信する。*/
    14141381                        if (TCP_IS_SWBUF_FULL(cep))
    14151382                                cep->flags |= TCP_CEP_FLG_FORCE | TCP_CEP_FLG_FORCE_CLEAR;
    14161383
    1417                         /* 出力をポストする。*/
     1384                        /* 出力をポストする。*/
    14181385                        cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    14191386                        sig_sem(SEM_TCP_POST_OUTPUT);
     
    14371404
    14381405/*
    1439  *  tcp_rcv_oob -- 緊急データの受信【拡張機能】
     1406 *  tcp_rcv_oob -- 緊急データの受信【拡張機能】
    14401407 *
    1441  *    注意: 送信側が複数オクテットのデータを送信しても、
    1442  *          緊急ポインタが指す 1 オクテットのデータのみ受信する。
     1408 *    注意: 送信側が複数オクテットのデータを送信しても、
     1409 *          緊急ポインタが指す 1 オクテットのデータのみ受信する。
    14431410 */
    14441411
     
    14491416        uint8_t         *urg;
    14501417
    1451         /* TCP 通信端点 ID をチェックする。*/
     1418        /* TCP 通信端点 ID をチェックする。*/
    14521419        if (!VALID_TCP_CEPID(cepid))
    14531420                return E_ID;
    14541421
    1455         /* data が NULL か、len < 0 ならエラー */
     1422        /* data が NULL か、len < 0 ならエラー */
    14561423        if (data == NULL || len < 0)
    14571424                return E_PAR;
    14581425
    1459         /* TCP 通信端点を得る。*/
     1426        /* TCP 通信端点を得る。*/
    14601427        cep = GET_TCP_CEP(cepid);
    14611428
    1462         /* 受信できるか、通信端点の状æ
    1463 ‹ã‚’見る。*/
    1464         /* 受信できるか、fsm_state を見る。*/
     1429        /* 受信できるか、通信端点の状態を見る。*/
     1430        /* 受信できるか、fsm_state を見る。*/
    14651431        if (!TCP_FSM_CAN_RECV_MORE(cep->fsm_state))
    14661432                return E_OBJ;
    14671433
    14681434        /*
    1469          *  緊急データå
    1470 ¥ã‚Šã®ã‚»ã‚°ãƒ¡ãƒ³ãƒˆã® TCP ヘッダが
    1471          *  設定されていなければ、緊急データを受信していない。
     1435         *  緊急データ入りのセグメントの TCP ヘッダが
     1436         *  設定されていなければ、緊急データを受信していない。
    14721437         */
    14731438        if (cep->urg_tcph == NULL)
    14741439                return E_OBJ;
    14751440
    1476         /* len == 0 ならバッファオーバーフロー */
     1441        /* len == 0 ならバッファオーバーフロー */
    14771442        if (len == 0)
    14781443                return E_BOVR;
    14791444
    1480         /* 緊急ポインタが指す 1 オクテットのデータを読み取る。*/
     1445        /* 緊急ポインタが指す 1 オクテットのデータを読み取る。*/
    14811446        urg = (uint8_t*)cep->urg_tcph + TCP_DATA_OFF(cep->urg_tcph->doff) + cep->urg_tcph->urp + TCP_CFG_URG_OFFSET;
    14821447        *(uint8_t*)data = *urg;
    14831448
    1484         /* 読み取ったデータから後ろの SDU を前に詰める。*/
     1449        /* 読み取ったデータから後ろの SDU を前に詰める。*/
    14851450        memcpy(urg, urg + 1, cep->urg_tcph->sum - (cep->urg_tcph->urp + TCP_CFG_URG_OFFSET) - 1);
    14861451
    1487         /* tcp_rcv_oob() が呼出されたこと知らせるために、NULL を設定する。*/
     1452        /* tcp_rcv_oob() が呼出されたこと知らせるために、NULL を設定する。*/
    14881453        cep->urg_tcph = NULL;
    14891454
     
    15001465
    15011466/*
    1502  *  tcp_del_rep -- TCP 受付口の削除【拡張機能】
     1467 *  tcp_del_rep -- TCP 受付口の削除【拡張機能】
    15031468 */
    15041469
     
    15121477
    15131478        /*
    1514          *  TCP 受付口 ID をチェックする。
    1515          *  IPv6 用 TCP 受付口であれば、
    1516          *  IPv6 用の「TCP 受付口の削除関数(本体)」を呼出す。
     1479         *  TCP 受付口 ID をチェックする。
     1480         *  IPv6 用 TCP 受付口であれば、
     1481         *  IPv6 用の「TCP 受付口の削除関数(本体)」を呼出す。
    15171482         */
    15181483        //NET_DEBUG_TCP3("tcp_del_rep1[r=%d,n=%d,x=%d]\n",
     
    15241489
    15251490        /*
    1526          *  TCP 受付口 ID をチェックする。
    1527          *  IPv4 用 TCP 受付口であれば、
    1528          *  IPv4 用の「TCP 受付口の削除関数(本体)」を呼出す。
     1491         *  TCP 受付口 ID をチェックする。
     1492         *  IPv4 用 TCP 受付口であれば、
     1493         *  IPv4 用の「TCP 受付口の削除関数(本体)」を呼出す。
    15291494         */
    15301495        else if (VALID_TCP4_REPID(repid))
     
    15411506{
    15421507
    1543         /* TCP 受付口 ID をチェックする。*/
     1508        /* TCP 受付口 ID をチェックする。*/
    15441509        if (VALID_TCP6_REPID(repid))
    15451510                return tcp6_del_rep_body(repid);
     
    15571522{
    15581523
    1559         /* TCP 受付口 ID をチェックする。*/
     1524        /* TCP 受付口 ID をチェックする。*/
    15601525        if (VALID_TCP4_REPID(repid))
    15611526                return tcp4_del_rep_body(repid);
     
    15701535
    15711536/*
    1572  *  tcp_set_opt -- TCP 通信端点オプションの設定【拡張機能】
     1537 *  tcp_set_opt -- TCP 通信端点オプションの設定【拡張機能】
    15731538 *
    1574  *  注意: 設定可能な TCP 通信端点オプションは無いため、E_PAR が返される。
     1539 *  注意: 設定可能な TCP 通信端点オプションは無いため、E_PAR が返される。
    15751540 */
    15761541
     
    15821547        T_TCP_CEP       *cep;
    15831548
    1584         /* TCP 通信端点 ID をチェックする。*/
     1549        /* TCP 通信端点 ID をチェックする。*/
    15851550        if (!VALID_TCP_CEPID(cepid))
    15861551                return E_ID;
    15871552
    1588         /* TCP 通信端点を得る。*/
     1553        /* TCP 通信端点を得る。*/
    15891554        cep = GET_TCP_CEP(cepid);
    15901555
    1591         /* TCP 通信端点をチェックする。*/
     1556        /* TCP 通信端点をチェックする。*/
    15921557        if (!VALID_TCP_CEP(cep))
    15931558                return E_NOEXS;
     
    15991564
    16001565/*
    1601  *  tcp_get_opt -- TCP 通信端点オプションの設定【拡張機能】
     1566 *  tcp_get_opt -- TCP 通信端点オプションの設定【拡張機能】
    16021567 *
    1603  *  注意: 設定可能な TCP 通信端点オプションは無いため、E_PAR が返される。
     1568 *  注意: 設定可能な TCP 通信端点オプションは無いため、E_PAR が返される。
    16041569 */
    16051570
     
    16111576        T_TCP_CEP       *cep;
    16121577
    1613         /* TCP 通信端点 ID をチェックする。*/
     1578        /* TCP 通信端点 ID をチェックする。*/
    16141579        if (!VALID_TCP_CEPID(cepid))
    16151580                return E_ID;
    16161581
    1617         /* TCP 通信端点を得る。*/
     1582        /* TCP 通信端点を得る。*/
    16181583        cep = GET_TCP_CEP(cepid);
    16191584
    1620         /* TCP 通信端点をチェックする。*/
     1585        /* TCP 通信端点をチェックする。*/
    16211586        if (!VALID_TCP_CEP(cep))
    16221587                return E_NOEXS;
  • asp3_gr_sakura/trunk/tinet/netinet/tcp_var.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8472
    8573/*
    86  *  TCP ヘッダ・ペイロードアクセスマクロ
     74 *  TCP ヘッダ・ペイロードアクセスマクロ
    8775 */
    8876
     
    10492
    10593/*
    106  *  TINET 1.1 との互換性のための定義
     94 *  TINET 1.1 との互換性のための定義
    10795 */
    10896
     
    117105
    118106/*
    119  *  TINET 1.3 との互換性のための定義
     107 *  TINET 1.3 との互換性のための定義
    120108 */
    121109
     
    127115
    128116/*
    129  *  コールバック関数の定義
     117 *  コールバック関数の定義
    130118 */
    131119
     
    133121
    134122/*
    135  * TCP で使用する変数の型の定義
     123 * TCP で使用する変数の型の定義
    136124 */
    137125
     
    142130
    143131/*
    144  *  TCP タイマ変数
    145  */
    146 
    147 #define NUM_TCP_TIMERS          4       /* TCP のタイマ数  */
    148 
    149 /*
    150  *  TCP 受付口
    151  */
    152 
    153 /* IPv6 用 TCP 受付口 */
     132 *  TCP タイマ変数
     133 */
     134
     135#define NUM_TCP_TIMERS          4       /* TCP のタイマ数    */
     136
     137/*
     138 *  TCP 受付口
     139 */
     140
     141/* IPv6 用 TCP 受付口 */
    154142
    155143typedef struct t_tcp6_rep {
    156144
    157145        /*
    158          * ITRON TCP/IP API、TCP 受付口と同じメンバ
     146         * ITRON TCP/IP API、TCP 受付口と同じメンバ
    159147         */
    160         ATR             repatr;         /* 受付口属性              */
    161         T_IPV6EP        myaddr;         /* 自分のアドレス        */
     148        ATR             repatr;         /* 受付口属性                */
     149        T_IPV6EP        myaddr;         /* 自分のアドレス      */
    162150
    163151#ifdef TCP_CFG_EXTENTIONS
    164         uint16_t        flags;          /* 受付口フラグ           */
    165         ID              semid_lock;     /* 受付口ロック           */
     152        uint16_t        flags;          /* 受付口フラグ               */
     153        ID              semid_lock;     /* 受付口ロック               */
    166154#endif  /* of #ifdef TCP_CFG_EXTENTIONS */
    167155
    168156        } T_TCP6_REP;
    169157
    170 /* IPv4 用 TCP 受付口 */
     158/* IPv4 用 TCP 受付口 */
    171159
    172160typedef struct t_tcp4_rep {
    173161
    174162        /*
    175          * ITRON TCP/IP API、TCP 受付口と同じメンバ
     163         * ITRON TCP/IP API、TCP 受付口と同じメンバ
    176164         */
    177         ATR             repatr;         /* 受付口属性              */
    178         T_IPV4EP        myaddr;         /* 自分のアドレス        */
     165        ATR             repatr;         /* 受付口属性                */
     166        T_IPV4EP        myaddr;         /* 自分のアドレス      */
    179167
    180168#ifdef TCP_CFG_EXTENTIONS
    181         uint16_t        flags;          /* 受付口フラグ           */
    182         ID              semid_lock;     /* 受付口ロック           */
     169        uint16_t        flags;          /* 受付口フラグ               */
     170        ID              semid_lock;     /* 受付口ロック               */
    183171#endif  /* of #ifdef TCP_CFG_EXTENTIONS */
    184172
     
    202190
    203191/*
    204  *  受付口フラグ
    205  */
    206 
    207 #define TCP_REP_FLG_DYNAMIC     UINT_C(0x0400)  /* 動的生成・削除可能受付口。      */
    208 #define TCP_REP_FLG_VALID       UINT_C(0x0800)  /* 生成済みで有効な受付口。 */
    209 
    210 /*
    211  *  TCP 通信端点
     192 *  受付口フラグ
     193 */
     194
     195#define TCP_REP_FLG_DYNAMIC     UINT_C(0x0400)  /* 動的生成・削除可能受付口。        */
     196#define TCP_REP_FLG_VALID       UINT_C(0x0800)  /* 生成済みで有効な受付口。 */
     197
     198/*
     199 *  TCP 通信端点
    212200 */
    213201
     
    223211
    224212        /*
    225          * ITRON TCP/IP API、TCP 通信端点と同じメンバ
     213         * ITRON TCP/IP API、TCP 通信端点と同じメンバ
    226214         */
    227         ATR             cepatr;         /* 通信端点属性                   */
    228         void            *sbuf;          /* 送信用ウィンドバッファ    */
    229         int_t           sbufsz;         /* 送信用ウィンドバッファサイズ   */
    230         void            *rbuf;          /* 受信用ウィンドバッファ    */
    231         int_t           rbufsz;         /* 受信用ウィンドバッファサイズ   */
    232         t_tcp_callback  callback;       /* コールバック関数             */
     215        ATR             cepatr;         /* 通信端点属性                       */
     216        void            *sbuf;          /* 送信用ウィンドバッファ  */
     217        int_t           sbufsz;         /* 送信用ウィンドバッファサイズ       */
     218        void            *rbuf;          /* 受信用ウィンドバッファ  */
     219        int_t           rbufsz;         /* 受信用ウィンドバッファサイズ       */
     220        t_tcp_callback  callback;       /* コールバック関数             */
    233221
    234222        /*
    235          * TINET 独自のメンバ
     223         * TINET 独自のメンバ
    236224         */
    237         uint32_t        flags;          /* 通信端点フラグ                */
    238         ID              semid_lock;     /* 通信端点ロック                */
    239         ID              est_flgid;      /* コネクション状æ
    240 ‹ã‚¤ãƒ™ãƒ³ãƒˆãƒ•ãƒ©ã‚°  */
    241         ID              snd_flgid;      /* 送信イベントフラグ          */
    242         ID              rcv_flgid;      /* 受信イベントフラグ          */
    243         ID              snd_tskid;      /* 送信タスク識別子             */
    244         ID              rcv_tskid;      /* 受信タスク識別子             */
    245         uint8_t         *sbuf_rptr;     /* 送信用読み出しポインタ    */
    246         uint8_t         *sbuf_wptr;     /* 送信用書き込みポインタ    */
    247         uint8_t         *rbuf_rptr;     /* 受信用読み出しポインタ    */
    248         uint8_t         *rbuf_wptr;     /* 受信用書き込みポインタ    */
    249         T_TCP_SEQ       snd_ssthresh;   /* 輻輳ウィンドサイズ(snd_cwnd)        */
    250                                         /* のしきい値                      */
    251         T_TCP_TIME      rxtcur;         /* 現在の再送タイムアウト    */
    252         T_TCP_TIME      srtt;           /* 平滑化された RTT               */
    253         T_TCP_TIME      rttvar;         /* 平滑化された分散             */
    254         T_TCP_WND       snd_cwnd;       /* 輻輳ウィンドサイズ          */
     225        uint32_t        flags;          /* 通信端点フラグ              */
     226        ID              semid_lock;     /* 通信端点ロック              */
     227        ID              est_flgid;      /* コネクション状態イベントフラグ      */
     228        ID              snd_flgid;      /* 送信イベントフラグ            */
     229        ID              rcv_flgid;      /* 受信イベントフラグ            */
     230        ID              snd_tskid;      /* 送信タスク識別子             */
     231        ID              rcv_tskid;      /* 受信タスク識別子             */
     232        uint8_t         *sbuf_rptr;     /* 送信用読み出しポインタ  */
     233        uint8_t         *sbuf_wptr;     /* 送信用書き込みポインタ  */
     234        uint8_t         *rbuf_rptr;     /* 受信用読み出しポインタ  */
     235        uint8_t         *rbuf_wptr;     /* 受信用書き込みポインタ  */
     236        T_TCP_SEQ       snd_ssthresh;   /* 輻輳ウィンドサイズ(snd_cwnd)  */
     237                                        /* のしきい値                        */
     238        T_TCP_TIME      rxtcur;         /* 現在の再送タイムアウト  */
     239        T_TCP_TIME      srtt;           /* 平滑化された RTT           */
     240        T_TCP_TIME      rttvar;         /* 平滑化された分散             */
     241        T_TCP_WND       snd_cwnd;       /* 輻輳ウィンドサイズ            */
    255242
    256243        /*
    257          *  相手の最大受信セグメントサイズ       
     244         *  相手の最大受信セグメントサイズ     
    258245         *
    259          *    オリジナルでは、一般のセグメントの最大サイズ (t_maxseg) と、
    260          *    オプション付きのセグメントの最大サイズ (t_maxopd) が別に
    261          *    なっている。これは、現在のインターネットでは、オプション付きの
    262          *    セグメントのほうが多いからと説明されているためである。
    263          *    本実è£
    264 ã§ã¯ã€æœ€å¤§ã‚»ã‚°ãƒ¡ãƒ³ãƒˆã‚µã‚¤ã‚ºã‚ªãƒ—ション以外のオプションは
    265          *    実è£
    266 ã—ないので、t_maxseg の使用する。
     246         *    オリジナルでは、一般のセグメントの最大サイズ (t_maxseg) と、
     247         *    オプション付きのセグメントの最大サイズ (t_maxopd) が別に
     248         *    なっている。これは、現在のインターネットでは、オプション付きの
     249         *    セグメントのほうが多いからと説明されているためである。
     250         *    本実装では、最大セグメントサイズオプション以外のオプションは
     251         *    実装しないので、t_maxseg の使用する。
    267252         */
    268253        T_TCP_SEG       maxseg;
    269254
    270         int16_t         snd_tfn;        /* 送信動作中の API 機能コード       */
    271         int16_t         rcv_tfn;        /* 受信動作中の API 機能コード       */
     255        int16_t         snd_tfn;        /* 送信動作中の API 機能コード     */
     256        int16_t         rcv_tfn;        /* 受信動作中の API 機能コード     */
    272257
    273258#ifdef TCP_CFG_NON_BLOCKING
    274259
    275         T_IPEP          *p_dstaddr;     /* 相手のアドレスへのポインタ      */
    276         T_IPEP          *p_myaddr;      /* 自分のアドレスへのポインタ      */
     260        T_IPEP          *p_dstaddr;     /* 相手のアドレスへのポインタ        */
     261        T_IPEP          *p_myaddr;      /* 自分のアドレスへのポインタ        */
    277262
    278263#if defined(_IP6_CFG) && defined(_IP4_CFG)
    279         T_IPV4EP        *p_dstaddr4;    /* 相手のアドレスへのポインタ      */
    280         T_IPV4EP        *p_myaddr4;     /* 自分のアドレスへのポインタ      */
     264        T_IPV4EP        *p_dstaddr4;    /* 相手のアドレスへのポインタ        */
     265        T_IPV4EP        *p_myaddr4;     /* 自分のアドレスへのポインタ        */
    281266#endif
    282267       
    283         int16_t         snd_nblk_tfn;   /* 送信動作中の API 機能コード       */
    284         int16_t         rcv_nblk_tfn;   /* 受信動作中の API 機能コード       */
    285         void            *snd_data;      /* 送信データ領域のå
    286 ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹        */
    287         int_t           snd_len;        /* 送信データ領域の長さ               */
    288         void            *rcv_data;      /* 受信データ領域のå
    289 ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹        */
    290         int_t           rcv_len;        /* 受信データ領域の長さ               */
    291         void            **snd_p_buf;    /* 送信バッファへのポインタ */
    292         void            **rcv_p_buf;    /* 受信バッファへのポインタ */
     268        int16_t         snd_nblk_tfn;   /* 送信動作中の API 機能コード     */
     269        int16_t         rcv_nblk_tfn;   /* 受信動作中の API 機能コード     */
     270        void            *snd_data;      /* 送信データ領域の先頭アドレス       */
     271        int_t           snd_len;        /* 送信データ領域の長さ           */
     272        void            *rcv_data;      /* 受信データ領域の先頭アドレス       */
     273        int_t           rcv_len;        /* 受信データ領域の長さ           */
     274        void            **snd_p_buf;    /* 送信バッファへのポインタ */
     275        void            **rcv_p_buf;    /* 受信バッファへのポインタ */
    293276
    294277#endif  /* of #ifdef TCP_CFG_NON_BLOCKING */
    295278
    296279#ifdef TCP_CFG_SWBUF_CSAVE
    297         T_NET_BUF       *swbufq;        /* 送信ウィンドバッファキュー      */
     280        T_NET_BUF       *swbufq;        /* 送信ウィンドバッファキュー        */
    298281#endif
    299282
    300283        /*
    301          *  これ以降のメンバーは tcp_init_cep() 関数でゼロクリアーされる。
     284         *  これ以降のメンバーは tcp_init_cep() 関数でゼロクリアーされる。
    302285         */
    303286
    304         T_TCP_TIME      timer[NUM_TCP_TIMERS];  /* TCP のタイマ             */
    305         T_IPEP          dstaddr;        /* 相手のアドレス                */
    306         T_IPEP          myaddr;         /* 自分のアドレス                */
    307         T_NET_BUF       *reassq;        /* 受信再構成キュー             */
     287        T_TCP_TIME      timer[NUM_TCP_TIMERS];  /* TCP のタイマ             */
     288        T_IPEP          dstaddr;        /* 相手のアドレス              */
     289        T_IPEP          myaddr;         /* 自分のアドレス              */
     290        T_NET_BUF       *reassq;        /* 受信再構成キュー             */
    308291
    309292#if defined(_IP6_CFG)
     
    311294#if defined(_IP4_CFG)
    312295
    313         T_TCP4_REP      *rep4;          /* IPv4 用受付口            */
     296        T_TCP4_REP      *rep4;          /* IPv4 用受付口            */
    314297
    315298#endif  /* of #if defined(_IP4_CFG) */
    316299
    317         T_TCP6_REP      *rep;           /* IPv6 用受付口            */
     300        T_TCP6_REP      *rep;           /* IPv6 用受付口            */
    318301
    319302#else   /* of #if defined(_IP6_CFG) */
     
    321304#if defined(_IP4_CFG)
    322305
    323         T_TCP4_REP      *rep;           /* IPv4 用受付口            */
     306        T_TCP4_REP      *rep;           /* IPv4 用受付口            */
    324307
    325308#endif  /* of #if defined(_IP4_CFG) */
     
    329312
    330313#ifdef TCP_CFG_RWBUF_CSAVE
    331         T_NET_BUF       *rwbufq;        /* 受信ウィンドバッファキュー      */
     314        T_NET_BUF       *rwbufq;        /* 受信ウィンドバッファキュー        */
    332315#endif
    333316
    334317#ifdef TCP_CFG_EXTENTIONS
    335         T_TCP_HDR       *urg_tcph;      /* 緊急データå
    336 ¥ã‚Šã®ã‚»ã‚°ãƒ¡ãƒ³ãƒˆã® TCP ヘッダ */
    337         T_TCP_SEQ       snd_up;         /* 送信した緊急ポインタ               */
    338         T_TCP_SEQ       rcv_up;         /* 受信した緊急ポインタ               */
     318        T_TCP_HDR       *urg_tcph;      /* 緊急データ入りのセグメントの TCP ヘッダ       */
     319        T_TCP_SEQ       snd_up;         /* 送信した緊急ポインタ           */
     320        T_TCP_SEQ       rcv_up;         /* 受信した緊急ポインタ           */
    339321#endif  /* of #ifdef TCP_CFG_EXTENTIONS */
    340322
    341         T_TCP_SEQ       snd_una;        /* 未確認の最小送信 SEQ つまり       */
    342                                         /* 確認された最大送信 SEQ      */
    343         T_TCP_SEQ       snd_max;        /* 送信した最大 SEQ               */
    344         T_TCP_SEQ       snd_nxt;        /* 次に送信する SEQ               */
    345         T_TCP_SEQ       snd_old_nxt;    /* å
    346 ƒã® snd_nxt                    */
    347         T_TCP_SEQ       snd_wl1;        /* 前回ウィンドを更新した SEQ        */
    348         T_TCP_SEQ       snd_wl2;        /* 前回ウィンドを更新した ACK        */
    349         T_TCP_SEQ       iss;            /* 自分の SEQ の初期値           */
    350         T_TCP_SEQ       irs;            /* 相手の SEQ の初期値           */
    351         T_TCP_SEQ       rcv_nxt;        /* 受信を期å¾
    352 ã—ている最小の SEQ       */
    353         T_TCP_SEQ       rcv_adv;        /* 受信を期å¾
    354 ã—ている最大の SEQ       */
    355         T_TCP_SEQ       rcv_wnd;        /* 受信可能なウィンドサイズ */
    356         T_TCP_SEQ       rtseq;          /* 時間計測を始めた SEQ         */
    357         T_TCP_SEQ       last_ack_sent;  /* 最後に送信した ACK            */
    358         T_TCP_TIME      idle;           /* アイドル時間                   */
    359         ER              error;          /* 非同期に発生したエラー    */
    360         ER              net_error;      /* ネットワークのエラー状æ
    361 ‹       */
    362         T_TCP_WND       snd_wnd;        /* 相手の受信可能ウィンドサイズ   */
    363         T_TCP_WND       max_sndwnd;     /* 今までの最大送信ウィンドサイズ        */
    364         T_TCP_TIME      rtt;            /* 往復時間                         */
    365         uint16_t        swbuf_count;    /* 送信ウィンドバッファの使用中サイズ  */
    366         uint16_t        rwbuf_count;    /* 受信ウィンドバッファの使用中サイズ  */
    367         uint16_t        rcv_buf_len;    /* tcp_rcv_buf の割当て長  */
    368         uint16_t        get_buf_len;    /* tcp_rcv_buf の割当て長  */
    369         uint8_t         rxtshift;       /* 再送信回数の log(2)            */
    370         uint8_t         fsm_state;      /* FSM 状æ
    371 ‹                       */
    372         uint8_t         dupacks;        /* 再送 ACK 数                       */
     323        T_TCP_SEQ       snd_una;        /* 未確認の最小送信 SEQ つまり     */
     324                                        /* 確認された最大送信 SEQ        */
     325        T_TCP_SEQ       snd_max;        /* 送信した最大 SEQ           */
     326        T_TCP_SEQ       snd_nxt;        /* 次に送信する SEQ           */
     327        T_TCP_SEQ       snd_old_nxt;    /* 元の snd_nxt                   */
     328        T_TCP_SEQ       snd_wl1;        /* 前回ウィンドを更新した SEQ      */
     329        T_TCP_SEQ       snd_wl2;        /* 前回ウィンドを更新した ACK      */
     330        T_TCP_SEQ       iss;            /* 自分の SEQ の初期値         */
     331        T_TCP_SEQ       irs;            /* 相手の SEQ の初期値         */
     332        T_TCP_SEQ       rcv_nxt;        /* 受信を期待している最小の SEQ     */
     333        T_TCP_SEQ       rcv_adv;        /* 受信を期待している最大の SEQ     */
     334        T_TCP_SEQ       rcv_wnd;        /* 受信可能なウィンドサイズ */
     335        T_TCP_SEQ       rtseq;          /* 時間計測を始めた SEQ         */
     336        T_TCP_SEQ       last_ack_sent;  /* 最後に送信した ACK          */
     337        T_TCP_TIME      idle;           /* アイドル時間                       */
     338        ER              error;          /* 非同期に発生したエラー  */
     339        ER              net_error;      /* ネットワークのエラー状態 */
     340        T_TCP_WND       snd_wnd;        /* 相手の受信可能ウィンドサイズ       */
     341        T_TCP_WND       max_sndwnd;     /* 今までの最大送信ウィンドサイズ      */
     342        T_TCP_TIME      rtt;            /* 往復時間                         */
     343        uint16_t        swbuf_count;    /* 送信ウィンドバッファの使用中サイズ    */
     344        uint16_t        rwbuf_count;    /* 受信ウィンドバッファの使用中サイズ    */
     345        uint16_t        rcv_buf_len;    /* tcp_rcv_buf の割当て長    */
     346        uint16_t        get_buf_len;    /* tcp_rcv_buf の割当て長    */
     347        uint8_t         rxtshift;       /* 再送信回数の log(2)                */
     348        uint8_t         fsm_state;      /* FSM 状態                       */
     349        uint8_t         dupacks;        /* 再送 ACK 数                     */
    373350
    374351#if defined(TCP_CFG_RWBUF_CSAVE) && defined(TCP_CFG_RWBUF_CSAVE_MAX_QUEUES)
    375         uint16_t        rwbufq_entries; /* 受信ウィンドバッファキューのエントリ数    */
     352        uint16_t        rwbufq_entries; /* 受信ウィンドバッファキューのエントリ数  */
    376353#endif
    377354
     
    382359
    383360/*
    384  * Time Wait 用 TCP 通信端点
     361 * Time Wait 用 TCP 通信端点
    385362 */
    386363
    387364typedef struct t_tcp_twcep {
    388         int_t           rbufsz;         /* 受信用ウィンドバッファサイズ   */
    389         T_TCP_TIME      timer_2msl;     /* 2MSL タイマ                       */
    390         T_IPEP          dstaddr;        /* 相手のアドレス                */
    391         T_IPEP          myaddr;         /* 自分のアドレス                */
    392         T_TCP_SEQ       snd_una;        /* 未確認の最小送信 SEQ つまり       */
    393                                         /* 確認された最大送信 SEQ      */
    394         T_TCP_SEQ       rcv_nxt;        /* 受信を期å¾
    395 ã—ている最小の SEQ       */
    396         uint16_t        rwbuf_count;    /* 受信ウィンドバッファの使用中サイズ  */
    397         uint8_t         fsm_state;      /* FSM 状æ
    398 ‹                       */
    399         uint8_t flags;                  /* 通信端点フラグ                */
     365        int_t           rbufsz;         /* 受信用ウィンドバッファサイズ       */
     366        T_TCP_TIME      timer_2msl;     /* 2MSL タイマ                     */
     367        T_IPEP          dstaddr;        /* 相手のアドレス              */
     368        T_IPEP          myaddr;         /* 自分のアドレス              */
     369        T_TCP_SEQ       snd_una;        /* 未確認の最小送信 SEQ つまり     */
     370                                        /* 確認された最大送信 SEQ        */
     371        T_TCP_SEQ       rcv_nxt;        /* 受信を期待している最小の SEQ     */
     372        uint16_t        rwbuf_count;    /* 受信ウィンドバッファの使用中サイズ    */
     373        uint8_t         fsm_state;      /* FSM 状態                       */
     374        uint8_t flags;                  /* 通信端点フラグ              */
    400375
    401376        } T_TCP_TWCEP;
     
    404379
    405380/*
    406  *  TCP 通信端点の状æ
    407 ‹ãƒ•ãƒ©ã‚°
    408  */
    409 
    410 #define TCP_CEP_FLG_IPV4                ULONG_C(0x00000001)     /* IPv4 用。                  */
    411 #define TCP_CEP_FLG_ACK_NOW             ULONG_C(0x00000100)     /* 直ちに相手に ACK を送る。  */
    412 #define TCP_CEP_FLG_DEL_ACK             ULONG_C(0x00000200)     /* ACK をé
    413 å»¶ã™ã‚‹ã€‚            */
    414 #define TCP_CEP_FLG_SENT_FIN            ULONG_C(0x00000400)     /* FIN を送ってある。            */
    415 #define TCP_CEP_FLG_NEED_SYN            ULONG_C(0x00000800)     /* SYN を送信する。               */
    416 #define TCP_CEP_FLG_NEED_FIN            ULONG_C(0x00001000)     /* FIN を送信する。               */
    417 #define TCP_CEP_FLG_FORCE               ULONG_C(0x00002000)     /* 強制送信。                      */
    418 #define TCP_CEP_FLG_NO_PUSH             ULONG_C(0x00004000)     /* push しない。            */
    419 #define TCP_CEP_FLG_NO_DELAY            ULONG_C(0x00008000)     /* é
    420 å»¶ã—ない。                 */
    421 #define TCP_CEP_FLG_FORCE_CLEAR         ULONG_C(0x00010000)     /* 強制送信した後フラグをクリアーする。*/
    422 #define TCP_CEP_FLG_POST_OUTPUT         ULONG_C(0x00020000)     /* 送信を開始する。             */
    423 #define TCP_CEP_FLG_RESERVE_OUTPUT      ULONG_C(0x00040000)     /* 送信を予約する。             */
    424 #define TCP_CEP_FLG_DYNAMIC             ULONG_C(0x00100000)     /* 動的生成・削除可能通信端点。   */
    425 #define TCP_CEP_FLG_VALID               ULONG_C(0x00200000)     /* 生成済みで有効な通信端点。      */
    426 #define TCP_CEP_FLG_CLOSE_AFTER_OUTPUT  ULONG_C(0x00400000)     /* 送信した後コネクションを閉じる。*/
    427 #define TCP_CEP_FLG_RESTORE_NEXT_OUTPUT ULONG_C(0x00800000)     /* 送信した後、snd_nxt をå
    428 ƒã«æˆ»ã™ã€‚*/
    429 
    430 /* 送受信ウィンドバッファの省コピー機能 */
    431 #define TCP_CEP_FLG_WBCS_NBUF_REQ       ULONG_C(0x80000000)     /* ネットワークバッファ割当て要求*/
    432 #define TCP_CEP_FLG_WBCS_MASK           ULONG_C(0x70000000)     /* マスク                    */
    433 #define TCP_CEP_FLG_WBCS_FREE           ULONG_C(0x00000000)     /* 送信ウィンドバッファ未使用      */
    434 #define TCP_CEP_FLG_WBCS_WOPEN_PEND     ULONG_C(0x10000000)     /* 相手の受信ウィンドの開きå¾
    435 ã¡     */
    436 #define TCP_CEP_FLG_WBCS_NBUF_PEND      ULONG_C(0x20000000)     /* ネットワークバッファ予約å¾
    437 ã¡     */
    438 #define TCP_CEP_FLG_WBCS_NBUF_RSVD      ULONG_C(0x30000000)     /* ネットワークバッファ予約済み   */
    439 #define TCP_CEP_FLG_WBCS_NBUF_READY     ULONG_C(0x40000000)     /* ネットワークバッファ割当て済み*/
    440 #define TCP_CEP_FLG_WBCS_SEND_READY     ULONG_C(0x50000000)     /* 送信可能                 */
    441 #define TCP_CEP_FLG_WBCS_SENT           ULONG_C(0x60000000)     /* 送信済みで、ACKå¾
    442 ã¡             */
    443 #define TCP_CEP_FLG_WBCS_ACKED          ULONG_C(0x70000000)     /* 送信済みで、ACK完了          */
    444 
    445 /* 初期化から除外するフラグの定義 */
     381 *  TCP 通信端点の状態フラグ
     382 */
     383
     384#define TCP_CEP_FLG_IPV4                ULONG_C(0x00000001)     /* IPv4 用。                      */
     385#define TCP_CEP_FLG_ACK_NOW             ULONG_C(0x00000100)     /* 直ちに相手に ACK を送る。      */
     386#define TCP_CEP_FLG_DEL_ACK             ULONG_C(0x00000200)     /* ACK を遅延する。           */
     387#define TCP_CEP_FLG_SENT_FIN            ULONG_C(0x00000400)     /* FIN を送ってある。          */
     388#define TCP_CEP_FLG_NEED_SYN            ULONG_C(0x00000800)     /* SYN を送信する。           */
     389#define TCP_CEP_FLG_NEED_FIN            ULONG_C(0x00001000)     /* FIN を送信する。           */
     390#define TCP_CEP_FLG_FORCE               ULONG_C(0x00002000)     /* 強制送信。                        */
     391#define TCP_CEP_FLG_NO_PUSH             ULONG_C(0x00004000)     /* push しない。            */
     392#define TCP_CEP_FLG_NO_DELAY            ULONG_C(0x00008000)     /* 遅延しない。                       */
     393#define TCP_CEP_FLG_FORCE_CLEAR         ULONG_C(0x00010000)     /* 強制送信した後フラグをクリアーする。*/
     394#define TCP_CEP_FLG_POST_OUTPUT         ULONG_C(0x00020000)     /* 送信を開始する。             */
     395#define TCP_CEP_FLG_RESERVE_OUTPUT      ULONG_C(0x00040000)     /* 送信を予約する。             */
     396#define TCP_CEP_FLG_DYNAMIC             ULONG_C(0x00100000)     /* 動的生成・削除可能通信端点。       */
     397#define TCP_CEP_FLG_VALID               ULONG_C(0x00200000)     /* 生成済みで有効な通信端点。        */
     398#define TCP_CEP_FLG_CLOSE_AFTER_OUTPUT  ULONG_C(0x00400000)     /* 送信した後コネクションを閉じる。*/
     399#define TCP_CEP_FLG_RESTORE_NEXT_OUTPUT ULONG_C(0x00800000)     /* 送信した後、snd_nxt を元に戻す。*/
     400
     401/* 送受信ウィンドバッファの省コピー機能 */
     402#define TCP_CEP_FLG_WBCS_NBUF_REQ       ULONG_C(0x80000000)     /* ネットワークバッファ割当て要求*/
     403#define TCP_CEP_FLG_WBCS_MASK           ULONG_C(0x70000000)     /* マスク                  */
     404#define TCP_CEP_FLG_WBCS_FREE           ULONG_C(0x00000000)     /* 送信ウィンドバッファ未使用        */
     405#define TCP_CEP_FLG_WBCS_WOPEN_PEND     ULONG_C(0x10000000)     /* 相手の受信ウィンドの開き待ち       */
     406#define TCP_CEP_FLG_WBCS_NBUF_PEND      ULONG_C(0x20000000)     /* ネットワークバッファ予約待ち       */
     407#define TCP_CEP_FLG_WBCS_NBUF_RSVD      ULONG_C(0x30000000)     /* ネットワークバッファ予約済み       */
     408#define TCP_CEP_FLG_WBCS_NBUF_READY     ULONG_C(0x40000000)     /* ネットワークバッファ割当て済み*/
     409#define TCP_CEP_FLG_WBCS_SEND_READY     ULONG_C(0x50000000)     /* 送信可能                 */
     410#define TCP_CEP_FLG_WBCS_SENT           ULONG_C(0x60000000)     /* 送信済みで、ACK待ち          */
     411#define TCP_CEP_FLG_WBCS_ACKED          ULONG_C(0x70000000)     /* 送信済みで、ACK完了          */
     412
     413/* 初期化から除外するフラグの定義 */
    446414#define TCP_CEP_FLG_NOT_CLEAR           (TCP_CEP_FLG_WBCS_NBUF_REQ|TCP_CEP_FLG_WBCS_MASK|\
    447415                                         TCP_CEP_FLG_DYNAMIC|TCP_CEP_FLG_VALID|TCP_CEP_FLG_IPV4)
    448416
    449417/*
    450  *  通信端点イベントフラグ
    451  */
    452 
    453 #define TCP_CEP_EVT_ESTABLISHED         ULONG_C(0x00000001)     /* コネクション確立             */
    454 #define TCP_CEP_EVT_CLOSED              ULONG_C(0x00000002)     /* 未使用状æ
    455 ‹                       */
    456 #define TCP_CEP_EVT_SWBUF_READY         ULONG_C(0x00000004)     /* 送信ウィンドバッファ空き */
    457 #define TCP_CEP_EVT_RWBUF_READY         ULONG_C(0x00000008)     /* 送信ウィンドバッファデータあり*/
    458 #define TCP_CEP_EVT_ALL                 ULONG_C(0xffffffff)     /* å
    459 ¨ã‚¤ãƒ™ãƒ³ãƒˆ                   */
    460 
    461 /*
    462  *  追加 API 機能・事象コード
    463  */
    464 
    465 /* TCP 関係 */
     418 *  通信端点イベントフラグ
     419 */
     420
     421#define TCP_CEP_EVT_ESTABLISHED         ULONG_C(0x00000001)     /* コネクション確立             */
     422#define TCP_CEP_EVT_CLOSED              ULONG_C(0x00000002)     /* 未使用状態                        */
     423#define TCP_CEP_EVT_SWBUF_READY         ULONG_C(0x00000004)     /* 送信ウィンドバッファ空き */
     424#define TCP_CEP_EVT_RWBUF_READY         ULONG_C(0x00000008)     /* 送信ウィンドバッファデータあり*/
     425#define TCP_CEP_EVT_ALL                 ULONG_C(0xffffffff)     /* 全イベント                        */
     426
     427/*
     428 *  追加 API 機能・事象コード
     429 */
     430
     431/* TCP 関係 */
    466432
    467433#define TFN_TCP_UNDEF           (0)
    468434
    469435/*
    470  *  srtt:   å¹³æ»‘化された RTT
    471  *  rttvar: 平滑化された分散
    472  *  rtt:    測定された往復時間
     436 *  srtt:   平滑化された RTT
     437 *  rttvar: 平滑化された分散
     438 *  rtt:    測定された往復時間
    473439 *
    474  *  平滑化された RTT (srtt) と平滑化された分散 (rttvar) を
    475  *  整数型で計算するために、左シフトしてスケールする。
    476  *  srtt は 2 進小数点以下 3 ビット、
    477  *  rttvar は 2 進小数点以下 2 ビットを保持する。
     440 *  平滑化された RTT (srtt) と平滑化された分散 (rttvar) を
     441 *  整数型で計算するために、左シフトしてスケールする。
     442 *  srtt は 2 進小数点以下 3 ビット、
     443 *  rttvar は 2 進小数点以下 2 ビットを保持する。
    478444 */
    479445
    480446#define TCP_DELTA_SHIFT         2
    481                         /* 差分 = rtt/8 + srtt*7/8 の計算のためのシフト値  */
     447                        /* 差分 = rtt/8 + srtt*7/8 の計算のためのシフト値    */
    482448#define TCP_SRTT_SHIFT          (TCP_DELTA_SHIFT + 3)
    483                                         /* srtt のシフト値、3(+2)ビット        */
     449                                        /* srtt のシフト値、3(+2)ビット  */
    484450#define TCP_RTTVAR_SHIFT        (TCP_DELTA_SHIFT + 2)
    485                                         /* rttvar のシフト値、2(+2)ビット      */
     451                                        /* rttvar のシフト値、2(+2)ビット        */
    486452#define TCP_SRTT_SCALE          (1<<TCP_SRTT_SHIFT)
    487453#define TCP_RTTVAR_SCALE        (1<<TCP_RTTVAR_SHIFT)
    488454
    489455/*
    490  *  高速再転送を開始する再送 ACK 数のしきい値
     456 *  高速再転送を開始する再送 ACK 数のしきい値
    491457 */
    492458
     
    494460
    495461/*
    496  *  受信再構成キューでの TCP ヘッダ
     462 *  受信再構成キューでの TCP ヘッダ
    497463 */
    498464
    499465typedef struct t_tcp_q_hdr {
    500         uint16_t        sport;          /* 送信å
    501 ƒãƒãƒ¼ãƒˆç•ªå·                        */
    502         uint16_t        dport;          /* 宛å
    503 ˆãƒãƒ¼ãƒˆç•ªå·                        */
    504 
    505         uint32_t        seq;            /* SEQ 番号                           */
    506 
    507         T_NET_BUF       *next;          /* 次のセグメント、å
    508 ƒã¯ ACK 番号(ack)    */
    509 
    510         uint8_t         doff;           /* データオフセット(上位4ビット)   */
    511         uint8_t         flags;          /* フラグ(下位6ビット)                  */
    512         uint16_t        soff;           /* SDU オフセット、å
    513 ƒã¯ã‚¦ã‚£ãƒ³ãƒ‰ã‚µã‚¤ã‚º(win)  */
    514 
    515         uint16_t        slen;           /* SDU 長、å
    516 ƒã¯ãƒã‚§ãƒƒã‚¯ã‚µãƒ (sum)     */
    517         uint16_t        urp;            /* 緊急ポインタ(SDU 長補正)                */
     466        uint16_t        sport;          /* 送信元ポート番号                     */
     467        uint16_t        dport;          /* 宛先ポート番号                      */
     468
     469        uint32_t        seq;            /* SEQ 番号                               */
     470
     471        T_NET_BUF       *next;          /* 次のセグメント、元は ACK 番号(ack)       */
     472
     473        uint8_t         doff;           /* データオフセット(上位4ビット)     */
     474        uint8_t         flags;          /* フラグ(下位6ビット)                  */
     475        uint16_t        soff;           /* SDU オフセット、元はウィンドサイズ(win)     */
     476
     477        uint16_t        slen;           /* SDU 長、元はチェックサム(sum)  */
     478        uint16_t        urp;            /* 緊急ポインタ(SDU 長補正)              */
    518479        } T_TCP_Q_HDR;
    519480
     
    521482
    522483/*
    523  *  オブジェクト ID の最小値の定義
    524  */
    525 
    526 #define TMIN_TCP_REPID          1                       /* TCP      受付口 ID の最小値                   */
    527 #define TMIN_TCP6_REPID         1                       /* TCP/IPv6 受付口 ID の最小値                   */
    528 #define TMIN_TCP4_REPID         (TNUM_TCP6_REPID+1)     /* TCP/IPv4 受付口 ID の最小値                   */
    529 
    530 #define TMIN_TCP_CEPID          1                       /* TCP      通信端点 ID の最小値                        */
    531 #define TMIN_TCP6_CEPID         1                       /* TCP/IPv6 通信端点 ID の最小値                        */
    532 #define TMIN_TCP4_CEPID         (TNUM_TCP6_CEPID+1)     /* TCP/IPv4 通信端点 ID の最小値                        */
    533 
    534 #define TMIN_TCP_TWCEPID        1                       /* Time Wait 用 TCP 通信端点 ID の最小値       */
    535 
    536 /*
    537  *  制御セグメント(データなし)サイズのネットワークバッファ
     484 *  オブジェクト ID の最小値の定義
     485 */
     486
     487#define TMIN_TCP_REPID          1                       /* TCP      受付口 ID の最小値                 */
     488#define TMIN_TCP6_REPID         1                       /* TCP/IPv6 受付口 ID の最小値                 */
     489#define TMIN_TCP4_REPID         (TNUM_TCP6_REPID+1)     /* TCP/IPv4 受付口 ID の最小値                 */
     490
     491#define TMIN_TCP_CEPID          1                       /* TCP      通信端点 ID の最小値                        */
     492#define TMIN_TCP6_CEPID         1                       /* TCP/IPv6 通信端点 ID の最小値                        */
     493#define TMIN_TCP4_CEPID         (TNUM_TCP6_CEPID+1)     /* TCP/IPv4 通信端点 ID の最小値                        */
     494
     495#define TMIN_TCP_TWCEPID        1                       /* Time Wait 用 TCP 通信端点 ID の最小値 */
     496
     497/*
     498 *  制御セグメント(データなし)サイズのネットワークバッファ
    538499 */
    539500
     
    541502
    542503typedef struct t_net_buf_cseg {
    543         uint16_t        len;    /* データの長さ           */
    544         uint8_t         idix;   /* mpfid のインデックス  */
    545         uint8_t         flags;  /* フラグ            */
     504        uint16_t        len;    /* データの長さ               */
     505        uint8_t         idix;   /* mpfid のインデックス        */
     506        uint8_t         flags;  /* フラグ          */
    546507#ifdef IF_ETHER_NIC_NET_BUF_ALIGN
    547508        uint8_t         nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
     
    551512#endif
    552513        uint8_t         buf[IF_HDR_SIZE + IP_HDR_SIZE + TCP_HDR_SIZE];
    553                                 /* バッファ本体           */
     514                                /* バッファ本体               */
    554515        } T_NET_BUF_CSEG;
    555516
     
    557518
    558519/*
    559  *  SNMP の 管理æƒ
    560 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     520 *  SNMP の 管理情報ベース (MIB)
    561521 */
    562522
     
    575535
    576536/*
    577  *  関数シミュレーションマクロ
    578  */
    579 
    580 /* TCP 受付口 */
     537 *  関数シミュレーションマクロ
     538 */
     539
     540/* TCP 受付口 */
    581541
    582542#define VALID_TCP6_REPID(id)    (TMIN_TCP6_REPID<=(id)&&(id)<=tmax_tcp6_repid)
     
    604564#endif  /* of #ifdef TCP_CFG_EXTENTIONS */
    605565
    606 /* TCP 通信端点 */
     566/* TCP 通信端点 */
    607567
    608568#define VALID_TCP_CEPID(id)     (TMIN_TCP_CEPID<=(id)&&(id)<=tmax_tcp_cepid)
     
    634594
    635595/*
    636  *  å
    637 ¨åŸŸå¤‰æ•°
     596 *  全域変数
    638597 */
    639598
     
    642601extern T_TCP_STATS tcp_stats;
    643602
    644 /* TCP 受付口 */
     603/* TCP 受付口 */
    645604
    646605extern T_TCP6_REP tcp6_rep[];
     
    663622#endif
    664623
    665 /* TCP 通信端点 */
     624/* TCP 通信端点 */
    666625
    667626extern T_TCP_CEP tcp_cep[];
     
    679638
    680639/*
    681  *  Inline 関数
     640 *  Inline 関数
    682641 */
    683642
     
    685644
    686645/*
    687  *  TCP 通信端点の受信ウィンドバッファの省コピー機能が
    688  *  無効の場合は何もしないためのダミーの関数
    689  */
    690 
    691 /*
    692  *  tcp_free_rwbufq -- 受信ウィンドバッファキューを解放する。
     646 *  TCP 通信端点の受信ウィンドバッファの省コピー機能が
     647 *  無効の場合は何もしないためのダミーの関数
     648 */
     649
     650/*
     651 *  tcp_free_rwbufq -- 受信ウィンドバッファキューを解放する。
    693652 */
    694653
     
    703662
    704663/*
    705  *  TCP 通信端点の送信ウィンドバッファの省コピー機能のみが
    706  *  有効の場合は何もしないためのダミーの関数
    707  */
    708 
    709 /*
    710  *  tcp_read_swbuf_cs -- 送信ウィンドバッファからデータを読み出す。
     664 *  TCP 通信端点の送信ウィンドバッファの省コピー機能のみが
     665 *  有効の場合は何もしないためのダミーの関数
     666 */
     667
     668/*
     669 *  tcp_read_swbuf_cs -- 送信ウィンドバッファからデータを読み出す。
    711670 */
    712671
     
    721680
    722681/*
    723  *  TCP 通信端点の送信ウィンドバッファの省コピー機能が
    724  *  無効の場合は何もしないためのダミーの関数
    725  */
    726 
    727 /*
    728  *  tcp_free_swbufq -- 送信ウィンドバッファキューを解放する。
     682 *  TCP 通信端点の送信ウィンドバッファの省コピー機能が
     683 *  無効の場合は何もしないためのダミーの関数
     684 */
     685
     686/*
     687 *  tcp_free_swbufq -- 送信ウィンドバッファキューを解放する。
    729688 */
    730689
     
    735694
    736695/*
    737  *  tcp_alloc_swbuf -- 送信ウィンドバッファ用のネットワークバッファの割り当てを指示する。
     696 *  tcp_alloc_swbuf -- 送信ウィンドバッファ用のネットワークバッファの割り当てを指示する。
    738697 */
    739698
     
    744703
    745704/*
    746  *  tcp_push_res_nbuf -- ネットワークバッファを予約する。
     705 *  tcp_push_res_nbuf -- ネットワークバッファを予約する。
    747706 */
    748707
     
    754713
    755714/*
    756  *  tcp_pull_res_nbuf -- 予約してあるネットワークバッファ返す。
     715 *  tcp_pull_res_nbuf -- 予約してあるネットワークバッファ返す。
    757716 */
    758717
     
    766725
    767726/*
    768  *  TCP 通信端点の受信ウィンドバッファの省コピー機能の切り替えマクロ
     727 *  TCP 通信端点の受信ウィンドバッファの省コピー機能の切り替えマクロ
    769728 */
    770729
     
    800759
    801760/*
    802  *  TCP 通信端点の送信ウィンドバッファの省コピー機能の切り替えマクロ
     761 *  TCP 通信端点の送信ウィンドバッファの省コピー機能の切り替えマクロ
    803762 */
    804763
     
    851810
    852811/*
    853  *  関数
     812 *  関数
    854813 */
    855814
     
    886845
    887846/*
    888  *  TCP 通信端点の受信ウィンドバッファ用関数
    889  */
    890 
    891 /*
    892  *  TCP 通信端点の受信ウィンドバッファの省コピー機能が有効の場合、
    893  *  関数の選択に使用する。
     847 *  TCP 通信端点の受信ウィンドバッファ用関数
     848 */
     849
     850/*
     851 *  TCP 通信端点の受信ウィンドバッファの省コピー機能が有効の場合、
     852 *  関数の選択に使用する。
    894853 */
    895854
     
    901860
    902861/*
    903  *  TCP 通信端点の受信ウィンドバッファの省コピー機能用関数
     862 *  TCP 通信端点の受信ウィンドバッファの省コピー機能用関数
    904863 */
    905864
     
    911870
    912871/*
    913  *  TCP 通信端点の受信ウィンドバッファの【非】省コピー機能用関数
     872 *  TCP 通信端点の受信ウィンドバッファの【非】省コピー機能用関数
    914873 */
    915874
     
    921880
    922881/*
    923  *  TCP 通信端点の送信ウィンドバッファ用関数
    924  */
    925 
    926 /*
    927  *  TCP 通信端点の送信ウィンドバッファの省コピー機能が有効の場合、
    928  *  関数の選択に使用する。
     882 *  TCP 通信端点の送信ウィンドバッファ用関数
     883 */
     884
     885/*
     886 *  TCP 通信端点の送信ウィンドバッファの省コピー機能が有効の場合、
     887 *  関数の選択に使用する。
    929888 */
    930889
     
    943902
    944903/*
    945  *  TCP 通信端点の送信ウィンドバッファの省コピー機能用関数
     904 *  TCP 通信端点の送信ウィンドバッファの省コピー機能用関数
    946905 */
    947906
     
    957916
    958917/*
    959  *  TCP 通信端点の送信ウィンドバッファの【非】省コピー機能用関数
     918 *  TCP 通信端点の送信ウィンドバッファの【非】省コピー機能用関数
    960919 */
    961920
     
    973932
    974933/*
    975  *  TCP ヘッダのトレース出力機能用関数
     934 *  TCP ヘッダのトレース出力機能用関数
    976935 */
    977936extern void tcp_output_trace (T_NET_BUF *output, T_TCP_CEP *cep);
    978937extern void tcp_input_trace  (T_NET_BUF *input,  T_TCP_CEP *cep);
    979938
    980 /* TCP 出力タスク */
     939/* TCP 出力タスク */
    981940
    982941extern void     tcp_output_task(intptr_t exinf);
  • asp3_gr_sakura/trunk/tinet/netinet/tcpn_usrreq.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8573
    8674/*
    87  *  tcp_cre_rep -- TCP 受付口の生成【拡張機能】
     75 *  tcp_cre_rep -- TCP 受付口の生成【拡張機能】
    8876 */
    8977
     
    9684        ER              error;
    9785
    98         /* TCP 受付口 ID をチェックする。*/
     86        /* TCP 受付口 ID をチェックする。*/
    9987        if (!VALID_TCP_REPID(repid))
    10088                return E_ID;
    10189
    102         /* pk_crep が NULL ならエラー */
     90        /* pk_crep が NULL ならエラー */
    10391        if (pk_crep == NULL)
    10492                return E_PAR;
     
    10795
    10896        /*
    109          * API が IPv6 で IPv4 射影アドレスが認められていないのにもかかわらず、
    110          * IPv4 射影アドレスが指定されたらエラー
     97         * API が IPv6 で IPv4 射影アドレスが認められていないのにもかかわらず、
     98         * IPv4 射影アドレスが指定されたらエラー
    11199         */
    112100        if (in6_is_addr_ipv4mapped(&pk_crep->myaddr.ipaddr))
     
    115103#endif  /* of #if (API_PROTO == API_PROTO_IPV6) && !defined(DAPI_CFG_IP4MAPPED_ADDR) */
    116104
    117         /* TCP 受付口を得る。*/
     105        /* TCP 受付口を得る。*/
    118106        rep = GET_TCP_REP(repid);
    119107
    120         /* TCP 受付口が、動的生成用でなければエラー */
     108        /* TCP 受付口が、動的生成用でなければエラー */
    121109        if (!DYNAMIC_TCP_REP(rep))
    122110                return E_ID;
    123111
    124         /* 受付口をロックする。*/
     112        /* 受付口をロックする。*/
    125113        syscall(wai_sem(rep->semid_lock));
    126114
    127115        /*
    128          * TCP 受付口をチェックする。生成済みであればエラー
     116         * TCP 受付口をチェックする。生成済みであればエラー
    129117         */
    130118        if (VALID_TCP_REP(rep))
     
    132120        else {
    133121
    134                 /* TCP 受付口生成æƒ
    135 å ±ã‚’コピーする。*/
    136                 rep->repatr = pk_crep->repatr;                  /* 受付口属性              */
    137                 rep->myaddr.ipaddr = pk_crep->myaddr.ipaddr;    /* 自分のアドレス        */
    138                 rep->myaddr.portno = pk_crep->myaddr.portno;    /* 自分のアドレス        */
    139 
    140                 /* TCP 受付口を生成済みにする。*/
     122                /* TCP 受付口生成情報をコピーする。*/
     123                rep->repatr = pk_crep->repatr;                  /* 受付口属性                */
     124                rep->myaddr.ipaddr = pk_crep->myaddr.ipaddr;    /* 自分のアドレス      */
     125                rep->myaddr.portno = pk_crep->myaddr.portno;    /* 自分のアドレス      */
     126
     127                /* TCP 受付口を生成済みにする。*/
    141128                rep->flags |= TCP_REP_FLG_VALID;
    142129                error = E_OK;
    143130                }
    144131
    145         /* 受付口のロックを解除する。*/
     132        /* 受付口のロックを解除する。*/
    146133        syscall(sig_sem(rep->semid_lock));
    147134
     
    154141
    155142/*
    156  *  tcp_find_cep_rep -- TCP 受付口をリンクしている TCP 通信端点を得る。
     143 *  tcp_find_cep_rep -- TCP 受付口をリンクしている TCP 通信端点を得る。
    157144 */
    158145
     
    176163
    177164/*
    178  *  tcp_del_rep_body -- TCP 受付口の削除【拡張機能】の本体
     165 *  tcp_del_rep_body -- TCP 受付口の削除【拡張機能】の本体
    179166 */
    180167
     
    186173        ER              error = E_OK;
    187174
    188         /* TCP 受付口 ID のチェックは終了している。*/
    189 
    190         /* TCP 受付口を得る。*/
     175        /* TCP 受付口 ID のチェックは終了している。*/
     176
     177        /* TCP 受付口を得る。*/
    191178        rep = GET_TCP_REP(repid);
    192179
    193         /* TCP 受付口が、動的生成用でなければエラー */
     180        /* TCP 受付口が、動的生成用でなければエラー */
    194181        if (!DYNAMIC_TCP_REP(rep))
    195182                return E_ID;
    196183
    197         /* 受付口をロックする。*/
     184        /* 受付口をロックする。*/
    198185        syscall(wai_sem(rep->semid_lock));
    199186
    200         /* TCP 受付口をチェックする。未生成の場合はエラー */
     187        /* TCP 受付口をチェックする。未生成の場合はエラー */
    201188        if (!VALID_TCP_REP(rep))
    202189                error = E_NOEXS;
     
    204191                if ((cep = TCP_FIND_CEP_REP(rep)) != NULL) {
    205192                        /*
    206                          * すでに受動オープンしているとき
    207                          *(tcp_acp_cep が呼ばれているとき)は、
    208                          * tcp_acp_cep を終了させる。
     193                         * すでに受動オープンしているとき
     194                         *(tcp_acp_cep が呼ばれているとき)は、
     195                         * tcp_acp_cep を終了させる。
    209196                         */
    210197
    211                         /* 通信端点をロックする。*/
     198                        /* 通信端点をロックする。*/
    212199                        syscall(wai_sem(cep->semid_lock));
    213200
    214201                        /*
    215                          *  通信端点から受付口を解放し、
    216                          *  イベントフラグをクローズに設定する。
     202                         *  通信端点から受付口を解放し、
     203                         *  イベントフラグをクローズに設定する。
    217204                         */
    218205                        cep->rep = NULL;
     
    254241                        cep->rcv_tfn   = TFN_TCP_UNDEF;
    255242
    256                         /* 通信端点のロックを解除する。*/
     243                        /* 通信端点のロックを解除する。*/
    257244                        syscall(sig_sem(cep->semid_lock));
    258245
     
    261248                        error = E_OK;
    262249
    263                 /* TCP 受付口を未生成にする。*/
     250                /* TCP 受付口を未生成にする。*/
    264251                rep->flags &= ~TCP_REP_FLG_VALID;
    265252                }
    266253
    267         /* 受付口のロックを解除する。*/
     254        /* 受付口のロックを解除する。*/
    268255        syscall(sig_sem(rep->semid_lock));
    269256
     
    280267
    281268/*
    282  *  tcp_acp_cep -- 接続要求å¾
    283 ã¡ (受動オープン)【標準機能】
     269 *  tcp_acp_cep -- 接続要求待ち (受動オープン)【標準機能】
    284270 */
    285271
     
    297283
    298284        /*
    299          * API (tcp6_acp_cep と tcp_acp_cep) と、
    300          * TCP通信端点のプロトコルが矛盾していればエラー
     285         * API (tcp6_acp_cep と tcp_acp_cep) と、
     286         * TCP通信端点のプロトコルが矛盾していればエラー
    301287         */
    302288
     
    317303#endif  /* of #if defined(SUPPORT_INET6) && defined(SUPPORT_INET4) */
    318304
    319         /* TCP 受付口をチェックする。*/
     305        /* TCP 受付口をチェックする。*/
    320306        if (!VALID_TCP_REPID(repid))
    321307                return E_ID;
     
    323309#ifdef TCP_CFG_NON_BLOCKING
    324310
    325         /* p_dstaddr が NULL ならエラー */
     311        /* p_dstaddr が NULL ならエラー */
    326312        if (p_dstaddr == NULL)
    327313                return E_PAR;
     
    329315#else   /* of #ifdef TCP_CFG_NON_BLOCKING */
    330316
    331         /* p_dstaddr が NULL か、tmout が TMO_NBLK ならエラー */
     317        /* p_dstaddr が NULL か、tmout が TMO_NBLK ならエラー */
    332318        if (p_dstaddr == NULL || tmout == TMO_NBLK)
    333319                return E_PAR;
     
    338324
    339325        /*
    340          * API が IPv6 で IPv4 射影アドレスが認められていないのにもかかわらず、
    341          * IPv4 射影アドレスが指定されたらエラー
     326         * API が IPv6 で IPv4 射影アドレスが認められていないのにもかかわらず、
     327         * IPv4 射影アドレスが指定されたらエラー
    342328         */
    343329        if (in6_is_addr_ipv4mapped(&p_dstaddr->ipaddr))
     
    347333
    348334        /*
    349          *  CEP をロックし、API 機能コードとタスク識別子を記録する。
    350          *  すでに記録されていれば、ペンディング中なのでエラー
     335         *  CEP をロックし、API 機能コードとタスク識別子を記録する。
     336         *  すでに記録されていれば、ペンディング中なのでエラー
    351337         */
    352338        if ((error = tcp_lock_cep(cepid, &cep, TFN_TCP_ACP_CEP)) != E_OK)
    353339                return error;
    354340
    355         /* CEP の FSM がクローズ状æ
    356 ‹ã§ãªã‘ればエラー。*/
     341        /* CEP の FSM がクローズ状態でなければエラー。*/
    357342        if (cep->fsm_state != TCP_FSM_CLOSED) {
    358343                error = E_OBJ;
     
    361346        syscall(clr_flg(cep->est_flgid, (FLGPTN)(~TCP_CEP_EVT_CLOSED)));
    362347
    363         /* TCP 通信端点を初期化する。*/
     348        /* TCP 通信端点を初期化する。*/
    364349        tcp_init_cep(cep);
    365350
    366         /* TCP 受付口を得る。*/
     351        /* TCP 受付口を得る。*/
    367352
    368353        rep = GET_TCP_REP(repid);
     
    370355#ifdef TCP_CFG_EXTENTIONS
    371356
    372         /* TCP 受付口をロックする。*/
     357        /* TCP 受付口をロックする。*/
    373358        syscall(wai_sem(rep->semid_lock));
    374359
    375         /* TCP 受付口をチェックする。*/
     360        /* TCP 受付口をチェックする。*/
    376361        if (!VALID_TCP_REP(rep)) {
    377362                syscall(sig_sem(rep->semid_lock));
     
    382367#endif  /* of #ifdef TCP_CFG_EXTENTIONS */
    383368
    384         /* TCP 通信端点にTCP受付口を記録する。*/
     369        /* TCP 通信端点にTCP受付口を記録する。*/
    385370
    386371#if defined(SUPPORT_INET6) && defined(SUPPORT_INET4)
     
    404389#ifdef TCP_CFG_EXTENTIONS
    405390
    406         /* TCP 受付口のロックを解除する。*/
     391        /* TCP 受付口のロックを解除する。*/
    407392        syscall(sig_sem(rep->semid_lock));
    408393
    409394#endif  /* of #ifdef TCP_CFG_EXTENTIONS */
    410395
    411         /* TCP 受付口のアドレスをコピーする。*/
     396        /* TCP 受付口のアドレスをコピーする。*/
    412397
    413398#if defined(SUPPORT_INET6) && defined(SUPPORT_INET4) && (API_PROTO == API_PROTO_IPV4)
     
    428413#if API_PROTO == API_PROTO_IPV4
    429414
    430         /* TCP 通信端点のネットワーク層プロトコルを設定する。*/
     415        /* TCP 通信端点のネットワーク層プロトコルを設定する。*/
    431416        cep->flags |= TCP_CEP_FLG_IPV4;
    432417
    433418#endif  /* of #if API_PROTO == API_PROTO_IPV4 */
    434419
    435         /* 通信端点を設定する。*/
     420        /* 通信端点を設定する。*/
    436421        cep->fsm_state = TCP_FSM_LISTEN;
    437422
    438423#ifdef TCP_CFG_NON_BLOCKING
    439424
    440         /* タイムアウトをチェックする。*/
     425        /* タイムアウトをチェックする。*/
    441426        if (tmout == TMO_NBLK) {
    442                 /* ノンブロッキングコール */
     427                /* ノンブロッキングコール */
    443428
    444429#if defined(SUPPORT_INET6) && defined(SUPPORT_INET4)
     
    470455
    471456                /*
    472                  *  FSM が ESTABLISHED になるまでå¾
    473 ã¤ã€‚
    474                  *  FSM が CLOSED になった場合は、エラーが発生したことを意味している。
     457                 *  FSM が ESTABLISHED になるまで待つ。
     458                 *  FSM が CLOSED になった場合は、エラーが発生したことを意味している。
    475459                 */
    476460                error = twai_flg(cep->est_flgid, (TCP_CEP_EVT_CLOSED |
     
    486470
    487471                if (error == E_OK) {
    488                         /* 相手のアドレスをコピーする。*/
     472                        /* 相手のアドレスをコピーする。*/
    489473#if defined(SUPPORT_INET6) && defined(SUPPORT_INET4) && (API_PROTO == API_PROTO_IPV4)
    490474                        p_dstaddr->ipaddr = ntohl(cep->dstaddr.ipaddr.s6_addr32[3]);
     
    496480                else {
    497481                        /*
    498                          *  通信端点から受付口を解放し、
    499                          *  イベントフラグをクローズに設定する。
     482                         *  通信端点から受付口を解放し、
     483                         *  イベントフラグをクローズに設定する。
    500484                         */
    501485                        cep->rep = NULL;
     
    526510
    527511/*
    528  *  tcp_con_cep -- 接続要求 (能動オープン)【標準機能】
     512 *  tcp_con_cep -- 接続要求 (能動オープン)【標準機能】
    529513 */
    530514
     
    541525
    542526        /*
    543          * API (tcp6_acp_cep と tcp_acp_cep) と、
    544          * TCP通信端点のプロトコルが矛盾していればエラー
     527         * API (tcp6_acp_cep と tcp_acp_cep) と、
     528         * TCP通信端点のプロトコルが矛盾していればエラー
    545529         */
    546530
     
    562546
    563547        /*
    564          *  あてå
    565 ˆãŒãƒžãƒ«ãƒã‚­ãƒ£ã‚¹ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ãªã‚‰ã‚¨ãƒ©ãƒ¼
     548         *  あて先がマルチキャストアドレスならエラー
    566549         */
    567550
     
    581564
    582565        /*
    583          * API が IPv6 で IPv4 射影アドレスが認められていないのにもかかわらず、
    584          * IPv4 射影アドレスが指定されたらエラー
     566         * API が IPv6 で IPv4 射影アドレスが認められていないのにもかかわらず、
     567         * IPv4 射影アドレスが指定されたらエラー
    585568         */
    586569        if (in6_is_addr_ipv4mapped(&p_dstaddr->ipaddr))
     
    592575
    593576        /*
    594          *  p_dstaddr または p_myaddr が NULL ならエラー
     577         *  p_dstaddr または p_myaddr が NULL ならエラー
    595578         */
    596579        if (p_myaddr == NULL || p_dstaddr == NULL)
     
    600583
    601584        /*
    602          *  p_dstaddr または p_myaddr が NULL 、
    603          *  tmout が TMO_NBLK ならエラー
     585         *  p_dstaddr または p_myaddr が NULL 、
     586         *  tmout が TMO_NBLK ならエラー
    604587         */
    605588        if (p_myaddr == NULL || p_dstaddr == NULL || tmout == TMO_NBLK)
     
    609592
    610593        /*
    611          *  CEP をロックし、API 機能コードとタスク識別子を記録する。
    612          *  すでに記録されていれば、ペンディング中なのでエラー
     594         *  CEP をロックし、API 機能コードとタスク識別子を記録する。
     595         *  すでに記録されていれば、ペンディング中なのでエラー
    613596         */
    614597        if ((error = tcp_lock_cep(cepid, &cep, TFN_TCP_CON_CEP)) != E_OK)
    615598                return error;
    616599
    617         /* CEP の FSM がクローズ状æ
    618 ‹ã§ãªã‘ればエラー。*/
     600        /* CEP の FSM がクローズ状態でなければエラー。*/
    619601        if (cep->fsm_state != TCP_FSM_CLOSED) {
    620602                error = E_OBJ;
     
    623605        syscall(clr_flg(cep->est_flgid, (FLGPTN)(~TCP_CEP_EVT_CLOSED)));
    624606
    625         /* シーケンス番号を初期化する。*/
     607        /* シーケンス番号を初期化する。*/
    626608        if (tcp_iss == 0)
    627609                tcp_init_iss();
    628610
    629         /* 通信端点を初期化する。*/
     611        /* 通信端点を初期化する。*/
    630612        tcp_init_cep(cep);
    631613
    632614        /*
    633          *  IP アドレスを設定する。
    634          *  p_myaddr が NADR (-1) ではなく、自 IP アドレスが ANY でなければ、
    635          *  指定された IP アドレスを割り当てる。
     615         *  IP アドレスを設定する。
     616         *  p_myaddr が NADR (-1) ではなく、自 IP アドレスが ANY でなければ、
     617         *  指定された IP アドレスを割り当てる。
    636618         */
    637619
     
    663645#if API_PROTO == API_PROTO_IPV4
    664646
    665         /* TCP 通信端点のネットワーク層プロトコルを設定する。*/
     647        /* TCP 通信端点のネットワーク層プロトコルを設定する。*/
    666648        cep->flags |= TCP_CEP_FLG_IPV4;
    667649
    668650#endif  /* of #if API_PROTO == API_PROTO_IPV4 */
    669651
    670         /* 通信端点を設定する。*/
     652        /* 通信端点を設定する。*/
    671653        //NET_DEBUG_TCP5("tcp_con_cep3[c=%d,d=%lI.%d,s=%lI.%d]\n",
    672654        cep->fsm_state = TCP_FSM_SYN_SENT;
     
    678660#ifdef TCP_CFG_NON_BLOCKING
    679661
    680         /* タイムアウトをチェックする。*/
     662        /* タイムアウトをチェックする。*/
    681663        if (tmout == TMO_NBLK) {
    682                 /* ノンブロッキングコール */
     664                /* ノンブロッキングコール */
    683665
    684666#if defined(SUPPORT_INET6) && defined(SUPPORT_INET4)
     
    709691                cep->snd_nblk_tfn = TFN_TCP_CON_CEP;
    710692
    711                 /* コネクションの開設をポストする。*/
     693                /* コネクションの開設をポストする。*/
    712694                cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    713695                sig_sem(SEM_TCP_POST_OUTPUT);
     
    719701
    720702                /*
    721                  *  p_myaddr が NADR (-1) か、
    722                  *  自ポート番号が TCP_PORTANY なら、自動で割り当てる。
     703                 *  p_myaddr が NADR (-1) か、
     704                 *  自ポート番号が TCP_PORTANY なら、自動で割り当てる。
    723705                 */
    724706                if (p_myaddr == NADR || p_myaddr->portno == TCP_PORTANY)
     
    727709                        goto err_ret;
    728710
    729                 /* コネクションの開設をポストする。*/
     711                /* コネクションの開設をポストする。*/
    730712                cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    731713                sig_sem(SEM_TCP_POST_OUTPUT);
    732714
    733715                /*
    734                  *  イベントが ESTABLISHED になるまでå¾
    735 ã¤ã€‚
    736                  *  イベントが CLOSED になった場合は、何らかのエラーが発生したか、
    737                  *  接続要求が拒否されたことを意味している。
     716                 *  イベントが ESTABLISHED になるまで待つ。
     717                 *  イベントが CLOSED になった場合は、何らかのエラーが発生したか、
     718                 *  接続要求が拒否されたことを意味している。
    738719                 */
    739720                error = twai_flg(cep->est_flgid, (TCP_CEP_EVT_CLOSED |
     
    750731                if (error != E_OK) {
    751732                        /*
    752                          *  通信端点から受付口を解放し、
    753                          *  イベントフラグをクローズに設定する。
     733                         *  通信端点から受付口を解放し、
     734                         *  イベントフラグをクローズに設定する。
    754735                         */
    755736                        cep->rep = NULL;
  • asp3_gr_sakura/trunk/tinet/netinet/udp.cfg

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/plain to text/plain; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    4533
    4634/*
    47  *  UDP で使用するカーネルオブジェクト
     35 *  UDP で使用するカーネルオブジェクト
    4836 */
    4937
     
    5139
    5240/*
    53  *  ノンブロッキングコールを行う場合に組み込むタスクとセマフォ
     41 *  ノンブロッキングコールを行う場合に組み込むタスクとセマフォ
    5442 */
    5543
     
    6553        });
    6654
    67 /* セマフォ */
     55/* セマフォ */
    6856
    6957CRE_SEM(SEM_UDP_POST_OUTPUT,    { TA_TPRI, 0, 1 });
  • asp3_gr_sakura/trunk/tinet/netinet/udp.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8472
    8573/*
    86  *  UDP ヘッダ、RFC768 参ç
    87 §
     74 *  UDP ヘッダ、RFC768 参照
    8875 */
    8976
    9077typedef struct t_udp_hdr {
    91         uint16_t        sport;          /* 送信å
    92 ƒãƒãƒ¼ãƒˆç•ªå·        */
    93         uint16_t        dport;          /* 宛å
    94 ˆãƒãƒ¼ãƒˆç•ªå·        */
     78        uint16_t        sport;          /* 送信元ポート番号     */
     79        uint16_t        dport;          /* 宛先ポート番号      */
    9580
    96         uint16_t        ulen;           /* データグラム長        */
    97         uint16_t        sum;            /* チェックサム           */
     81        uint16_t        ulen;           /* データグラム長      */
     82        uint16_t        sum;            /* チェックサム               */
    9883        } T_UDP_HDR;
    9984
  • asp3_gr_sakura/trunk/tinet/netinet/udp4_input.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    7866
    7967/*
    80  *  udp_reply_no_port -- 送信å
    81 ƒã«ãƒãƒ¼ãƒˆãŒå®šç¾©ã•ã‚Œã¦ã„ないことを通知する。
     68 *  udp_reply_no_port -- 送信元にポートが定義されていないことを通知する。
    8269 */
    8370
     
    9178        NET_COUNT_MIB(udp_stats.udpNoPorts, 1);
    9279
    93         /* ローカル IP アドレスに届いたデータグラムのみ ICMP エラーを通知する。*/
     80        /* ローカル IP アドレスに届いたデータグラムのみ ICMP エラーを通知する。*/
    9481        if (ntohl(GET_IP4_HDR(input)->dst) == IF_GET_IFNET()->in4_ifaddr.addr) {
    9582                syslog(LOG_INFO, "[UDP] unexp port: %d.", ntohs(udph->dport));
    9683
    9784                icmp_error(ICMP4_UNREACH_PORT, input);
    98                 /* icmp_error では、ネットワークバッファ input を返却しないので下へ抜ける。*/
     85                /* icmp_error では、ネットワークバッファ input を返却しないので下へ抜ける。*/
    9986       
    10087                }
  • asp3_gr_sakura/trunk/tinet/netinet/udp4_subr.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8068
    8169/*
    82  *  udp4_is_dstaddr_accept -- UDP のあてå
    83 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒæ­£ã—いかチェックする。
     70 *  udp4_is_dstaddr_accept -- UDP のあて先アドレスが正しいかチェックする。
    8471 *
    85  *    DHCP_CFG が定義されているときは、以下のデータグラムを受信する。
     72 *    DHCP_CFG が定義されているときは、以下のデータグラムを受信する。
    8673 *
    87  *      ・あてå
    88 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒ–ロードキャスト
    89  *      ・ローカルアドレスが未定義
     74 *      ・あて先アドレスがブロードキャスト
     75 *      ・ローカルアドレスが未定義
    9076 */
    9177
     
    10995
    11096/*
    111  *  udp4_is_dstaddr_accept -- UDP のあてå
    112 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒæ­£ã—いかチェックする。
     97 *  udp4_is_dstaddr_accept -- UDP のあて先アドレスが正しいかチェックする。
    11398 *
    114  *    以下の場合もデータグラムを受信する。
     99 *    以下の場合もデータグラムを受信する。
    115100 *
    116  *      ・あてå
    117 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒ–ロードキャスト
     101 *      ・あて先アドレスがブロードキャスト
    118102 */
    119103
  • asp3_gr_sakura/trunk/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
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    125113
    126114/*
    127  *  SNMP の 管理æƒ
    128 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     115 *  SNMP の 管理情報ベース (MIB)
    129116 */
    130117
     
    134121
    135122/*
    136  *  IPv6 と IPv4 で引数が異なる関数のコンパイル
     123 *  IPv6 と IPv4 で引数が異なる関数のコンパイル
    137124 */
    138125
  • asp3_gr_sakura/trunk/tinet/netinet/udp_output.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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$
     
    124112
    125113/*
    126  *  IPv6 と IPv4 で引数が異なる関数のコンパイル
     114 *  IPv6 と IPv4 で引数が異なる関数のコンパイル
    127115 */
    128116
     
    166154
    167155/*
    168  *  UDP 出力タスク
    169  *  ノンブロッキングコールを組み込んだとき使用する。
     156 *  UDP 出力タスク
     157 *  ノンブロッキングコールを組み込んだとき使用する。
    170158 */
    171159
     
    182170#if defined(_IP6_CFG) && !defined(SUPPORT_TCP)
    183171
    184         /* IPv6 のステートレス・アドレス自動設定を実行する。*/
     172        /* IPv6 のステートレス・アドレス自動設定を実行する。*/
    185173        in6_if_up(IF_GET_IFNET());
    186174
     
    189177        while (true) {
    190178
    191                 /* 出力がポストされるまでå¾
    192 ã¤ã€‚*/
     179                /* 出力がポストされるまで待つ。*/
    193180                syscall(wai_sem(SEM_UDP_POST_OUTPUT));
    194181
  • asp3_gr_sakura/trunk/tinet/netinet/udp_subr.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    125113
    126114/*
    127  *  局所変数
     115 *  局所変数
    128116 */
    129117
    130118#if (defined(_IP6_CFG) && TNUM_UDP6_CEPID > 0) || (defined(_IP4_CFG) && TNUM_UDP4_CEPID > 0)
    131119
    132 static uint16_t udp_port_auto = UDP_PORT_FIRST_AUTO;    /* 自動割り当て番号     */
     120static uint16_t udp_port_auto = UDP_PORT_FIRST_AUTO;    /* 自動割り当て番号     */
    133121
    134122#endif  /* of #if (defined(_IP6_CFG) && TNUM_UDP6_CEPID > 0) || (defined(_IP4_CFG) && TNUM_UDP4_CEPID > 0) */
    135123
    136124/*
    137  *  IPv6 と IPv4 で引数が異なる関数のコンパイル
     125 *  IPv6 と IPv4 で引数が異なる関数のコンパイル
    138126 */
    139127
  • asp3_gr_sakura/trunk/tinet/netinet/udp_usrreq.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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$
     
    8169
    8270/*
    83  *  ノンブロッキングコールを組込まない場合にリンクされる関数の定義
     71 *  ノンブロッキングコールを組込まない場合にリンクされる関数の定義
    8472 */
    8573
     
    127115
    128116/*
    129  *  TINET をライブラリ化しない場合は、å
    130 ¨ã¦ã®æ©Ÿèƒ½ã‚’
    131  *  オブジェクトファイルに出力するため、マクロを有効にする。
     117 *  TINET をライブラリ化しない場合は、全ての機能を
     118 *  オブジェクトファイルに出力するため、マクロを有効にする。
    132119 */
    133120
     
    148135
    149136/*
    150  *  IPv6 と IPv4 で引数が異なる関数のコンパイル
     137 *  IPv6 と IPv4 で引数が異なる関数のコンパイル
    151138 */
    152139
     
    251238
    252239/*
    253  *  udp_can_cep -- ペンディングしている処理のキャンセル【標準機能】
     240 *  udp_can_cep -- ペンディングしている処理のキャンセル【標準機能】
    254241 */
    255242
     
    259246udp_can_cep (ID cepid, FN fncd)
    260247{
    261         /* IPv6 用の UDP 通信端点 ID をチェックする。*/
     248        /* IPv6 用の UDP 通信端点 ID をチェックする。*/
    262249        if (VALID_UDP6_CEPID(cepid)) {
    263250
    264                 /* UDP 通信端点を得てメイン関数を呼び出す。*/
     251                /* UDP 通信端点を得てメイン関数を呼び出す。*/
    265252                return udp6_cancel_cep(GET_UDP6_CEP(cepid), fncd);
    266253                }
    267254
    268         /* IPv4 用の UDP 通信端点 ID をチェックする。*/
     255        /* IPv4 用の UDP 通信端点 ID をチェックする。*/
    269256        else if (VALID_UDP4_CEPID(cepid)) {
    270257
    271                 /* UDP 通信端点を得てメイン関数を呼び出す。*/
     258                /* UDP 通信端点を得てメイン関数を呼び出す。*/
    272259                return udp4_cancel_cep(GET_UDP4_CEP(cepid), fncd);
    273260                }
  • asp3_gr_sakura/trunk/tinet/netinet/udp_usrreq_nblk.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    125113
    126114/*
    127  *  TINET をライブラリ化しない場合は、å
    128 ¨ã¦ã®æ©Ÿèƒ½ã‚’
    129  *  オブジェクトファイルに出力するため、マクロを有効にする。
     115 *  TINET をライブラリ化しない場合は、全ての機能を
     116 *  オブジェクトファイルに出力するため、マクロを有効にする。
    130117 */
    131118
     
    142129
    143130/*
    144  *  IPv6 と IPv4 で引数が異なる関数のコンパイル
     131 *  IPv6 と IPv4 で引数が異なる関数のコンパイル
    145132 */
    146133
  • asp3_gr_sakura/trunk/tinet/netinet/udp_var.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=UTF-8
    r317 r318  
    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$
     
    8472
    8573/*
    86  *  UDP ヘッダ・ペイロードアクセスマクロ
     74 *  UDP ヘッダ・ペイロードアクセスマクロ
    8775 */
    8876
     
    9583
    9684/*
    97  *  TINET 1.1 との互換性のための定義
     85 *  TINET 1.1 との互換性のための定義
    9886 */
    9987
     
    10896
    10997/*
    110  *  コールバック関数の定義
     98 *  コールバック関数の定義
    11199 */
    112100
     
    114102
    115103/*
    116  *  UDP 通信端点
    117  */
    118 
    119 /* IPv6 用 UDP 通信端点 */
     104 *  UDP 通信端点
     105 */
     106
     107/* IPv6 用 UDP 通信端点 */
    120108
    121109typedef struct t_udp6_cep {
    122110
    123111        /*
    124          * ITRON TCP/IP API、TCP 通信端点と同じメンバ
     112         * ITRON TCP/IP API、TCP 通信端点と同じメンバ
    125113         */
    126         ATR             cepatr;         /* UDP 通信端点属性               */
    127         T_IPV6EP        myaddr;         /* 自分のアドレス                */
    128         t_udp_callback  callback;       /* コールバック関数             */
     114        ATR             cepatr;         /* UDP 通信端点属性           */
     115        T_IPV6EP        myaddr;         /* 自分のアドレス              */
     116        t_udp_callback  callback;       /* コールバック関数             */
    129117
    130118        /*
    131          * TINET 独自のメンバ
     119         * TINET 独自のメンバ
    132120         */
    133         uint16_t        flags;          /* 通信端点フラグ                */
    134         ID              semid_lock;     /* 通信端点ロック                */
    135         ID              snd_tskid;      /* 送信タスク識別子             */
    136         ID              rcv_tskid;      /* 受信タスク識別子             */
    137         ID              rcvqid;         /* 非コールバック用受信キュー識別子*/
    138         T_NET_BUF       *cb_netbuf;     /* コールバック用受信ネットワークバッファ*/
     121        uint16_t        flags;          /* 通信端点フラグ              */
     122        ID              semid_lock;     /* 通信端点ロック              */
     123        ID              snd_tskid;      /* 送信タスク識別子             */
     124        ID              rcv_tskid;      /* 受信タスク識別子             */
     125        ID              rcvqid;         /* 非コールバック用受信キュー識別子*/
     126        T_NET_BUF       *cb_netbuf;     /* コールバック用受信ネットワークバッファ*/
    139127
    140128#ifdef UDP_CFG_NON_BLOCKING
    141129
    142         T_IPV6EP        *snd_p_dstaddr; /* 送信相手のアドレスへのポインタ*/
    143         T_IPV6EP        *rcv_p_dstaddr; /* 受信相手のアドレスへのポインタ*/
    144         void            *snd_data;      /* 送信データ領域のå
    145 ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹        */
    146         int_t           snd_len;        /* 送信データ領域の長さ               */
    147         void            *rcv_data;      /* 受信データ領域のå
    148 ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹        */
    149         int_t           rcv_len;        /* 受信データ領域の長さ               */
     130        T_IPV6EP        *snd_p_dstaddr; /* 送信相手のアドレスへのポインタ*/
     131        T_IPV6EP        *rcv_p_dstaddr; /* 受信相手のアドレスへのポインタ*/
     132        void            *snd_data;      /* 送信データ領域の先頭アドレス       */
     133        int_t           snd_len;        /* 送信データ領域の長さ           */
     134        void            *rcv_data;      /* 受信データ領域の先頭アドレス       */
     135        int_t           rcv_len;        /* 受信データ領域の長さ           */
    150136
    151137#endif  /* of #ifdef UDP_CFG_NON_BLOCKING */
    152138
    153139#ifdef UDP_CFG_EXTENTIONS
    154         ER              error;          /* å¾
    155 ã¡ä¸­ã«ç™ºç”Ÿã—たエラー  */
     140        ER              error;          /* 待ち中に発生したエラー  */
    156141#endif
    157142
    158143        } T_UDP6_CEP;
    159144
    160 /* IPv4 用 UDP 通信端点 */
     145/* IPv4 用 UDP 通信端点 */
    161146
    162147typedef struct t_udp4_cep {
    163148
    164149        /*
    165          * ITRON TCP/IP API、TCP 通信端点と同じメンバ
     150         * ITRON TCP/IP API、TCP 通信端点と同じメンバ
    166151         */
    167         ATR             cepatr;         /* UDP 通信端点属性               */
    168         T_IPV4EP        myaddr;         /* 自分のアドレス                */
    169         t_udp_callback  callback;       /* コールバック関数             */
     152        ATR             cepatr;         /* UDP 通信端点属性           */
     153        T_IPV4EP        myaddr;         /* 自分のアドレス              */
     154        t_udp_callback  callback;       /* コールバック関数             */
    170155
    171156        /*
    172          * TINET 独自のメンバ
     157         * TINET 独自のメンバ
    173158         */
    174         uint16_t        flags;          /* 通信端点フラグ                */
    175         ID              semid_lock;     /* 通信端点ロック                */
    176         ID              snd_tskid;      /* 送信タスク識別子             */
    177         ID              rcv_tskid;      /* 受信タスク識別子             */
    178         ID              rcvqid;         /* 非コールバック用受信キュー識別子*/
    179         T_NET_BUF       *cb_netbuf;     /* コールバック用受信ネットワークバッファ*/
     159        uint16_t        flags;          /* 通信端点フラグ              */
     160        ID              semid_lock;     /* 通信端点ロック              */
     161        ID              snd_tskid;      /* 送信タスク識別子             */
     162        ID              rcv_tskid;      /* 受信タスク識別子             */
     163        ID              rcvqid;         /* 非コールバック用受信キュー識別子*/
     164        T_NET_BUF       *cb_netbuf;     /* コールバック用受信ネットワークバッファ*/
    180165
    181166#ifdef UDP_CFG_NON_BLOCKING
    182167
    183         T_IPV4EP        *snd_p_dstaddr; /* 送信相手のアドレスへのポインタ*/
    184         T_IPV4EP        *rcv_p_dstaddr; /* 受信相手のアドレスへのポインタ*/
    185         void            *snd_data;      /* 送信データ領域のå
    186 ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹        */
    187         int_t           snd_len;        /* 送信データ領域の長さ               */
    188         void            *rcv_data;      /* 受信データ領域のå
    189 ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹        */
    190         int_t           rcv_len;        /* 受信データ領域の長さ               */
     168        T_IPV4EP        *snd_p_dstaddr; /* 送信相手のアドレスへのポインタ*/
     169        T_IPV4EP        *rcv_p_dstaddr; /* 受信相手のアドレスへのポインタ*/
     170        void            *snd_data;      /* 送信データ領域の先頭アドレス       */
     171        int_t           snd_len;        /* 送信データ領域の長さ           */
     172        void            *rcv_data;      /* 受信データ領域の先頭アドレス       */
     173        int_t           rcv_len;        /* 受信データ領域の長さ           */
    191174
    192175#endif  /* of #ifdef UDP_CFG_NON_BLOCKING */
    193176
    194177#ifdef UDP_CFG_EXTENTIONS
    195         ER              error;          /* å¾
    196 ã¡ä¸­ã«ç™ºç”Ÿã—たエラー  */
     178        ER              error;          /* 待ち中に発生したエラー  */
    197179#endif
    198180
     
    214196
    215197/*
    216  *  UDP 通信端点フラグ
    217  */
    218 
    219 #define UDP_CEP_FLG_POST_OUTPUT UINT_C(0x0200)  /* 送信を開始する。             */
    220 #define UDP_CEP_FLG_DYNAMIC     UINT_C(0x0400)  /* 動的生成・削除可能通信端点。   */
    221 #define UDP_CEP_FLG_VALID       UINT_C(0x0800)  /* 生成済みで有効な通信端点。      */
    222 
    223 /*
    224  *  オブジェクト ID の最小値の定義
    225  */
    226 
    227 #define TMIN_UDP_CEPID          1                       /* UDP      通信端点 ID の最小値 */
    228 #define TMIN_UDP6_CEPID         1                       /* UDP/IPv6 通信端点 ID の最小値 */
    229 #define TMIN_UDP4_CEPID         (TNUM_UDP6_CEPID+1)     /* UDP/IPv4 通信端点 ID の最小値 */
    230 
    231 /*
    232  *  SNMP の 管理æƒ
    233 å ±ãƒ™ãƒ¼ã‚¹ (MIB)
     198 *  UDP 通信端点フラグ
     199 */
     200
     201#define UDP_CEP_FLG_POST_OUTPUT UINT_C(0x0200)  /* 送信を開始する。             */
     202#define UDP_CEP_FLG_DYNAMIC     UINT_C(0x0400)  /* 動的生成・削除可能通信端点。       */
     203#define UDP_CEP_FLG_VALID       UINT_C(0x0800)  /* 生成済みで有効な通信端点。        */
     204
     205/*
     206 *  オブジェクト ID の最小値の定義
     207 */
     208
     209#define TMIN_UDP_CEPID          1                       /* UDP      通信端点 ID の最小値 */
     210#define TMIN_UDP6_CEPID         1                       /* UDP/IPv6 通信端点 ID の最小値 */
     211#define TMIN_UDP4_CEPID         (TNUM_UDP6_CEPID+1)     /* UDP/IPv4 通信端点 ID の最小値 */
     212
     213/*
     214 *  SNMP の 管理情報ベース (MIB)
    234215 */
    235216
     
    242223
    243224/*
    244  *  関数シミュレーションマクロ
     225 *  関数シミュレーションマクロ
    245226 */
    246227
     
    264245
    265246/*
    266  *  å
    267 ¨åŸŸå¤‰æ•°
     247 *  全域変数
    268248 */
    269249
    270250extern T_UDP_STATS udp_stats;
    271251
    272 /* UDP 通信端点 */
     252/* UDP 通信端点 */
    273253
    274254extern T_UDP6_CEP udp6_cep[];
     
    292272
    293273/*
    294  *  TINET 1.3 との互換性のための定義
     274 *  TINET 1.3 との互換性のための定義
    295275 */
    296276
     
    299279
    300280/*
    301  *  関数
     281 *  関数
    302282 */
    303283
     
    328308extern void udp4_input_select (T_UDP4_CEP *cep, T_NET_BUF *input, uint_t off);
    329309
    330 /* ノンブロッキングコールを行う場合に組み込むタスク */
     310/* ノンブロッキングコールを行う場合に組み込むタスク */
    331311
    332312extern void     udp_output_task(intptr_t exinf);
  • asp3_gr_sakura/trunk/tinet/netinet/udpn_input.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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$
     
    8068
    8169/*
    82  *  udp_input_select -- UDP のå
    83 ¥åŠ›å‡¦ç†ã®é¸æŠž
     70 *  udp_input_select -- UDP の入力処理の選択
    8471 */
    8572
     
    9380        len  = (uint_t)(ntohs(udph->ulen) - UDP_HDR_SIZE);
    9481
    95         if (cep->rcv_tskid != TA_NULL) {        /* 非ノンブロッキングコールでペンディング中 */
     82        if (cep->rcv_tskid != TA_NULL) {        /* 非ノンブロッキングコールでペンディング中 */
    9683                if (psnd_dtq(cep->rcvqid, (intptr_t)input) != E_OK) {
    9784                        NET_COUNT_UDP(net_count_udp.in_err_packets, 1);
     
    10390#ifdef UDP_CFG_NON_BLOCKING
    10491
    105         else if (cep->rcv_p_dstaddr != NULL) {  /* ノンブロッキングコールでペンディング中 */
    106 
    107                 /* p_dstaddr を設定する。*/
     92        else if (cep->rcv_p_dstaddr != NULL) {  /* ノンブロッキングコールでペンディング中 */
     93
     94                /* p_dstaddr を設定する。*/
    10895                cep->rcv_p_dstaddr->portno = ntohs(udph->sport);
    10996                IN_COPY_TO_HOST(&cep->rcv_p_dstaddr->ipaddr, input);
    11097
    111                 /* データをバッファに移す。*/
     98                /* データをバッファに移す。*/
    11299                memcpy(cep->rcv_data, GET_UDP_SDU(input, off),
    113100                       (size_t)(len < cep->rcv_len ? len : cep->rcv_len));
     
    130117        else if (IS_PTR_DEFINED(cep->callback)) {
    131118
    132                 /* コールバック関数を呼び出す。*/
     119                /* コールバック関数を呼び出す。*/
    133120                cep->cb_netbuf = input;
    134121
     
    139126#endif
    140127                /*
    141                  *  ネットワークバッファがそのままであれば、コールバック関数å†
    142 ã§
    143                  *  データを読み出さなかったことになるので、捨てる。
     128                 *  ネットワークバッファがそのままであれば、コールバック関数内で
     129                 *  データを読み出さなかったことになるので、捨てる。
    144130                 */
    145131                if (cep->cb_netbuf != NULL)
     
    157143
    158144/*
    159  *  udp_input -- UDP のå
    160 ¥åŠ›é–¢æ•°
     145 *  udp_input -- UDP の入力関数
    161146 */
    162147
     
    179164        NET_COUNT_MIB(udp_stats.udpInDatagrams, 1);
    180165
    181         /* ヘッダ長をチェックする。*/
     166        /* ヘッダ長をチェックする。*/
    182167        if (input->len < hlen + UDP_HDR_SIZE)
    183168                goto buf_rel;
     
    185170        udph = (T_UDP_HDR *)(input->buf + *offp);
    186171
    187         /* データグラム長をチェックする */
     172        /* データグラム長をチェックする */
    188173        ulen  = ntohs(udph->ulen);
    189174        if (ulen != input->len - hlen)
    190175                goto buf_rel;
    191176
    192         /* 宛å
    193 ˆãƒãƒ¼ãƒˆãŒ 0 のデータグラムは破棄する。RFC768 */
     177        /* 宛先ポートが 0 のデータグラムは破棄する。RFC768 */
    194178        if (udph->dport == 0)
    195179                goto buf_rel;
     
    197181#ifdef UDP_CFG_IN_CHECKSUM
    198182
    199         /* チェックサムをチェックする */
     183        /* チェックサムをチェックする */
    200184        if (udph->sum && IN_CKSUM(input, IPPROTO_UDP, *offp, ulen) != 0)
    201185                goto buf_rel;
     
    207191#if TNUM_UDP4_CEPID > 0
    208192
    209         /* UDP 通信端点を得る。*/
     193        /* UDP 通信端点を得る。*/
    210194        cep = udp4_find_cep(input, *offp);
    211195
     
    221205#else   /* of #if TNUM_UDP4_CEPID > 0 */
    222206
    223         cep = 0;        /* warning 回避用のダミー */
     207        cep = 0;        /* warning 回避用のダミー */
    224208        if ((cep6 = udp6_find_cep(input, *offp)) != NULL)
    225209                udp6_input_select(cep6, input, *offp);
     
    233217#else   /* of #if defined(_IP6_CFG) && defined(_IP4_CFG) && API_PROTO == API_PROTO_IPV4 */
    234218
    235         /* UDP 通信端点を得る。*/
     219        /* UDP 通信端点を得る。*/
    236220        cep = UDP_FIND_CEP(input, *offp);
    237221
  • asp3_gr_sakura/trunk/tinet/netinet/udpn_output.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    7866
    7967/*
    80  *  udp_output -- UDP の出力関数
    81  *  ノンブロッキングコールを組み込んだとき使用する。
     68 *  udp_output -- UDP の出力関数
     69 *  ノンブロッキングコールを組み込んだとき使用する。
    8270 */
    8371
     
    9381#endif  /* of #ifdef UDP_CFG_OUT_CHECKSUM */
    9482
    95         /* IP データグラムを割り当てる。*/
     83        /* IP データグラムを割り当てる。*/
    9684        if ((error = IN_GET_DATAGRAM(&output, (uint_t)(UDP_HDR_SIZE + cep->snd_len), 0,
    9785                                     &cep->snd_p_dstaddr->ipaddr,
     
    10290                }
    10391
    104         /* UDP ヘッダにæƒ
    105 å ±ã‚’設定する。*/
     92        /* UDP ヘッダに情報を設定する。*/
    10693        udph            = GET_UDP_HDR(output, IF_IP_UDP_HDR_OFFSET(output));
    10794        udph->sport     = htons(cep->myaddr.portno);
     
    11097        udph->sum       = 0;
    11198
    112         /* データをコピーする。*/
     99        /* データをコピーする。*/
    113100        memcpy((void*)GET_UDP_SDU(output, IF_IP_UDP_HDR_OFFSET(output)),
    114101               cep->snd_data, (size_t)cep->snd_len);
     
    119106                       (uint_t)(UDP_HDR_SIZE + cep->snd_len));
    120107
    121         /* 計算したチェックサムの値が 0 なら 0xffff をå
    122 ¥ã‚Œã‚‹ã€‚*/
     108        /* 計算したチェックサムの値が 0 なら 0xffff を入れる。*/
    123109        if (sum == 0)
    124110                sum = UINT_C(0xffff);
     
    127113#endif/* of #ifdef UDP_CFG_OUT_CHECKSUM */
    128114
    129         /* ネットワークバッファ長を調整する。*/
     115        /* ネットワークバッファ長を調整する。*/
    130116        output->len = (uint16_t)(IF_IP_UDP_HDR_SIZE(output) + cep->snd_len);
    131117
    132         /* ネットワーク層 (IP) の出力関数を呼び出す。*/
     118        /* ネットワーク層 (IP) の出力関数を呼び出す。*/
    133119        if ((error = IP_OUTPUT(output, TMO_UDP_OUTPUT)) != E_OK)
    134120                goto err_ret;
  • asp3_gr_sakura/trunk/tinet/netinet/udpn_subr.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    7866
    7967/*
    80  *  udp_alloc_auto_port -- 自動割り当てポート番号を設定する。
     68 *  udp_alloc_auto_port -- 自動割り当てポート番号を設定する。
    8169 */
    8270
     
    114102
    115103/*
    116  *  udp_alloc_port -- 指定されたポート番号を設定する。
     104 *  udp_alloc_port -- 指定されたポート番号を設定する。
    117105 */
    118106
     
    134122
    135123/*
    136  *  udp_find_cep -- ポート番号から UDP 通信端点を得る。
     124 *  udp_find_cep -- ポート番号から UDP 通信端点を得る。
    137125 */
    138126
     
    146134       
    147135        /*
    148          *  IP アドレスとポート番号が一致する通信端点を探索する。
     136         *  IP アドレスとポート番号が一致する通信端点を探索する。
    149137         */
    150138        for (cep = &UDP_CEP[TMAX_UDP_CEPID]; cep -- != UDP_CEP; ) {
     
    159147
    160148/*
    161  *  udp_notify -- ICMP エラーの処理
     149 *  udp_notify -- ICMP エラーの処理
    162150 */
    163151
  • asp3_gr_sakura/trunk/tinet/netinet/udpn_usrreq.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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)
  • asp3_gr_sakura/trunk/tinet/netinet/udpn_usrreq_nblk.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r317 r318  
    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 è²¬ã™ã‚‹ã“と.
     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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8371
    8472/*
    85  *  udp_can_snd -- ペンディングしている送信のキャンセル
     73 *  udp_can_snd -- ペンディングしている送信のキャンセル
    8674 */
    8775
     
    8977UDP_CAN_SND (T_UDP_CEP *cep, ER error)
    9078{
    91         if (cep->snd_p_dstaddr != NULL) {       /* ノンブロッキングコールでペンディング中 */
     79        if (cep->snd_p_dstaddr != NULL) {       /* ノンブロッキングコールでペンディング中 */
    9280                if (IS_PTR_DEFINED(cep->callback))
    9381
     
    10189                cep->snd_p_dstaddr = NULL;
    10290                }
    103         else if (cep->snd_tskid != TA_NULL) {   /* 非ノンブロッキングコールでペンディング中 */
     91        else if (cep->snd_tskid != TA_NULL) {   /* 非ノンブロッキングコールでペンディング中 */
    10492
    10593#ifdef UDP_CFG_EXTENTIONS
    10694
    107                 /* å¾
    108 ã¡ä¸­ã«ç™ºç”Ÿã—たエラーæƒ
    109 å ±ã‚’設定する。*/
     95                /* 待ち中に発生したエラー情報を設定する。*/
    11096                cep->error = error;
    11197
     
    115101                cep->snd_tskid = TA_NULL;
    116102                }
    117         else                                    /* どちらでもないならペンディングしていない */
     103        else                                    /* どちらでもないならペンディングしていない */
    118104                error = EV_NOPND;
    119105
     
    126112
    127113/*
    128  *  udp_can_rcv -- ペンディングしている受信のキャンセル
     114 *  udp_can_rcv -- ペンディングしている受信のキャンセル
    129115 */
    130116
     
    132118UDP_CAN_RCV (T_UDP_CEP *cep, ER error)
    133119{
    134         if (cep->rcv_p_dstaddr != NULL) {       /* ノンブロッキングコールでペンディング中 */
     120        if (cep->rcv_p_dstaddr != NULL) {       /* ノンブロッキングコールでペンディング中 */
    135121                if (IS_PTR_DEFINED(cep->callback))
    136122
     
    144130                cep->rcv_p_dstaddr = NULL;
    145131                }
    146         else if (cep->rcv_tskid != TA_NULL) {   /* 非ノンブロッキングコールでペンディング中 */
     132        else if (cep->rcv_tskid != TA_NULL) {   /* 非ノンブロッキングコールでペンディング中 */
    147133
    148134#ifdef UDP_CFG_EXTENTIONS
    149135
    150                 /* å¾
    151 ã¡ä¸­ã«ç™ºç”Ÿã—たエラーæƒ
    152 å ±ã‚’設定する。*/
     136                /* 待ち中に発生したエラー情報を設定する。*/
    153137                cep->error = error;
    154138
     
    158142                cep->rcv_tskid = TA_NULL;
    159143                }
    160         else                                    /* どちらでもないならペンディングしていない */
     144        else                                    /* どちらでもないならペンディングしていない */
    161145                error = EV_NOPND;
    162146
     
    169153
    170154/*
    171  *  udp_snd_dat -- パケットの送信【標準機能】
     155 *  udp_snd_dat -- パケットの送信【標準機能】
    172156 */
    173157
     
    178162        ER              error;
    179163
    180         /* p_dstaddr または data が NULL ならエラー */
     164        /* p_dstaddr または data が NULL ならエラー */
    181165        if (p_dstaddr == NULL || data == NULL)
    182166                return E_PAR;
    183167
    184         /* データ長をチェックする。*/
     168        /* データ長をチェックする。*/
    185169        if (len < 0 || len + IP_HDR_SIZE + UDP_HDR_SIZE > IF_MTU)
    186170                return E_PAR;
     
    189173
    190174        /*
    191          * API が IPv6 で IPv4 射影アドレスが認められていないのにもかかわらず、
    192          * IPv4 射影アドレスが指定されたらエラー
     175         * API が IPv6 で IPv4 射影アドレスが認められていないのにもかかわらず、
     176         * IPv4 射影アドレスが指定されたらエラー
    193177         */
    194178        if (in6_is_addr_ipv4mapped(&p_dstaddr->ipaddr))
     
    197181#endif  /* of #if (API_PROTO == API_PROTO_IPV6) && !defined(DAPI_CFG_IP4MAPPED_ADDR) */
    198182
    199         /* UDP 通信端点 ID をチェックする。*/
     183        /* UDP 通信端点 ID をチェックする。*/
    200184        if (!VALID_UDP_CEPID(cepid))
    201185                return E_ID;
    202186
    203         /* UDP 通信端点を得る。*/
     187        /* UDP 通信端点を得る。*/
    204188        cep = GET_UDP_CEP(cepid);
    205189
    206         /* UDP 通信端点をチェックする。*/
     190        /* UDP 通信端点をチェックする。*/
    207191        if (!VALID_UDP_CEP(cep))
    208192                return E_NOEXS;
    209193
    210194        /*
    211          *  自ポート番号が UDP_PORTANY なら、自動で割り当てる。
     195         *  自ポート番号が UDP_PORTANY なら、自動で割り当てる。
    212196         */
    213197        if (cep->myaddr.portno == UDP_PORTANY) {
     
    217201
    218202        /*
    219          * タイムアウトをチェックする。
     203         * タイムアウトをチェックする。
    220204         */
    221         if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
    222 
    223                 /* 通信端点をロックする。*/
     205        if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
     206
     207                /* 通信端点をロックする。*/
    224208                syscall(wai_sem(cep->semid_lock));
    225209
    226210                if (cep->snd_p_dstaddr != NULL) {
    227211
    228                         /* ノンブロッキングコールでペンディング中 */
     212                        /* ノンブロッキングコールでペンディング中 */
    229213                        error = E_QOVR;
    230214
    231                         /* 通信端点をロックを解除する。*/
     215                        /* 通信端点をロックを解除する。*/
    232216                        syscall(sig_sem(cep->semid_lock));
    233217                        }
    234218                else if (cep->snd_tskid != TA_NULL) {
    235219
    236                         /* 非ノンブロッキングコールでペンディング中 */
    237                         error = E_OBJ;
    238 
    239                         /* 通信端点をロックを解除する。*/
     220                        /* 非ノンブロッキングコールでペンディング中 */
     221                        error = E_OBJ;
     222
     223                        /* 通信端点をロックを解除する。*/
    240224                        syscall(sig_sem(cep->semid_lock));
    241225                        }
     
    246230                        cep->snd_len    = len;
    247231
    248                         /* 通信端点をロックを解除する。*/
     232                        /* 通信端点をロックを解除する。*/
    249233                        syscall(sig_sem(cep->semid_lock));
    250234
     
    254238                        }
    255239                }
    256         else {                          /* 非ノンブロッキングコール */
     240        else {                          /* 非ノンブロッキングコール */
    257241       
    258                 /* 通信端点をロックする。*/
     242                /* 通信端点をロックする。*/
    259243                syscall(wai_sem(cep->semid_lock));
    260244
    261245                if (cep->snd_p_dstaddr != NULL) {
    262246
    263                         /* ノンブロッキングコールでペンディング中 */
    264                         error = E_OBJ;
    265 
    266                         /* 通信端点をロックを解除する。*/
     247                        /* ノンブロッキングコールでペンディング中 */
     248                        error = E_OBJ;
     249
     250                        /* 通信端点をロックを解除する。*/
    267251                        syscall(sig_sem(cep->semid_lock));
    268252                        }
    269253                else if (cep->snd_tskid != TA_NULL) {
    270254
    271                         /* 非ノンブロッキングコールでペンディング中 */
     255                        /* 非ノンブロッキングコールでペンディング中 */
    272256                        error = E_QOVR;
    273257
    274                         /* 通信端点をロックを解除する。*/
     258                        /* 通信端点をロックを解除する。*/
    275259                        syscall(sig_sem(cep->semid_lock));
    276260                        }
    277261                else {
    278262
    279                         /* 現在のタスク識別子を記録する。*/
     263                        /* 現在のタスク識別子を記録する。*/
    280264                        get_tid(&(cep->snd_tskid));
    281265
    282                         /* 通信端点をロックを解除する。*/
    283                         syscall(sig_sem(cep->semid_lock));
    284 
    285                         /* パケットを送信する。*/
     266                        /* 通信端点をロックを解除する。*/
     267                        syscall(sig_sem(cep->semid_lock));
     268
     269                        /* パケットを送信する。*/
    286270                        error = UDP_SEND_DATA(cep, p_dstaddr, data, len, tmout);
    287271                        }
     
    296280
    297281/*
    298  *  udp_rcv_dat -- パケットの受信【標準機能】
     282 *  udp_rcv_dat -- パケットの受信【標準機能】
    299283 */
    300284
     
    308292        uint_t          ulen, uhoff;
    309293
    310         /* p_dstaddr または data が NULL か、len < 0 ならエラー */
     294        /* p_dstaddr または data が NULL か、len < 0 ならエラー */
    311295        if (p_dstaddr == NULL || data == NULL || len < 0)
    312296                return E_PAR;
    313297
    314         /* UDP 通信端点 ID をチェックする。*/
     298        /* UDP 通信端点 ID をチェックする。*/
    315299        if (!VALID_UDP_CEPID(cepid))
    316300                return E_ID;
    317301
    318         /* UDP 通信端点を得る。*/
     302        /* UDP 通信端点を得る。*/
    319303        cep = GET_UDP_CEP(cepid);
    320304
    321         /* UDP 通信端点をチェックする。*/
     305        /* UDP 通信端点をチェックする。*/
    322306        if (!VALID_UDP_CEP(cep))
    323307                return E_NOEXS;
    324308
    325309        /*
    326          * タイムアウトをチェックする。
     310         * タイムアウトをチェックする。
    327311         */
    328312
    329         if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
    330 
    331                 /* 通信端点をロックする。*/
     313        if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
     314
     315                /* 通信端点をロックする。*/
    332316                syscall(wai_sem(cep->semid_lock));
    333317
    334318                if (cep->rcv_p_dstaddr != NULL)
    335319
    336                         /* ノンブロッキングコールでペンディング中 */
     320                        /* ノンブロッキングコールでペンディング中 */
    337321                        error = E_QOVR;
    338322
    339323                else if (cep->rcv_tskid != TA_NULL)
    340324
    341                         /* 非ノンブロッキングコールでペンディング中 */
     325                        /* 非ノンブロッキングコールでペンディング中 */
    342326                        error = E_OBJ;
    343327                else {
     
    348332                        }
    349333
    350                 /* 通信端点をロックを解除する。*/
     334                /* 通信端点をロックを解除する。*/
    351335                syscall(sig_sem(cep->semid_lock));
    352336                return error;
    353337                }
    354         else {                          /* 非ノンブロッキングコール */
    355 
    356                 /* 通信端点をロックする。*/
     338        else {                          /* 非ノンブロッキングコール */
     339
     340                /* 通信端点をロックする。*/
    357341                syscall(wai_sem(cep->semid_lock));
    358342
    359343                if (cep->rcv_p_dstaddr != NULL) {
    360344
    361                         /* ノンブロッキングコールでペンディング中 */
    362                         error = E_OBJ;
    363 
    364                         /* 通信端点をロックを解除する。*/
     345                        /* ノンブロッキングコールでペンディング中 */
     346                        error = E_OBJ;
     347
     348                        /* 通信端点をロックを解除する。*/
    365349                        syscall(sig_sem(cep->semid_lock));
    366350                        }
    367351                else if (cep->rcv_tskid != TA_NULL) {
    368352
    369                         /* 非ノンブロッキングコールでペンディング中 */
     353                        /* 非ノンブロッキングコールでペンディング中 */
    370354                        error = E_QOVR;
    371355
    372                         /* 通信端点をロックを解除する。*/
     356                        /* 通信端点をロックを解除する。*/
    373357                        syscall(sig_sem(cep->semid_lock));
    374358                        }
    375359                else {
    376360
    377                         /* 現在のタスク識別子を記録する。*/
     361                        /* 現在のタスク識別子を記録する。*/
    378362                        get_tid(&(cep->rcv_tskid));
    379363
    380                         /* 通信端点をロックを解除する。*/
    381                         syscall(sig_sem(cep->semid_lock));
    382 
    383                         /* å
    384 ¥åŠ›ãŒã‚るまでå¾
    385 ã¤ã€‚*/
     364                        /* 通信端点をロックを解除する。*/
     365                        syscall(sig_sem(cep->semid_lock));
     366
     367                        /* 入力があるまで待つ。*/
    386368                        if (cep->cb_netbuf != NULL) {
    387369
    388370                                /*
    389                                  *  ここにくる場合は、コールバック関数の中から
    390                                  *  udp_rcv_dat を呼び出していることになり、
    391                                  *  すでにå
    392 ¥åŠ›æ¸ˆã¿ã§ã‚る。
     371                                 *  ここにくる場合は、コールバック関数の中から
     372                                 *  udp_rcv_dat を呼び出していることになり、
     373                                 *  すでに入力済みである。
    393374                                 */
    394375                                input = cep->cb_netbuf;
     
    400381                                }
    401382
    402                         /* p_dstaddr を設定する。*/
     383                        /* p_dstaddr を設定する。*/
    403384                        uhoff = (uint_t)GET_UDP_HDR_OFFSET(input);
    404385                        udph = GET_UDP_HDR(input, uhoff);
     
    406387                        IN_COPY_TO_HOST(&p_dstaddr->ipaddr, input);
    407388
    408                         /* データをバッファに移す。*/
     389                        /* データをバッファに移す。*/
    409390                        ulen = ntohs(udph->ulen);
    410391                        if (ulen - UDP_HDR_SIZE > len)
Note: See TracChangeset for help on using the changeset viewer.