source: azure_iot_hub/trunk/asp3_dcre/tinet/net/ppp_ccp.c@ 388

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

Azure IoT Hub Device C SDK を使ったサンプルの追加

  • 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-2017 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 388 2019-05-22 11:25:18Z 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_count.h>
109#include <net/ppp.h>
110#include <net/ppp_var.h>
111#include <net/ppp_fsm.h>
112#include <net/ppp_ccp.h>
113
114/*
115 * 関数
116 */
117
118static void ccp_init (void);
119static void ccp_input (T_NET_BUF *nbuf);
120static void ccp_protrej (void);
121static void ccp_lowerup (void);
122static void ccp_lowerdown (void);
123static void ccp_open (void);
124static void ccp_close (void);
125
126/*
127 * FSM から呼出されるコールバック関
128 */
129
130static int_t ccp_reqci (T_PPP_FSM *fsm, T_NET_BUF *nbuf);
131 /* 相手の構成情
132報を確認する。 */
133
134/*
135 * å…
136¨åŸŸå¤‰æ•°
137 */
138
139T_PPP_FSM_CALLBACKS ccp_callbacks = {
140 NULL, /* 自構成情
141報をリセットする。 */
142 NULL, /* 構成情
143報の長さを返す。 */
144 NULL, /* 自構成情
145報を追加する。 */
146 NULL, /* ACK を受信したときの処理 */
147 NULL, /* NAK を受信したときの処理 */
148 NULL, /* REJ を受信したときの処理 */
149 ccp_reqci, /* 相手の構成情
150報を確認する。 */
151 NULL, /* リンク接続を確立する。 */
152 NULL, /* リンク接続を解放する。 */
153 NULL, /* 下位層を開始する。 */
154 NULL, /* 下位層を終了する。 */
155 NULL, /* 再送する。 */
156 NULL, /* 不明な CP を受信したときの処理 */
157 };
158
159T_PPP_FSM ccp_fsm = {
160 &ccp_callbacks, /* コールバック関数 */
161 PPP_CCP, /* プロトコル */
162 };
163
164T_PPP_PROTENT ccp_protent = {
165 PPP_CCP,
166 ccp_init, /* 初期化 */
167 ccp_input, /* å…
168¥åŠ› */
169 ccp_protrej, /* Proto-REJ 受信処理 */
170 ccp_lowerup, /* 下位層を起動する */
171 ccp_lowerdown, /* 下位層を停止する */
172 ccp_open, /* オープンする */
173 ccp_close, /* クローズする */
174 NULL, /* データå…
175¥åŠ› */
176 };
177
178/*
179 * ccp_init -- CCP モジュールの初期化
180 */
181
182static void
183ccp_init (void)
184{
185 fsm_init(&ccp_fsm);
186 }
187
188/*
189 * ccp_input -- CCP å…
190¥åŠ›
191 */
192
193static void
194ccp_input (T_NET_BUF *nbuf)
195{
196 NET_COUNT_PPP_CCP(net_count_ppp_ccp_in_octets, nbuf->len);
197 NET_COUNT_PPP_CCP(net_count_ppp_ccp_in_packets, 1);
198 fsm_input(&ccp_fsm, nbuf);
199 }
200
201/*
202 * ccp_reqci -- 相手の構成情
203報を解析する。
204 */
205
206static int_t
207ccp_reqci (T_PPP_FSM *fsm, T_NET_BUF *nbuf)
208{
209/*
210 * 実装
211予定、現在はすべてのオプションを拒否する。
212 */
213 return nbuf->len > (sizeof(T_PPP_HDR) + sizeof(T_PPP_CP_HDR)) ? PPP_CONFREJ : PPP_CONFACK;
214 }
215
216/*
217 * ccp_protrej -- Proto-REJ を受信したときの処理
218 */
219
220static void
221ccp_protrej (void)
222{
223 fsm_lowerdown(&ccp_fsm);
224 }
225
226/*
227 * ccp_lowerup -- CCP 下位層を起動する。
228 */
229
230static void
231ccp_lowerup (void)
232{
233 fsm_lowerup(&ccp_fsm);
234 }
235
236/*
237 * ccp_lowerdown -- CCP 下位層を停止する。
238 */
239
240static void
241ccp_lowerdown (void)
242{
243 fsm_lowerdown(&ccp_fsm);
244 }
245
246/*
247 * ccp_open -- CCP のオープ
248 */
249
250static void
251ccp_open (void)
252{
253 fsm_open(&ccp_fsm);
254 }
255
256/*
257 * ccp_close -- CCP のクローズ
258 */
259
260static void
261ccp_close (void)
262{
263 fsm_close(&ccp_fsm);
264 }
Note: See TracBrowser for help on using the repository browser.