source: EcnlProtoTool/trunk/asp3_dcre/tinet/net/ppp_ccp.c@ 270

Last change on this file since 270 was 270, checked in by coas-nagasima, 7 years ago

mruby版ECNLプロトタイピング・ツールを追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-csrc
File size: 7.5 KB
Line 
1/*
2 * TINET (TCP/IP Protocol Stack)
3 *
4 * Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering
5 * Tomakomai National College of Technology, JAPAN
6 *
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 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
42 *
43 * @(#) $Id: ppp_ccp.c 270 2017-02-09 04:03:47Z coas-nagasima $
44 */
45
46/*
47 * ccp.c - PPP Compression Control Protocol.
48 *
49 * Copyright (c) 1994 The Australian National University.
50 * All rights reserved.
51 *
52 * Permission to use, copy, modify, and distribute this software and its
53 * documentation is hereby granted, provided that the above copyright
54 * notice appears in all copies. This software is provided without any
55 * warranty, express or implied. The Australian National University
56 * makes no representations about the suitability of this software for
57 * any purpose.
58 *
59 * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
60 * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
61 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
62 * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
63 * OF SUCH DAMAGE.
64 *
65 * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
66 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
67 * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
68 * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
69 * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
70 * OR MODIFICATIONS.
71 */
72
73/*
74 * PPP Compression Control Protocol (CCP) Module
75 *
76 * Written by Toshiharu OHNO (tony-o@iij.ad.jp)
77 *
78 * Copyright (C) 1994, Internet Initiative Japan, Inc. All rights reserverd.
79 *
80 * Redistribution and use in source and binary forms are permitted
81 * provided that the above copyright notice and this paragraph are
82 * duplicated in all such forms and that any documentation,
83 * advertising materials, and other materials related to such
84 * distribution and use acknowledge that the software was developed
85 * by the Internet Initiative Japan, Inc. The name of the
86 * IIJ may not be used to endorse or promote products derived
87 * from this software without specific prior written permission.
88 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
89 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
90 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
91 *
92 * $FreeBSD: src/usr.sbin/ppp/ccp.c,v 1.54.2.2 2000/08/19 09:29:59 brian Exp $
93 *
94 * TODO:
95 * o Support other compression protocols
96 */
97
98/*
99 * 実装
100予定、現在はすべて拒否
101 */
102
103#include <t_services.h>
104
105#include <net/if.h>
106#include <net/if_ppp.h>
107#include <net/net_buf.h>
108#include <net/net_debug.h>
109#include <net/net_count.h>
110#include <net/ppp.h>
111#include <net/ppp_var.h>
112#include <net/ppp_fsm.h>
113#include <net/ppp_ccp.h>
114
115/*
116 * 関数
117 */
118
119static void ccp_init (void);
120static void ccp_input (T_NET_BUF *nbuf);
121static void ccp_protrej (void);
122static void ccp_lowerup (void);
123static void ccp_lowerdown (void);
124static void ccp_open (void);
125static void ccp_close (void);
126
127/*
128 * FSM から呼出されるコールバック関
129 */
130
131static int_t ccp_reqci (T_PPP_FSM *fsm, T_NET_BUF *nbuf);
132 /* 相手の構成情
133報を確認する。 */
134
135/*
136 * å…
137¨åŸŸå¤‰æ•°
138 */
139
140T_PPP_FSM_CALLBACKS ccp_callbacks = {
141 NULL, /* 自構成情
142報をリセットする。 */
143 NULL, /* 構成情
144報の長さを返す。 */
145 NULL, /* 自構成情
146報を追加する。 */
147 NULL, /* ACK を受信したときの処理 */
148 NULL, /* NAK を受信したときの処理 */
149 NULL, /* REJ を受信したときの処理 */
150 ccp_reqci, /* 相手の構成情
151報を確認する。 */
152 NULL, /* リンク接続を確立する。 */
153 NULL, /* リンク接続を解放する。 */
154 NULL, /* 下位層を開始する。 */
155 NULL, /* 下位層を終了する。 */
156 NULL, /* 再送する。 */
157 NULL, /* 不明な CP を受信したときの処理 */
158 };
159
160T_PPP_FSM ccp_fsm = {
161 &ccp_callbacks, /* コールバック関数 */
162 PPP_CCP, /* プロトコル */
163 };
164
165T_PPP_PROTENT ccp_protent = {
166 PPP_CCP,
167 ccp_init, /* 初期化 */
168 ccp_input, /* å…
169¥åŠ› */
170 ccp_protrej, /* Proto-REJ 受信処理 */
171 ccp_lowerup, /* 下位層を起動する */
172 ccp_lowerdown, /* 下位層を停止する */
173 ccp_open, /* オープンする */
174 ccp_close, /* クローズする */
175 NULL, /* データå…
176¥åŠ› */
177 };
178
179/*
180 * ccp_init -- CCP モジュールの初期化
181 */
182
183static void
184ccp_init (void)
185{
186 fsm_init(&ccp_fsm);
187 }
188
189/*
190 * ccp_input -- CCP å…
191¥åŠ›
192 */
193
194static void
195ccp_input (T_NET_BUF *nbuf)
196{
197 NET_COUNT_PPP_CCP(net_count_ppp_ccp_in_octets, nbuf->len);
198 NET_COUNT_PPP_CCP(net_count_ppp_ccp_in_packets, 1);
199 fsm_input(&ccp_fsm, nbuf);
200 }
201
202/*
203 * ccp_reqci -- 相手の構成情
204報を解析する。
205 */
206
207static int_t
208ccp_reqci (T_PPP_FSM *fsm, T_NET_BUF *nbuf)
209{
210/*
211 * 実装
212予定、現在はすべてのオプションを拒否する。
213 */
214 return nbuf->len > (sizeof(T_PPP_HDR) + sizeof(T_PPP_CP_HDR)) ? PPP_CONFREJ : PPP_CONFACK;
215 }
216
217/*
218 * ccp_protrej -- Proto-REJ を受信したときの処理
219 */
220
221static void
222ccp_protrej (void)
223{
224 fsm_lowerdown(&ccp_fsm);
225 }
226
227/*
228 * ccp_lowerup -- CCP 下位層を起動する。
229 */
230
231static void
232ccp_lowerup (void)
233{
234 fsm_lowerup(&ccp_fsm);
235 }
236
237/*
238 * ccp_lowerdown -- CCP 下位層を停止する。
239 */
240
241static void
242ccp_lowerdown (void)
243{
244 fsm_lowerdown(&ccp_fsm);
245 }
246
247/*
248 * ccp_open -- CCP のオープ
249 */
250
251static void
252ccp_open (void)
253{
254 fsm_open(&ccp_fsm);
255 }
256
257/*
258 * ccp_close -- CCP のクローズ
259 */
260
261static void
262ccp_close (void)
263{
264 fsm_close(&ccp_fsm);
265 }
Note: See TracBrowser for help on using the repository browser.