Deleted Added
full compact
1/*
2 * Written by Toshiharu OHNO (tony-o@iij.ad.jp)
3 *
4 * Copyright (C) 1993, Internet Initiative Japan, Inc. All rights reserverd.
5 *
6 * Redistribution and use in source and binary forms are permitted
7 * provided that the above copyright notice and this paragraph are
8 * duplicated in all such forms and that any documentation,

--- 5 unchanged lines hidden (view full) ---

14 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
15 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
16 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
17 *
18 * $Id:$
19 *
20 * TODO:
21 */
22#ifndef _FSM_H_
23#define _FSM_H_
24
25#include "defs.h"
26#include <netinet/in.h>
27#include "timeout.h"
28
29/*
30 * State of machine
31 */
32#define ST_INITIAL 0
33#define ST_STARTING 1
34#define ST_CLOSED 2
35#define ST_STOPPED 3

--- 5 unchanged lines hidden (view full) ---

41#define ST_OPENED 9
42
43#define ST_MAX 10
44#define ST_UNDEF -1
45
46#define MODE_REQ 0
47#define MODE_NAK 1
48#define MODE_REJ 2
49
50#define OPEN_ACTIVE 0
51#define OPEN_PASSIVE 1
52
53struct fsm {
54 char *name; /* Name of protocol */
55 u_short proto; /* Protocol number */
56 u_short max_code;
57 int open_mode;
58 int state; /* State of the machine */
59 int reqid; /* Next request id */
60 int restart; /* Restart counter value */
61 int maxconfig;
62
63 int reqcode; /* Request code sent */
64 struct pppTimer FsmTimer; /* Restart Timer */
65
66 void (*LayerUp)();
67 void (*LayerDown)();
68 void (*LayerStart)();
69 void (*LayerFinish)();
70 void (*InitRestartCounter)();
71 void (*SendConfigReq)();
72 void (*SendTerminateReq)();
73 void (*SendTerminateAck)();
74 void (*DecodeConfig)();
75};
76
77struct fsmheader {
78 u_char code; /* Request code */
79 u_char id; /* Identification */
80 u_short length; /* Length of packet */
81};
82

--- 9 unchanged lines hidden (view full) ---

92#define CODE_ECHOREP 10 /* Used in LCP */
93#define CODE_DISCREQ 11
94#define CODE_IDENT 12 /* Used in LCP Extension */
95#define CODE_TIMEREM 13 /* Used in LCP Extension */
96#define CODE_RESETREQ 14 /* Used in CCP */
97#define CODE_RESETACK 15 /* Used in CCP */
98
99struct fsmcodedesc {
100 void (*action)();
101 char *name;
102};
103
104struct fsmconfig {
105 u_char type;
106 u_char length;
107};
108
109u_char AckBuff[200];
110u_char NakBuff[200];
111u_char RejBuff[100];
112u_char ReqBuff[200];
113
114u_char *ackp, *nakp, *rejp;
115
116extern char *StateNames[];
117extern void FsmInit(struct fsm *);
118extern void NewState(struct fsm *, int);
119extern void FsmOutput(struct fsm *, u_int, u_int, u_char *, int);
120extern void FsmOpen(struct fsm *);
121extern void FsmUp(struct fsm *);
122extern void FsmDown(struct fsm *);
123extern void FsmInput(struct fsm *, struct mbuf *);
124
125extern void FsmRecvConfigReq(struct fsm *, struct fsmheader *, struct mbuf *);
126extern void FsmRecvConfigAck(struct fsm *, struct fsmheader *, struct mbuf *);
127extern void FsmRecvConfigNak(struct fsm *, struct fsmheader *, struct mbuf *);
128extern void FsmRecvTermReq(struct fsm *, struct fsmheader *, struct mbuf *);
129extern void FsmRecvTermAck(struct fsm *, struct fsmheader *, struct mbuf *);
130extern void FsmClose(struct fsm *fp);
131
132extern struct fsm LcpFsm, IpcpFsm, CcpFsm;
133
134#endif /* _FSM_H_ */