Ignore:
Timestamp:
Aug 23, 2017, 9:27:43 AM (7 years ago)
Author:
coas-nagasima
Message:

文字コードを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/tinet/net/ppp_lcp.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r270 r321  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     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$
     
    112100
    113101/*
    114  *  関数
     102 *  関数
    115103 */
    116104
     
    130118
    131119/*
    132  * FSM から呼出されるコールバック関数
    133  */
    134 
    135 static void  lcp_resetci(T_PPP_FSM *fsm);       /* 自構成æƒ
    136 å ±ã‚’リセットする。     */
    137 static int_t lcp_cilen  (T_PPP_FSM *fsm);       /* 構成æƒ
    138 å ±ã®é•·ã•ã‚’返す。                */
     120 * FSM から呼出されるコールバック関数
     121 */
     122
     123static void  lcp_resetci(T_PPP_FSM *fsm);       /* 自構成情報をリセットする。        */
     124static int_t lcp_cilen  (T_PPP_FSM *fsm);       /* 構成情報の長さを返す。          */
    139125static void  lcp_addci  (T_PPP_FSM *fsm, T_NET_BUF *output);
    140                                                 /* 自構成æƒ
    141 å ±ã‚’追加する。           */
     126                                                /* 自構成情報を追加する。          */
    142127static bool_t lcp_ackci (T_PPP_FSM *fsm, T_NET_BUF *input);
    143                                                 /* ACK を受信したときの処理   */
     128                                                /* ACK を受信したときの処理       */
    144129static bool_t lcp_nakci (T_PPP_FSM *fsm, T_NET_BUF *input);
    145                                                 /* NAK を受信したときの処理   */
     130                                                /* NAK を受信したときの処理       */
    146131static bool_t lcp_rejci (T_PPP_FSM *fsm, T_NET_BUF *input);
    147                                                 /* REJ を受信したときの処理   */
     132                                                /* REJ を受信したときの処理       */
    148133static int_t lcp_reqci  (T_PPP_FSM *fsm, T_NET_BUF *input, T_NET_BUF *output);
    149                                                 /* 相手の構成æƒ
    150 å ±ã‚’確認する。   */
    151 static void lcp_up      (T_PPP_FSM *fsm);       /* リンク接続を確立する。            */
    152 static void lcp_starting(T_PPP_FSM *fsm);       /* 下位層を開始する。          */
     134                                                /* 相手の構成情報を確認する。        */
     135static void lcp_up      (T_PPP_FSM *fsm);       /* リンク接続を確立する。          */
     136static void lcp_starting(T_PPP_FSM *fsm);       /* 下位層を開始する。            */
    153137static bool_t lcp_extcode       (T_PPP_FSM *fsm, uint8_t code, uint8_t id, T_NET_BUF *input);
    154                                                 /* 不明な CP を受信したときの処理  */
     138                                                /* 不明な CP を受信したときの処理    */
    155139static void lcp_rprotrej(T_PPP_FSM *fsm, T_NET_BUF *input);
    156                                                 /* Proto-REJ を受信したときの処理     */
    157 /*
    158  *  変数
    159  */
    160 
    161 static T_LCP_CONFIGS lcp_def_cfg = {            /* 構成æƒ
    162 å ±ã®åˆæœŸè¨­å®šå€¤           */
     140                                                /* Proto-REJ を受信したときの処理 */
     141/*
     142 *  変数
     143 */
     144
     145static T_LCP_CONFIGS lcp_def_cfg = {            /* 構成情報の初期設定値           */
    163146        DEF_REMOTE_ACCM,                        /* ACCM                         */
    164147
    165148#ifdef LCP_CFG_MAGIC
    166149
    167         ULONG_C(0),                             /* マジック番号                   */
     150        ULONG_C(0),                             /* マジック番号                       */
    168151
    169152#endif  /* of #ifdef LCP_CFG_MAGIC */
    170153
    171154        DEF_PPP_MTU,                            /* MRU                          */
    172         UINT_C(0),                              /* オプションフラグ             */
     155        UINT_C(0),                              /* オプションフラグ             */
    173156        };
    174157
    175 static T_LCP_CONFIGS lcp_local_def_cfg = {      /* 自構成æƒ
    176 å ±ã®è¦å®šå€¤         */
     158static T_LCP_CONFIGS lcp_local_def_cfg = {      /* 自構成情報の規定値            */
    177159        DEF_LOCAL_ACCM,                         /* ACCM                         */
    178160
    179161#ifdef LCP_CFG_MAGIC
    180162
    181         ULONG_C(0),                             /* マジック番号                   */
     163        ULONG_C(0),                             /* マジック番号                       */
    182164
    183165#endif  /* of #ifdef LCP_CFG_MAGIC */
    184166
    185167        DEF_PPP_MTU,                            /* MRU                          */
    186         DEF_LCP_LOCAL_CFGS,                     /* オプションフラグ             */
     168        DEF_LCP_LOCAL_CFGS,                     /* オプションフラグ             */
    187169        };
    188170
    189 static T_LCP_CONFIGS lcp_local_neg_cfg;         /* ネゴ中の自構成æƒ
    190 å ±             */
    191 
    192 static T_LCP_CONFIGS lcp_remote_neg_cfg;        /* ネゴ中の相手の構成æƒ
    193 å ±             */
     171static T_LCP_CONFIGS lcp_local_neg_cfg;         /* ネゴ中の自構成情報            */
     172
     173static T_LCP_CONFIGS lcp_remote_neg_cfg;        /* ネゴ中の相手の構成情報          */
    194174
    195175#if DEF_LCP_LOCAL_CFGS & LCP_CFG_MAGIC
     
    202182
    203183/*
    204  *  å
    205 ¨åŸŸå¤‰æ•°
     184 *  全域変数
    206185 */
    207186
    208187T_PPP_FSM_CALLBACKS lcp_callbacks = {
    209         lcp_resetci,                    /* 自構成æƒ
    210 å ±ã‚’リセットする。     */
    211         lcp_cilen,                      /* 構成æƒ
    212 å ±ã®é•·ã•ã‚’返す。                */
    213         lcp_addci,                      /* 自構成æƒ
    214 å ±ã‚’追加する。           */
    215         lcp_ackci,                      /* ACK を受信したときの処理   */
    216         lcp_nakci,                      /* NAK を受信したときの処理   */
    217         lcp_rejci,                      /* REJ を受信したときの処理   */
    218         lcp_reqci,                      /* 相手の構成æƒ
    219 å ±ã‚’確認する。   */
    220         lcp_up,                         /* リンク接続を確立する。            */
    221         lcp_down,                       /* リンク接続を解放する。            */
    222         lcp_starting,                   /* 下位層を開始する。          */
    223         lcp_finished,                   /* 下位層を終了する。          */
    224         NULL,                           /* 再送する。                      */
    225         lcp_extcode,                    /* 不明な CP を受信したときの処理  */
     188        lcp_resetci,                    /* 自構成情報をリセットする。        */
     189        lcp_cilen,                      /* 構成情報の長さを返す。          */
     190        lcp_addci,                      /* 自構成情報を追加する。          */
     191        lcp_ackci,                      /* ACK を受信したときの処理       */
     192        lcp_nakci,                      /* NAK を受信したときの処理       */
     193        lcp_rejci,                      /* REJ を受信したときの処理       */
     194        lcp_reqci,                      /* 相手の構成情報を確認する。        */
     195        lcp_up,                         /* リンク接続を確立する。          */
     196        lcp_down,                       /* リンク接続を解放する。          */
     197        lcp_starting,                   /* 下位層を開始する。            */
     198        lcp_finished,                   /* 下位層を終了する。            */
     199        NULL,                           /* 再送する。                        */
     200        lcp_extcode,                    /* 不明な CP を受信したときの処理    */
    226201        };
    227202
    228203T_PPP_FSM lcp_fsm = {
    229         &lcp_callbacks,                 /* コールバック関数             */
    230         PPP_LCP,                        /* プロトコル                      */
     204        &lcp_callbacks,                 /* コールバック関数             */
     205        PPP_LCP,                        /* プロトコル                        */
    231206        };
    232207
    233208T_PPP_PROTENT lcp_protent = {
    234209        PPP_LCP,
    235         lcp_init,                       /* 初期化                    */
    236         lcp_input,                      /* å
    237 ¥åŠ›                            */
    238         lcp_protrej,                    /* Proto-REJ 受信処理               */
    239         NULL,                           /* 下位層を起動する             */
    240         lcp_lowerdown,                  /* 下位層を停止する             */
    241         NULL,                           /* オープンする                   */
    242         lcp_close,                      /* クローズする                   */
    243         NULL,                           /* データå
    244 ¥åŠ›                    */
     210        lcp_init,                       /* 初期化                  */
     211        lcp_input,                      /* 入力                           */
     212        lcp_protrej,                    /* Proto-REJ 受信処理               */
     213        NULL,                           /* 下位層を起動する             */
     214        lcp_lowerdown,                  /* 下位層を停止する             */
     215        NULL,                           /* オープンする                       */
     216        lcp_close,                      /* クローズする                       */
     217        NULL,                           /* データ入力                        */
    245218        };
    246219
    247 T_LCP_CONFIGS lcp_local_ack_cfg;        /* 相手に許可されたの自構成æƒ
    248 å ±     */
    249 T_LCP_CONFIGS lcp_remote_ack_cfg;       /* 相手に許可した構成æƒ
    250 å ±             */
    251 
    252 /*
    253  *  lcp_init -- LCP モジュールの初期化
     220T_LCP_CONFIGS lcp_local_ack_cfg;        /* 相手に許可されたの自構成情報       */
     221T_LCP_CONFIGS lcp_remote_ack_cfg;       /* 相手に許可した構成情報          */
     222
     223/*
     224 *  lcp_init -- LCP モジュールの初期化
    254225 */
    255226
     
    261232
    262233/*
    263  *  lcp_input -- LCP å
    264 ¥åŠ›
     234 *  lcp_input -- LCP 入力
    265235 */
    266236
     
    274244
    275245/*
    276  *  lcp_resetci -- LCPの構成æƒ
    277 å ±ã‚’リセットする。
     246 *  lcp_resetci -- LCPの構成情報をリセットする。
    278247 */
    279248
     
    287256#endif  /* of #ifdef LCP_CFG_MAGIC */
    288257
    289         /* 自構成æƒ
    290 å ±ã®åˆæœŸè¨­å®š */
     258        /* 自構成情報の初期設定 */
    291259        lcp_local_neg_cfg       = lcp_local_def_cfg;
    292260        lcp_local_ack_cfg       = lcp_def_cfg;
    293261
    294         /* 相手の構成æƒ
    295 å ±ã®åˆæœŸè¨­å®š */
     262        /* 相手の構成情報の初期設定 */
    296263        lcp_remote_neg_cfg      = lcp_def_cfg;
    297264        lcp_remote_ack_cfg      = lcp_def_cfg;
     
    309276
    310277/*
    311  *  lcp_cilen -- 構成æƒ
    312 å ±ã®é•·ã•ã‚’返す。
     278 *  lcp_cilen -- 構成情報の長さを返す。
    313279 */
    314280
     
    341307
    342308        if (lcp_local_neg_cfg.options & LCP_CFG_PCOMP)
    343                 cilen += sizeof(T_PPP_CI_HDR);                  /* プロトコル圧縮 */
     309                cilen += sizeof(T_PPP_CI_HDR);                  /* プロトコル圧縮 */
    344310
    345311#endif  /* of #ifdef LCP_CFG_PCOMP */
     
    348314
    349315        if (lcp_local_neg_cfg.options & LCP_CFG_ACCOMP)
    350                 cilen += sizeof(T_PPP_CI_HDR);                  /* アドレス・制御圧縮 */
     316                cilen += sizeof(T_PPP_CI_HDR);                  /* アドレス・制御圧縮 */
    351317
    352318#endif  /* of #ifdef LCP_CFG_ACCOMP */
     
    356322
    357323/*
    358  *  lcp_addci -- LCPの構成æƒ
    359 å ±ã‚’追加する。
     324 *  lcp_addci -- LCPの構成情報を追加する。
    360325 */
    361326
     
    367332        buf = output->buf + sizeof(T_PPP_HDR) + sizeof(T_PPP_CP_HDR);
    368333
    369         /* MRU オプションを追加する。 */
     334        /* MRU オプションを追加する。 */
    370335        if (lcp_local_neg_cfg.options & LCP_CFG_MRU) {
    371336                *buf ++ = LCP_CIT_MRU;
     
    375340                }
    376341
    377         /* ACCM オプションを追加する。 */
     342        /* ACCM オプションを追加する。 */
    378343        if (lcp_local_neg_cfg.options & LCP_CFG_ACCM) {
    379344                *buf ++ = LCP_CIT_ACCM;
     
    385350#ifdef LCP_CFG_MAGIC
    386351
    387         /* Magic Number オプションを追加する。 */
     352        /* Magic Number オプションを追加する。 */
    388353        if (lcp_local_neg_cfg.options & LCP_CFG_MAGIC) {
    389354                *buf ++ = LCP_CIT_MAGIC;
     
    397362#ifdef LCP_CFG_PAP
    398363
    399         /* 認証プロトコルオプションを追加する。 */
     364        /* 認証プロトコルオプションを追加する。 */
    400365        if (lcp_local_neg_cfg.options & LCP_CFG_PAP) {
    401366                *buf ++ = LCP_CIT_AUTH;
     
    409374#ifdef LCP_CFG_PCOMP
    410375
    411         /* プロトコル圧縮オプションを追加する。 */
     376        /* プロトコル圧縮オプションを追加する。 */
    412377        if (lcp_local_neg_cfg.options & LCP_CFG_PCOMP) {
    413378                *buf ++ = LCP_CIT_PCOMP;
     
    419384#ifdef LCP_CFG_ACCOMP
    420385
    421         /* アドレス・制御圧縮オプションを追加する。 */
     386        /* アドレス・制御圧縮オプションを追加する。 */
    422387        if (lcp_local_neg_cfg.options & LCP_CFG_ACCOMP) {
    423388                *buf ++ = LCP_CIT_ACCOMP;
     
    429394
    430395/*
    431  *  lcp_ackci -- ACK を受信したときの処理
     396 *  lcp_ackci -- ACK を受信したときの処理
    432397 *
    433  *      戻り値:      TURE  ACK は正常
    434  *              false ACK は異常
     398 *      戻り値:    TURE  ACK は正常
     399 *              false ACK は異常
    435400 */
    436401
     
    445410
    446411        /*
    447          *  構成æƒ
    448 å ±ã¯é€ä¿¡ã—た順に完å
    449 ¨ã«ä¸€è‡´ã—なければならない。
    450          *  従って、lcp_addci で作成した順に解析する。
     412         *  構成情報は送信した順に完全に一致しなければならない。
     413         *  従って、lcp_addci で作成した順に解析する。
    451414         */
    452415
    453         /* MRU オプションを解析する。 */
     416        /* MRU オプションを解析する。 */
    454417        if (lcp_local_neg_cfg.options & LCP_CFG_MRU) {
    455418                if (len < sizeof(T_PPP_CI_HDR) + sizeof(uint16_t)       ||
     
    462425                }
    463426
    464         /* ACCM オプションを解析する。 */
     427        /* ACCM オプションを解析する。 */
    465428        if (lcp_local_neg_cfg.options & LCP_CFG_ACCM) {
    466429                if (len < sizeof(T_PPP_CI_HDR) + sizeof(uint32_t)       ||
     
    475438#ifdef LCP_CFG_MAGIC
    476439
    477         /* Magic Number オプションを解析する。 */
     440        /* Magic Number オプションを解析する。 */
    478441        if (lcp_local_neg_cfg.options & LCP_CFG_MAGIC) {
    479442                if (len < sizeof(T_PPP_CI_HDR) + sizeof(uint32_t)       ||
     
    490453#ifdef LCP_CFG_PAP
    491454
    492         /* 認証プロトコルオプションを解析する。 */
     455        /* 認証プロトコルオプションを解析する。 */
    493456        if (lcp_local_neg_cfg.options & LCP_CFG_PAP) {
    494457                if (len < sizeof(T_PPP_CI_HDR) + sizeof(uint16_t)       ||
     
    505468#ifdef LCP_CFG_PCOMP
    506469
    507         /* プロトコル圧縮オプションを解析する。 */
     470        /* プロトコル圧縮オプションを解析する。 */
    508471        if (lcp_local_neg_cfg.options & LCP_CFG_PCOMP) {
    509472                if (len < sizeof(T_PPP_CI_HDR)                  ||
     
    518481#ifdef LCP_CFG_ACCOMP
    519482
    520         /* アドレス・制御圧縮オプションを解析する。 */
     483        /* アドレス・制御圧縮オプションを解析する。 */
    521484        if (lcp_local_neg_cfg.options & LCP_CFG_ACCOMP) {
    522485                if (len < sizeof(T_PPP_CI_HDR)                  ||
     
    532495
    533496/*
    534  *  lcp_nakci -- NAK を受信したときの処理
     497 *  lcp_nakci -- NAK を受信したときの処理
    535498 *
    536  *      戻り値:      1  NAK は正常
    537  *              0  NAK は異常
     499 *      戻り値:    1  NAK は正常
     500 *              0  NAK は異常
    538501 */
    539502
     
    542505{
    543506        T_LCP_CONFIGS   new_cfg;
    544         bool_t          loop = false;   /* ループバックをチェック */
     507        bool_t          loop = false;   /* ループバックをチェック */
    545508        uint32_t        cilong;
    546509        uint16_t        cishort, len;
     
    552515        new_cfg = lcp_local_neg_cfg;
    553516
    554         /* MRU オプションを解析する。 */
     517        /* MRU オプションを解析する。 */
    555518        if (len >= sizeof(T_PPP_CI_HDR) + sizeof(uint16_t)              &&
    556519            * buf      == LCP_CIT_MRU                           &&
     
    564527                }
    565528
    566         /* ACCM オプションを解析する。 */
     529        /* ACCM オプションを解析する。 */
    567530        if (len >= sizeof(T_PPP_CI_HDR) + sizeof(uint32_t)              &&
    568531            * buf      == LCP_CIT_ACCM                          &&
     
    577540#ifdef LCP_CFG_MAGIC
    578541
    579         /* Magic Number オプションを解析する。 */
     542        /* Magic Number オプションを解析する。 */
    580543        if (len >= sizeof(T_PPP_CI_HDR) + sizeof(uint32_t)              &&
    581544            * buf      == LCP_CIT_MAGIC                         &&
     
    593556#ifdef LCP_CFG_PAP
    594557
    595         /* 認証プロトコルオプションを解析する。 */
     558        /* 認証プロトコルオプションを解析する。 */
    596559        if (len >= sizeof(T_PPP_CI_HDR) + sizeof(uint16_t)              &&
    597560            * buf      == LCP_CIT_AUTH                          &&
     
    611574#ifdef LCP_CFG_PCOMP
    612575
    613         /* プロトコル圧縮オプションを解析する。 */
     576        /* プロトコル圧縮オプションを解析する。 */
    614577        if (len >= sizeof(T_PPP_CI_HDR)                         &&
    615578            * buf      == LCP_CIT_PCOMP                         &&
     
    625588#ifdef LCP_CFG_ACCOMP
    626589
    627         /* アドレス・制御圧縮オプションを解析する。 */
     590        /* アドレス・制御圧縮オプションを解析する。 */
    628591        if (len >= sizeof(T_PPP_CI_HDR)                         &&
    629592            * buf      == LCP_CIT_ACCOMP                        &&
     
    637600#endif  /* of #ifdef LCP_CFG_ACCOMP */
    638601
    639         /* 後は無視する。*/
     602        /* 後は無視する。*/
    640603        while (len > sizeof(T_PPP_CI_HDR)) {
    641604                cilen = *(buf + 1);
     
    646609                }
    647610
    648         /* 長さが 0 でなければエラー */
     611        /* 長さが 0 でなければエラー */
    649612        if (len != 0)
    650613                return 0;
    651614
    652         /* 新しいオプションを設定する。*/
     615        /* 新しいオプションを設定する。*/
    653616        if (fsm->state != PPP_FSM_OPENED) {
    654617                if (loop) {
     
    662625
    663626/*
    664  *  lcp_rejci -- REJ を受信したときの処理
     627 *  lcp_rejci -- REJ を受信したときの処理
    665628 *
    666  *      戻り値:      1  REJ は正常
    667  *              0  REJ は異常
     629 *      戻り値:    1  REJ は正常
     630 *              0  REJ は異常
    668631 */
    669632
     
    681644        new_cfg = lcp_local_neg_cfg;
    682645
    683         /* MRU オプションを解析する。 */
     646        /* MRU オプションを解析する。 */
    684647        if (len >= sizeof(T_PPP_CI_HDR) + sizeof(uint16_t)              &&
    685648            * buf      == LCP_CIT_MRU                                   &&
     
    695658                }
    696659               
    697         /* ACCM オプションを解析する。 */
     660        /* ACCM オプションを解析する。 */
    698661        if (len >= sizeof(T_PPP_CI_HDR) + sizeof(uint32_t)              &&
    699662            * buf      == LCP_CIT_ACCM                                  &&
     
    711674#ifdef LCP_CFG_MAGIC
    712675
    713         /* Magic Number オプションを解析する。 */
     676        /* Magic Number オプションを解析する。 */
    714677        if (len >= sizeof(T_PPP_CI_HDR) + sizeof(uint32_t)              &&
    715678            * buf      == LCP_CIT_MAGIC                                 &&
     
    729692#ifdef LCP_CFG_PAP
    730693
    731         /* 認証プロトコルオプションを解析する。 */
     694        /* 認証プロトコルオプションを解析する。 */
    732695        if (len >= sizeof(T_PPP_CI_HDR) + sizeof(uint16_t)              &&
    733696            * buf      == LCP_CIT_AUTH                                  &&
     
    747710#ifdef LCP_CFG_PCOMP
    748711
    749         /* プロトコル圧縮オプションを解析する。 */
     712        /* プロトコル圧縮オプションを解析する。 */
    750713        if (len >= sizeof(T_PPP_CI_HDR)                         &&
    751714            * buf      == LCP_CIT_PCOMP                         &&
     
    761724#ifdef LCP_CFG_ACCOMP
    762725
    763         /* アドレス・制御圧縮オプションを解析する。 */
     726        /* アドレス・制御圧縮オプションを解析する。 */
    764727        if (len >= sizeof(T_PPP_CI_HDR)                         &&
    765728            * buf      == LCP_CIT_ACCOMP                        &&
     
    773736#endif  /* of #ifdef LCP_CFG_ACCOMP */
    774737
    775         /* 長さが 0 でなければエラー */
     738        /* 長さが 0 でなければエラー */
    776739        if (len != 0)
    777740                return 0;
    778741
    779         /* 新しいオプションを設定する。*/
     742        /* 新しいオプションを設定する。*/
    780743        if (fsm->state != PPP_FSM_OPENED)
    781744                lcp_local_neg_cfg = new_cfg;
     
    785748
    786749/*
    787  *  lcp_reqci -- 相手の構成æƒ
    788 å ±ã‚’解析する。
     750 *  lcp_reqci -- 相手の構成情報を解析する。
    789751 */
    790752
     
    802764
    803765        rp = ap = input->buf + sizeof(T_PPP_HDR) + sizeof(T_PPP_CP_HDR);
    804                                 /* rp: REJ、ap: ACK する CI のポインタ          */
    805                                 /* 拒否する場合は、引数 input に上書きする。   */
     766                                /* rp: REJ、ap: ACK する CI のポインタ          */
     767                                /* 拒否する場合は、引数 input に上書きする。     */
    806768        len   = input->len - (sizeof(T_PPP_HDR) + sizeof(T_PPP_CP_HDR));
    807769        np    = output->buf + sizeof(T_PPP_HDR) + sizeof(T_PPP_CP_HDR);
    808         final = PPP_CONFACK;    /* 最終的に送信するコード */
     770        final = PPP_CONFACK;    /* 最終的に送信するコード */
    809771        while (len > 0) {
    810772                code = PPP_CONFACK;
    811                 cp   = ap;      /* cp: 現在処理中の CI    */
     773                cp   = ap;      /* cp: 現在処理中の CI        */
    812774
    813775                if (len < sizeof(T_PPP_CI_HDR)) {
    814776
    815                         /* 残りが CI ヘッダより短い */
     777                        /* 残りが CI ヘッダより短い */
    816778                        syslog(LOG_WARNING, "[PPP/LCP] bad CI len: %d.", len);
    817                         cilen = len;    /* データ長が異常の場合の処置      */
    818                         len   = 0;      /* ループから抜ける。          */
     779                        cilen = len;    /* データ長が異常の場合の処置        */
     780                        len   = 0;      /* ループから抜ける。            */
    819781                        code  = PPP_CONFREJ;
    820782                        goto endswitch;
    821783                        }
    822784
    823                 type  = *ap ++; /* CI の型            */
    824                 cilen = *ap ++; /* CI の長さ         */
     785                type  = *ap ++; /* CI の型                */
     786                cilen = *ap ++; /* CI の長さ               */
    825787                if (len < cilen) {
    826788
    827                         /* 残りが CI 長より短い */
     789                        /* 残りが CI 長より短い */
    828790                        syslog(LOG_WARNING, "[PPP/LCP] bad CI len: %d.", cilen);
    829                         cilen = len;    /* データ長が異常の場合の処置      */
    830                         len   = 0;      /* ループから抜ける。          */
     791                        cilen = len;    /* データ長が異常の場合の処置        */
     792                        len   = 0;      /* ループから抜ける。            */
    831793                        code  = PPP_CONFREJ;
    832794                        goto endswitch;
     
    834796                len -= sizeof(T_PPP_CI_HDR);
    835797
    836                 /* CI の型により分岐する。*/
     798                /* CI の型により分岐する。*/
    837799                switch (type) {
    838800
    839                 case LCP_CIT_MRU:       /* 最大受信量 (Maximum Receive Unit) */
     801                case LCP_CIT_MRU:       /* 最大受信量 (Maximum Receive Unit) */
    840802
    841803#if (DEF_LCP_REMOTE_CFGS & LCP_CFG_MRU) == 0
     
    845807#else   /* of #if (DEF_LCP_REMOTE_CFGS & LCP_CFG_MRU) == 0 */
    846808
    847                         /* CI 長が、ヘッダ + 2 オクテットでなければ REJ */
     809                        /* CI 長が、ヘッダ + 2 オクテットでなければ REJ */
    848810                        if (cilen != sizeof(T_PPP_CI_HDR) + sizeof(uint16_t))
    849811                                code = PPP_CONFREJ;
     
    851813                                cishort = ntohs(*(uint16_t*)ap);
    852814
    853                                 /* 最小受信量より小さければ NAK */
     815                                /* 最小受信量より小さければ NAK */
    854816                                if (cishort < MIN_PPP_MTU) {
    855817                                        *np ++ = LCP_CIT_MRU;
     
    877839#else   /* of #if (DEF_LCP_REMOTE_CFGS & LCP_CFG_ACCM) == 0 */
    878840
    879                         /* CI 長が、ヘッダ + 4 オクテットでなければ REJ */
     841                        /* CI 長が、ヘッダ + 4 オクテットでなければ REJ */
    880842                        if (cilen != sizeof(T_PPP_CI_HDR) + sizeof(uint32_t))
    881843                                code = PPP_CONFREJ;
     
    889851                        break;
    890852
    891                 case LCP_CIT_MAGIC:     /* マジック番号 */
     853                case LCP_CIT_MAGIC:     /* マジック番号 */
    892854
    893855#if (DEF_LCP_REMOTE_CFGS & LCP_CFG_MAGIC) == 0
     
    897859#else   /* of #if (DEF_LCP_REMOTE_CFGS & LCP_CFG_MAGIC) == 0 */
    898860
    899                         /* CI 長が、ヘッダ + 4 オクテットでなければ REJ */
     861                        /* CI 長が、ヘッダ + 4 オクテットでなければ REJ */
    900862                        if (cilen != sizeof(T_PPP_CI_HDR) + sizeof(uint32_t))
    901863                                code = PPP_CONFREJ;
     
    903865                                ntoahl(cilong, ap);
    904866
    905                                 /* 番号が自分と同じなら NAK */
     867                                /* 番号が自分と同じなら NAK */
    906868                                if (cilong == lcp_local_neg_cfg.magic) {
    907869                                        cilong = net_rand();
     
    923885
    924886#ifdef LCP_CFG_PAP
    925                 /* CHAP は実è£
    926 äºˆå®š  */
    927 
    928                 case LCP_CIT_AUTH:      /* 認証プロトコル */
    929 
    930                         /* CI 長が、ヘッダ + 2 オクテットより短いときはエラー */
     887                /* CHAP は実装予定   */
     888
     889                case LCP_CIT_AUTH:      /* 認証プロトコル */
     890
     891                        /* CI 長が、ヘッダ + 2 オクテットより短いときはエラー */
    931892                        if (cilen < sizeof(T_PPP_CI_HDR) + sizeof(uint16_t))
    932893                                code = PPP_CONFREJ;
     
    934895                                cishort = ntohs(*(uint16_t*)ap);
    935896
    936                                 /* 認証プロトコルにより分岐する   */
     897                                /* 認証プロトコルにより分岐する       */
    937898                                if (cishort == PPP_PAP &&
    938899                                    cilen   == sizeof(T_PPP_CI_HDR) + sizeof(uint16_t) &&
     
    948909#ifdef LCP_CFG_PCOMP
    949910
    950                 case LCP_CIT_PCOMP:     /* プロトコル部圧縮は実è£
    951 äºˆå®š */
     911                case LCP_CIT_PCOMP:     /* プロトコル部圧縮は実装予定 */
    952912
    953913#if (DEF_LCP_REMOTE_CFGS & LCP_CFG_PCOMP) == 0
     
    957917#else   /* of #if (DEF_LCP_REMOTE_CFGS & LCP_CFG_PCOMP) == 0 */
    958918
    959                         /* CI 長が、ヘッダ長だけでなければ REJ */
     919                        /* CI 長が、ヘッダ長だけでなければ REJ */
    960920                        if (cilen != sizeof(T_PPP_CI_HDR))
    961921                                code = PPP_CONFREJ;
     
    971931#ifdef LCP_CFG_ACCOMP
    972932
    973                 case LCP_CIT_ACCOMP:    /* アドレス・制御部圧縮 */
     933                case LCP_CIT_ACCOMP:    /* アドレス・制御部圧縮 */
    974934
    975935#if (DEF_LCP_REMOTE_CFGS & LCP_CFG_ACCOMP) == 0
     
    979939#else   /* of #if (DEF_LCP_REMOTE_CFGS & LCP_CFG_ACCOMP) == 0 */
    980940
    981                         /* CI 長が、ヘッダ長だけでなければ REJ */
     941                        /* CI 長が、ヘッダ長だけでなければ REJ */
    982942                        if (cilen != sizeof(T_PPP_CI_HDR))
    983943                                code = PPP_CONFREJ;
     
    998958endswitch:
    999959                if (code == PPP_CONFNAK) {
    1000                         /* CI の型が Magic Number の場合を除いて、NAK の回数が   */
    1001                         /* 最大値 MAX_PPP_FAILURES  をè¶
    1002 ãˆãŸã‚‰æ‹’否する。        */
     960                        /* CI の型が Magic Number の場合を除いて、NAK の回数が */
     961                        /* 最大値 MAX_PPP_FAILURES  を超えたら拒否する。     */
    1003962                        if (fsm->failures >= MAX_PPP_FAILURES && type != LCP_CIT_MAGIC)
    1004963                                code = PPP_CONFREJ;
     
    1007966                        }
    1008967
    1009                 /* この CI を拒否する */
     968                /* この CI を拒否する */
    1010969                if (code == PPP_CONFREJ) {
    1011                         if (rp < cp)            /* 前に詰める。*/
     970                        if (rp < cp)            /* 前に詰める。*/
    1012971                                memcpy(rp, cp, cilen);
    1013972                        rp += cilen;
     
    1019978                }
    1020979
    1021         /* 最終的な長さを調整する。*/
     980        /* 最終的な長さを調整する。*/
    1022981        switch (final) {
    1023982        case PPP_CONFNAK:
     
    1036995
    1037996/*
    1038  *  lcp_up -- リンク接続を確立する (Phase: Establish に移行する)。
     997 *  lcp_up -- リンク接続を確立する (Phase: Establish に移行する)。
    1039998 */
    1040999
     
    10421001lcp_up (T_PPP_FSM *fsm)
    10431002{
    1044         /* 自構成æƒ
    1045 å ±ã®è¨­å®š */
     1003        /* 自構成情報の設定 */
    10461004        lcp_local_ack_cfg = lcp_local_neg_cfg;
    10471005
    1048         /* 相手の構成æƒ
    1049 å ±ã®è¨­å®š */
     1006        /* 相手の構成情報の設定 */
    10501007        lcp_remote_ack_cfg = lcp_remote_neg_cfg;
    10511008
     
    10601017
    10611018/*
    1062  *  lcp_starting -- 下位層を開始する。
     1019 *  lcp_starting -- 下位層を開始する。
    10631020 */
    10641021
     
    10701027
    10711028/*
    1072  *  lcp_extcode -- LCP 特有の CP を受信したときの処理
     1029 *  lcp_extcode -- LCP 特有の CP を受信したときの処理
    10731030 */
    10741031
     
    11271084
    11281085/*
    1129  *  lcp_rprotrej -- Proto-REJ を受信したときの処理
     1086 *  lcp_rprotrej -- Proto-REJ を受信したときの処理
    11301087 */
    11311088
     
    11481105                }
    11491106
    1150         /* 上位プロトコルを初期化する */
     1107        /* 上位プロトコルを初期化する */
    11511108        for (ix = 0; (entry = protocols[ix]) != NULL; ix ++)
    11521109                if (entry->proto == proto) {
     
    11591116
    11601117/*
    1161  *  lcp_protrej -- Proto-REJ を受信したときの処理
     1118 *  lcp_protrej -- Proto-REJ を受信したときの処理
    11621119 */
    11631120
     
    11691126
    11701127/*
    1171  *  lcp_lowerup -- LCP 下位層を起動する。
     1128 *  lcp_lowerup -- LCP 下位層を起動する。
    11721129 */
    11731130
     
    11791136
    11801137/*
    1181  *  lcp_lowerdown -- LCP 下位層を停止する。
     1138 *  lcp_lowerdown -- LCP 下位層を停止する。
    11821139 */
    11831140
     
    11891146
    11901147/*
    1191  *  lcp_open -- LCP のオープ
     1148 *  lcp_open -- LCP のオープ
    11921149 */
    11931150
     
    11951152lcp_open (uint8_t open_mode)
    11961153{
    1197         ppp_open_mode = open_mode;      /* オープン時の動作モード    */
     1154        ppp_open_mode = open_mode;      /* オープン時の動作モード  */
    11981155        fsm_open(&lcp_fsm);
    11991156        }
    12001157
    12011158/*
    1202  *  lcp_close -- LCP のクローズ
     1159 *  lcp_close -- LCP のクローズ
    12031160 */
    12041161
     
    12181175
    12191176/*
    1220  *  lcp_sprotrej -- 認識できないプロトコルが送られてきたときの処理
     1177 *  lcp_sprotrej -- 認識できないプロトコルが送られてきたときの処理
    12211178 */
    12221179
     
    12261183        T_NET_BUF       *output;
    12271184        /*
    1228          *  Protocol-Reject を送り返す。
     1185         *  Protocol-Reject を送り返す。
    12291186         */
    12301187
     
    12391196
    12401197/*
    1241  *  lcp_down -- リンク接続を解放する (Phase: Dead に移行する)。
     1198 *  lcp_down -- リンク接続を解放する (Phase: Dead に移行する)。
    12421199 */
    12431200
     
    12561213
    12571214/*
    1258  *  lcp_finished -- 下位層を終了する。
     1215 *  lcp_finished -- 下位層を終了する。
    12591216 */
    12601217
     
    12681225
    12691226/*
    1270  *  recv_echo_rep -- ECHOREP を受信したときの処理
     1227 *  recv_echo_rep -- ECHOREP を受信したときの処理
    12711228 */
    12721229
     
    12791236        hdr = GET_PPP_CP_HDR(input);
    12801237
    1281         /* Magic Number の長さ以下ならエラー */
     1238        /* Magic Number の長さ以下ならエラー */
    12821239        if (hdr->len < sizeof(T_PPP_CP_HDR) + sizeof(uint32_t)) {
    12831240                syslog(LOG_WARNING, "[PPP/LCP] bad ECHOREP len: %d.", hdr->len);
     
    12871244        ntoahl(magic, input->buf + sizeof(T_PPP_HDR) + sizeof(T_PPP_CP_HDR));
    12881245
    1289         /* 受信した Magic Number が自分と同じならループしている。*/
     1246        /* 受信した Magic Number が自分と同じならループしている。*/
    12901247        if ((lcp_local_ack_cfg.options & LCP_CFG_MAGIC) && magic == lcp_local_ack_cfg.magic) {
    12911248                syslog(LOG_WARNING, "[PPP/LCP] ECHOREP looped.");
     
    12971254
    12981255/*
    1299  *  echo_timeout -- ECHO REQ/REP のタイムアウト処理
     1256 *  echo_timeout -- ECHO REQ/REP のタイムアウト処理
    13001257 */
    13011258
     
    13101267
    13111268/*
    1312  *  send_echo_req -- ECHO REQ を送信する。
     1269 *  send_echo_req -- ECHO REQ を送信する。
    13131270 */
    13141271
     
    13301287        if (fsm->state == PPP_FSM_OPENED) {
    13311288
    1332                 /* ECHOREQ を送信する。*/
     1289                /* ECHOREQ を送信する。*/
    13331290                syscall(get_net_buf(&input, sizeof(T_PPP_HDR) + sizeof(T_PPP_CP_HDR) + sizeof(uint32_t)));
    13341291                *(uint32_t*)(input->buf +  sizeof(T_PPP_HDR) + sizeof(T_PPP_CP_HDR)) = lcp_local_ack_cfg.magic;
     
    13371294                echo_pending ++;
    13381295
    1339                 /* タイマーをスタートする。*/
     1296                /* タイマーをスタートする。*/
    13401297                timeout((FP)echo_timeout, fsm, LCP_ECHO_INTERVAL);
    13411298                timer_running = true;
     
    13441301
    13451302/*
    1346  *  echo_lowerup -- ECHO REQ/REP の起動
     1303 *  echo_lowerup -- ECHO REQ/REP の起動
    13471304 */
    13481305
     
    13581315
    13591316/*
    1360  *  echo_lowerdown -- ECHO REQ/REP の停止
     1317 *  echo_lowerdown -- ECHO REQ/REP の停止
    13611318 */
    13621319
Note: See TracChangeset for help on using the changeset viewer.