OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [libnetworking/] [pppd/] [fsm.h] - Blame information for rev 30

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 30 unneback
/*
2
 * fsm.h - {Link, IP} Control Protocol Finite State Machine definitions.
3
 *
4
 * Copyright (c) 1989 Carnegie Mellon University.
5
 * All rights reserved.
6
 *
7
 * Redistribution and use in source and binary forms are permitted
8
 * provided that the above copyright notice and this paragraph are
9
 * duplicated in all such forms and that any documentation,
10
 * advertising materials, and other materials related to such
11
 * distribution and use acknowledge that the software was developed
12
 * by Carnegie Mellon University.  The name of the
13
 * University may not be used to endorse or promote products derived
14
 * from this software without specific prior written permission.
15
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17
 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18
 *
19
 * $Id: fsm.h,v 1.2 2001-09-27 12:01:57 chris Exp $
20
 */
21
 
22
/*
23
 * Packet header = Code, id, length.
24
 */
25
#define HEADERLEN       (sizeof (u_char) + sizeof (u_char) + sizeof (u_short))
26
 
27
 
28
/*
29
 *  CP (LCP, IPCP, etc.) codes.
30
 */
31
#define CONFREQ         1       /* Configuration Request */
32
#define CONFACK         2       /* Configuration Ack */
33
#define CONFNAK         3       /* Configuration Nak */
34
#define CONFREJ         4       /* Configuration Reject */
35
#define TERMREQ         5       /* Termination Request */
36
#define TERMACK         6       /* Termination Ack */
37
#define CODEREJ         7       /* Code Reject */
38
 
39
 
40
/*
41
 * Each FSM is described by an fsm structure and fsm callbacks.
42
 */
43
typedef struct fsm {
44
    int unit;                   /* Interface unit number */
45
    int protocol;               /* Data Link Layer Protocol field value */
46
    int state;                  /* State */
47
    int flags;                  /* Contains option bits */
48
    u_char id;                  /* Current id */
49
    u_char reqid;               /* Current request id */
50
    u_char seen_ack;            /* Have received valid Ack/Nak/Rej to Req */
51
    int timeouttime;            /* Timeout time in milliseconds */
52
    int maxconfreqtransmits;    /* Maximum Configure-Request transmissions */
53
    int retransmits;            /* Number of retransmissions left */
54
    int maxtermtransmits;       /* Maximum Terminate-Request transmissions */
55
    int nakloops;               /* Number of nak loops since last ack */
56
    int maxnakloops;            /* Maximum number of nak loops tolerated */
57
    struct fsm_callbacks *callbacks;    /* Callback routines */
58
    char *term_reason;          /* Reason for closing protocol */
59
    int term_reason_len;        /* Length of term_reason */
60
} fsm;
61
 
62
 
63
typedef struct fsm_callbacks {
64
    void (*resetci)             /* Reset our Configuration Information */
65
                __P((fsm *));
66
    int  (*cilen)               /* Length of our Configuration Information */
67
                __P((fsm *));
68
    void (*addci)               /* Add our Configuration Information */
69
                __P((fsm *, u_char *, int *));
70
    int  (*ackci)               /* ACK our Configuration Information */
71
                __P((fsm *, u_char *, int));
72
    int  (*nakci)               /* NAK our Configuration Information */
73
                __P((fsm *, u_char *, int));
74
    int  (*rejci)               /* Reject our Configuration Information */
75
                __P((fsm *, u_char *, int));
76
    int  (*reqci)               /* Request peer's Configuration Information */
77
                __P((fsm *, u_char *, int *, int));
78
    void (*up)                  /* Called when fsm reaches OPENED state */
79
                __P((fsm *));
80
    void (*down)                /* Called when fsm leaves OPENED state */
81
                __P((fsm *));
82
    void (*starting)            /* Called when we want the lower layer */
83
                __P((fsm *));
84
    void (*finished)            /* Called when we don't want the lower layer */
85
                __P((fsm *));
86
    void (*protreject)          /* Called when Protocol-Reject received */
87
                __P((int));
88
    void (*retransmit)          /* Retransmission is necessary */
89
                __P((fsm *));
90
    int  (*extcode)             /* Called when unknown code received */
91
                __P((fsm *, int, int, u_char *, int));
92
    char *proto_name;           /* String name for protocol (for messages) */
93
} fsm_callbacks;
94
 
95
 
96
/*
97
 * Link states.
98
 */
99
#define INITIAL         0        /* Down, hasn't been opened */
100
#define STARTING        1       /* Down, been opened */
101
#define CLOSED          2       /* Up, hasn't been opened */
102
#define STOPPED         3       /* Open, waiting for down event */
103
#define CLOSING         4       /* Terminating the connection, not open */
104
#define STOPPING        5       /* Terminating, but open */
105
#define REQSENT         6       /* We've sent a Config Request */
106
#define ACKRCVD         7       /* We've received a Config Ack */
107
#define ACKSENT         8       /* We've sent a Config Ack */
108
#define OPENED          9       /* Connection available */
109
 
110
 
111
/*
112
 * Flags - indicate options controlling FSM operation
113
 */
114
#define OPT_PASSIVE     1       /* Don't die if we don't get a response */
115
#define OPT_RESTART     2       /* Treat 2nd OPEN as DOWN, UP */
116
#define OPT_SILENT      4       /* Wait for peer to speak first */
117
 
118
 
119
/*
120
 * Timeouts.
121
 */
122
#define DEFTIMEOUT      3       /* Timeout time in seconds */
123
#define DEFMAXTERMREQS  2       /* Maximum Terminate-Request transmissions */
124
#define DEFMAXCONFREQS  10      /* Maximum Configure-Request transmissions */
125
#define DEFMAXNAKLOOPS  5       /* Maximum number of nak loops */
126
 
127
 
128
/*
129
 * Prototypes
130
 */
131
void fsm_init __P((fsm *));
132
void fsm_lowerup __P((fsm *));
133
void fsm_lowerdown __P((fsm *));
134
void fsm_open __P((fsm *));
135
void fsm_close __P((fsm *, char *));
136
void fsm_input __P((fsm *, u_char *, int));
137
void fsm_protreject __P((fsm *));
138
void fsm_sdata __P((fsm *, int, int, u_char *, int));
139
 
140
 
141
/*
142
 * Variables
143
 */
144
extern int peer_mru[];          /* currently negotiated peer MRU (per unit) */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.