mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-10-04 05:39:53 +00:00
Minor changes: coding style (tabs, ident, etc...).
This commit is contained in:
parent
6bce832060
commit
325d6e7cfa
@ -126,7 +126,8 @@ int peer_mru[NUM_PPP];
|
||||
*
|
||||
* Initialize fsm state.
|
||||
*/
|
||||
void fsm_init(fsm *f)
|
||||
void
|
||||
fsm_init(fsm *f)
|
||||
{
|
||||
f->state = LS_INITIAL;
|
||||
f->flags = 0;
|
||||
@ -142,19 +143,20 @@ void fsm_init(fsm *f)
|
||||
/*
|
||||
* fsm_lowerup - The lower layer is up.
|
||||
*/
|
||||
void fsm_lowerup(fsm *f)
|
||||
void
|
||||
fsm_lowerup(fsm *f)
|
||||
{
|
||||
int oldState = f->state;
|
||||
|
||||
switch( f->state ){
|
||||
switch( f->state ) {
|
||||
case LS_INITIAL:
|
||||
f->state = LS_CLOSED;
|
||||
break;
|
||||
|
||||
case LS_STARTING:
|
||||
if( f->flags & OPT_SILENT )
|
||||
if( f->flags & OPT_SILENT ) {
|
||||
f->state = LS_STOPPED;
|
||||
else {
|
||||
} else {
|
||||
/* Send an initial configure-request */
|
||||
fsm_sconfreq(f, 0);
|
||||
f->state = LS_REQSENT;
|
||||
@ -176,19 +178,21 @@ void fsm_lowerup(fsm *f)
|
||||
*
|
||||
* Cancel all timeouts and inform upper layers.
|
||||
*/
|
||||
void fsm_lowerdown(fsm *f)
|
||||
void
|
||||
fsm_lowerdown(fsm *f)
|
||||
{
|
||||
int oldState = f->state;
|
||||
|
||||
switch( f->state ){
|
||||
switch( f->state ) {
|
||||
case LS_CLOSED:
|
||||
f->state = LS_INITIAL;
|
||||
break;
|
||||
|
||||
case LS_STOPPED:
|
||||
f->state = LS_STARTING;
|
||||
if( f->callbacks->starting )
|
||||
if( f->callbacks->starting ) {
|
||||
(*f->callbacks->starting)(f);
|
||||
}
|
||||
break;
|
||||
|
||||
case LS_CLOSING:
|
||||
@ -205,8 +209,9 @@ void fsm_lowerdown(fsm *f)
|
||||
break;
|
||||
|
||||
case LS_OPENED:
|
||||
if( f->callbacks->down )
|
||||
if( f->callbacks->down ) {
|
||||
(*f->callbacks->down)(f);
|
||||
}
|
||||
f->state = LS_STARTING;
|
||||
break;
|
||||
|
||||
@ -223,21 +228,23 @@ void fsm_lowerdown(fsm *f)
|
||||
/*
|
||||
* fsm_open - Link is allowed to come up.
|
||||
*/
|
||||
void fsm_open(fsm *f)
|
||||
void
|
||||
fsm_open(fsm *f)
|
||||
{
|
||||
int oldState = f->state;
|
||||
|
||||
switch( f->state ){
|
||||
switch( f->state ) {
|
||||
case LS_INITIAL:
|
||||
f->state = LS_STARTING;
|
||||
if( f->callbacks->starting )
|
||||
if( f->callbacks->starting ) {
|
||||
(*f->callbacks->starting)(f);
|
||||
}
|
||||
break;
|
||||
|
||||
case LS_CLOSED:
|
||||
if( f->flags & OPT_SILENT )
|
||||
if( f->flags & OPT_SILENT ) {
|
||||
f->state = LS_STOPPED;
|
||||
else {
|
||||
} else {
|
||||
/* Send an initial configure-request */
|
||||
fsm_sconfreq(f, 0);
|
||||
f->state = LS_REQSENT;
|
||||
@ -249,7 +256,7 @@ void fsm_open(fsm *f)
|
||||
/* fall through */
|
||||
case LS_STOPPED:
|
||||
case LS_OPENED:
|
||||
if( f->flags & OPT_RESTART ){
|
||||
if( f->flags & OPT_RESTART ) {
|
||||
fsm_lowerdown(f);
|
||||
fsm_lowerup(f);
|
||||
}
|
||||
@ -267,13 +274,14 @@ void fsm_open(fsm *f)
|
||||
* Cancel timeouts and either initiate close or possibly go directly to
|
||||
* the LS_CLOSED state.
|
||||
*/
|
||||
void fsm_close(fsm *f, char *reason)
|
||||
void
|
||||
fsm_close(fsm *f, char *reason)
|
||||
{
|
||||
int oldState = f->state;
|
||||
|
||||
f->term_reason = reason;
|
||||
f->term_reason_len = (reason == NULL? 0: strlen(reason));
|
||||
switch( f->state ){
|
||||
switch( f->state ) {
|
||||
case LS_STARTING:
|
||||
f->state = LS_INITIAL;
|
||||
break;
|
||||
@ -288,11 +296,11 @@ void fsm_close(fsm *f, char *reason)
|
||||
case LS_ACKRCVD:
|
||||
case LS_ACKSENT:
|
||||
case LS_OPENED:
|
||||
if( f->state != LS_OPENED )
|
||||
if( f->state != LS_OPENED ) {
|
||||
UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
|
||||
else if( f->callbacks->down )
|
||||
} else if( f->callbacks->down ) {
|
||||
(*f->callbacks->down)(f); /* Inform upper layers we're down */
|
||||
|
||||
}
|
||||
/* Init restart counter, send Terminate-Request */
|
||||
f->retransmits = f->maxtermtransmits;
|
||||
fsm_sdata(f, TERMREQ, f->reqid = ++f->id,
|
||||
@ -314,23 +322,20 @@ void fsm_close(fsm *f, char *reason)
|
||||
*
|
||||
* Used for all packets sent to our peer by this module.
|
||||
*/
|
||||
void fsm_sdata(
|
||||
fsm *f,
|
||||
u_char code,
|
||||
u_char id,
|
||||
u_char *data,
|
||||
int datalen
|
||||
)
|
||||
void
|
||||
fsm_sdata( fsm *f, u_char code, u_char id, u_char *data, int datalen)
|
||||
{
|
||||
u_char *outp;
|
||||
int outlen;
|
||||
|
||||
/* Adjust length to be smaller than MTU */
|
||||
outp = outpacket_buf[f->unit];
|
||||
if (datalen > peer_mru[f->unit] - (int)HEADERLEN)
|
||||
if (datalen > peer_mru[f->unit] - (int)HEADERLEN) {
|
||||
datalen = peer_mru[f->unit] - HEADERLEN;
|
||||
if (datalen && data != outp + PPP_HDRLEN + HEADERLEN)
|
||||
}
|
||||
if (datalen && data != outp + PPP_HDRLEN + HEADERLEN) {
|
||||
BCOPY(data, outp + PPP_HDRLEN + HEADERLEN, datalen);
|
||||
}
|
||||
outlen = datalen + HEADERLEN;
|
||||
MAKEHEADER(outp, f->protocol);
|
||||
PUTCHAR(code, outp);
|
||||
@ -345,7 +350,8 @@ void fsm_sdata(
|
||||
/*
|
||||
* fsm_input - Input packet.
|
||||
*/
|
||||
void fsm_input(fsm *f, u_char *inpacket, int l)
|
||||
void
|
||||
fsm_input(fsm *f, u_char *inpacket, int l)
|
||||
{
|
||||
u_char *inp = inpacket;
|
||||
u_char code, id;
|
||||
@ -375,7 +381,7 @@ void fsm_input(fsm *f, u_char *inpacket, int l)
|
||||
}
|
||||
len -= HEADERLEN; /* subtract header length */
|
||||
|
||||
if( f->state == LS_INITIAL || f->state == LS_STARTING ){
|
||||
if( f->state == LS_INITIAL || f->state == LS_STARTING ) {
|
||||
FSMDEBUG((LOG_INFO, "fsm_input(%x): Rcvd packet in state %d (%s).\n",
|
||||
f->protocol, f->state, ppperr_strerr[f->state]));
|
||||
return;
|
||||
@ -411,9 +417,10 @@ void fsm_input(fsm *f, u_char *inpacket, int l)
|
||||
break;
|
||||
|
||||
default:
|
||||
if( !f->callbacks->extcode
|
||||
|| !(*f->callbacks->extcode)(f, code, id, inp, len) )
|
||||
if( !f->callbacks->extcode ||
|
||||
!(*f->callbacks->extcode)(f, code, id, inp, len) ) {
|
||||
fsm_sdata(f, CODEREJ, ++f->id, inpacket, len + HEADERLEN);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -424,16 +431,18 @@ void fsm_input(fsm *f, u_char *inpacket, int l)
|
||||
*
|
||||
* Treat this as a catastrophic error (RXJ-).
|
||||
*/
|
||||
void fsm_protreject(fsm *f)
|
||||
void
|
||||
fsm_protreject(fsm *f)
|
||||
{
|
||||
switch( f->state ){
|
||||
switch( f->state ) {
|
||||
case LS_CLOSING:
|
||||
UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
|
||||
/* fall through */
|
||||
case LS_CLOSED:
|
||||
f->state = LS_CLOSED;
|
||||
if( f->callbacks->finished )
|
||||
if( f->callbacks->finished ) {
|
||||
(*f->callbacks->finished)(f);
|
||||
}
|
||||
break;
|
||||
|
||||
case LS_STOPPING:
|
||||
@ -444,14 +453,15 @@ void fsm_protreject(fsm *f)
|
||||
/* fall through */
|
||||
case LS_STOPPED:
|
||||
f->state = LS_STOPPED;
|
||||
if( f->callbacks->finished )
|
||||
if( f->callbacks->finished ) {
|
||||
(*f->callbacks->finished)(f);
|
||||
}
|
||||
break;
|
||||
|
||||
case LS_OPENED:
|
||||
if( f->callbacks->down )
|
||||
if( f->callbacks->down ) {
|
||||
(*f->callbacks->down)(f);
|
||||
|
||||
}
|
||||
/* Init restart counter, send Terminate-Request */
|
||||
f->retransmits = f->maxtermtransmits;
|
||||
fsm_sdata(f, TERMREQ, f->reqid = ++f->id,
|
||||
@ -479,22 +489,24 @@ void fsm_protreject(fsm *f)
|
||||
/*
|
||||
* fsm_timeout - Timeout expired.
|
||||
*/
|
||||
static void fsm_timeout(void *arg)
|
||||
static void
|
||||
fsm_timeout(void *arg)
|
||||
{
|
||||
fsm *f = (fsm *) arg;
|
||||
|
||||
switch (f->state) {
|
||||
case LS_CLOSING:
|
||||
case LS_STOPPING:
|
||||
if( f->retransmits <= 0 ){
|
||||
if( f->retransmits <= 0 ) {
|
||||
FSMDEBUG((LOG_WARNING, "%s: timeout sending Terminate-Request state=%d (%s)\n",
|
||||
PROTO_NAME(f), f->state, ppperr_strerr[f->state]));
|
||||
/*
|
||||
* We've waited for an ack long enough. Peer probably heard us.
|
||||
*/
|
||||
f->state = (f->state == LS_CLOSING)? LS_CLOSED: LS_STOPPED;
|
||||
if( f->callbacks->finished )
|
||||
if( f->callbacks->finished ) {
|
||||
(*f->callbacks->finished)(f);
|
||||
}
|
||||
} else {
|
||||
FSMDEBUG((LOG_WARNING, "%s: timeout resending Terminate-Requests state=%d (%s)\n",
|
||||
PROTO_NAME(f), f->state, ppperr_strerr[f->state]));
|
||||
@ -513,19 +525,21 @@ static void fsm_timeout(void *arg)
|
||||
FSMDEBUG((LOG_WARNING, "%s: timeout sending Config-Requests state=%d (%s)\n",
|
||||
PROTO_NAME(f), f->state, ppperr_strerr[f->state]));
|
||||
f->state = LS_STOPPED;
|
||||
if( (f->flags & OPT_PASSIVE) == 0 && f->callbacks->finished )
|
||||
if( (f->flags & OPT_PASSIVE) == 0 && f->callbacks->finished ) {
|
||||
(*f->callbacks->finished)(f);
|
||||
|
||||
}
|
||||
} else {
|
||||
FSMDEBUG((LOG_WARNING, "%s: timeout resending Config-Request state=%d (%s)\n",
|
||||
PROTO_NAME(f), f->state, ppperr_strerr[f->state]));
|
||||
/* Retransmit the configure-request */
|
||||
if (f->callbacks->retransmit)
|
||||
if (f->callbacks->retransmit) {
|
||||
(*f->callbacks->retransmit)(f);
|
||||
}
|
||||
fsm_sconfreq(f, 1); /* Re-send Configure-Request */
|
||||
if( f->state == LS_ACKRCVD )
|
||||
if( f->state == LS_ACKRCVD ) {
|
||||
f->state = LS_REQSENT;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -538,13 +552,14 @@ static void fsm_timeout(void *arg)
|
||||
/*
|
||||
* fsm_rconfreq - Receive Configure-Request.
|
||||
*/
|
||||
static void fsm_rconfreq(fsm *f, u_char id, u_char *inp, int len)
|
||||
static void
|
||||
fsm_rconfreq(fsm *f, u_char id, u_char *inp, int len)
|
||||
{
|
||||
int code, reject_if_disagree;
|
||||
|
||||
FSMDEBUG((LOG_INFO, "fsm_rconfreq(%s): Rcvd id %d state=%d (%s)\n",
|
||||
PROTO_NAME(f), id, f->state, ppperr_strerr[f->state]));
|
||||
switch( f->state ){
|
||||
switch( f->state ) {
|
||||
case LS_CLOSED:
|
||||
/* Go away, we're closed */
|
||||
fsm_sdata(f, TERMACK, id, NULL, 0);
|
||||
@ -555,8 +570,9 @@ static void fsm_rconfreq(fsm *f, u_char id, u_char *inp, int len)
|
||||
|
||||
case LS_OPENED:
|
||||
/* Go down and restart negotiation */
|
||||
if( f->callbacks->down )
|
||||
if( f->callbacks->down ) {
|
||||
(*f->callbacks->down)(f); /* Inform upper layers */
|
||||
}
|
||||
fsm_sconfreq(f, 0); /* Send initial Configure-Request */
|
||||
break;
|
||||
|
||||
@ -571,14 +587,14 @@ static void fsm_rconfreq(fsm *f, u_char id, u_char *inp, int len)
|
||||
* Pass the requested configuration options
|
||||
* to protocol-specific code for checking.
|
||||
*/
|
||||
if (f->callbacks->reqci){ /* Check CI */
|
||||
if (f->callbacks->reqci) { /* Check CI */
|
||||
reject_if_disagree = (f->nakloops >= f->maxnakloops);
|
||||
code = (*f->callbacks->reqci)(f, inp, &len, reject_if_disagree);
|
||||
}
|
||||
else if (len)
|
||||
} else if (len) {
|
||||
code = CONFREJ; /* Reject all CI */
|
||||
else
|
||||
} else {
|
||||
code = CONFACK;
|
||||
}
|
||||
|
||||
/* send the Ack, Nak or Rej to the peer */
|
||||
fsm_sdata(f, (u_char)code, id, inp, len);
|
||||
@ -587,35 +603,38 @@ static void fsm_rconfreq(fsm *f, u_char id, u_char *inp, int len)
|
||||
if (f->state == LS_ACKRCVD) {
|
||||
UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
|
||||
f->state = LS_OPENED;
|
||||
if (f->callbacks->up)
|
||||
if (f->callbacks->up) {
|
||||
(*f->callbacks->up)(f); /* Inform upper layers */
|
||||
}
|
||||
else
|
||||
} else {
|
||||
f->state = LS_ACKSENT;
|
||||
f->nakloops = 0;
|
||||
}
|
||||
else {
|
||||
f->nakloops = 0;
|
||||
} else {
|
||||
/* we sent CONFACK or CONFREJ */
|
||||
if (f->state != LS_ACKRCVD)
|
||||
if (f->state != LS_ACKRCVD) {
|
||||
f->state = LS_REQSENT;
|
||||
if( code == CONFNAK )
|
||||
}
|
||||
if( code == CONFNAK ) {
|
||||
++f->nakloops;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* fsm_rconfack - Receive Configure-Ack.
|
||||
*/
|
||||
static void fsm_rconfack(fsm *f, int id, u_char *inp, int len)
|
||||
static void
|
||||
fsm_rconfack(fsm *f, int id, u_char *inp, int len)
|
||||
{
|
||||
FSMDEBUG((LOG_INFO, "fsm_rconfack(%s): Rcvd id %d state=%d (%s)\n",
|
||||
PROTO_NAME(f), id, f->state, ppperr_strerr[f->state]));
|
||||
|
||||
if (id != f->reqid || f->seen_ack) /* Expected id? */
|
||||
if (id != f->reqid || f->seen_ack) { /* Expected id? */
|
||||
return; /* Nope, toss... */
|
||||
if( !(f->callbacks->ackci? (*f->callbacks->ackci)(f, inp, len):
|
||||
(len == 0)) ){
|
||||
}
|
||||
if( !(f->callbacks->ackci? (*f->callbacks->ackci)(f, inp, len): (len == 0)) ) {
|
||||
/* Ack is bad - ignore it */
|
||||
FSMDEBUG((LOG_INFO, "%s: received bad Ack (length %d)\n",
|
||||
PROTO_NAME(f), len));
|
||||
@ -645,14 +664,16 @@ static void fsm_rconfack(fsm *f, int id, u_char *inp, int len)
|
||||
UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
|
||||
f->state = LS_OPENED;
|
||||
f->retransmits = f->maxconfreqtransmits;
|
||||
if (f->callbacks->up)
|
||||
if (f->callbacks->up) {
|
||||
(*f->callbacks->up)(f); /* Inform upper layers */
|
||||
}
|
||||
break;
|
||||
|
||||
case LS_OPENED:
|
||||
/* Go down and restart negotiation */
|
||||
if (f->callbacks->down)
|
||||
if (f->callbacks->down) {
|
||||
(*f->callbacks->down)(f); /* Inform upper layers */
|
||||
}
|
||||
fsm_sconfreq(f, 0); /* Send initial Configure-Request */
|
||||
f->state = LS_REQSENT;
|
||||
break;
|
||||
@ -663,7 +684,8 @@ static void fsm_rconfack(fsm *f, int id, u_char *inp, int len)
|
||||
/*
|
||||
* fsm_rconfnakrej - Receive Configure-Nak or Configure-Reject.
|
||||
*/
|
||||
static void fsm_rconfnakrej(fsm *f, int code, int id, u_char *inp, int len)
|
||||
static void
|
||||
fsm_rconfnakrej(fsm *f, int code, int id, u_char *inp, int len)
|
||||
{
|
||||
int (*proc) (fsm *, u_char *, int);
|
||||
int ret;
|
||||
@ -671,8 +693,9 @@ static void fsm_rconfnakrej(fsm *f, int code, int id, u_char *inp, int len)
|
||||
FSMDEBUG((LOG_INFO, "fsm_rconfnakrej(%s): Rcvd id %d state=%d (%s)\n",
|
||||
PROTO_NAME(f), id, f->state, ppperr_strerr[f->state]));
|
||||
|
||||
if (id != f->reqid || f->seen_ack) /* Expected id? */
|
||||
if (id != f->reqid || f->seen_ack) { /* Expected id? */
|
||||
return; /* Nope, toss... */
|
||||
}
|
||||
proc = (code == CONFNAK)? f->callbacks->nakci: f->callbacks->rejci;
|
||||
if (!proc || !((ret = proc(f, inp, len)))) {
|
||||
/* Nak/reject is bad - ignore it */
|
||||
@ -692,10 +715,11 @@ static void fsm_rconfnakrej(fsm *f, int code, int id, u_char *inp, int len)
|
||||
case LS_ACKSENT:
|
||||
/* They didn't agree to what we wanted - try another request */
|
||||
UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
|
||||
if (ret < 0)
|
||||
if (ret < 0) {
|
||||
f->state = LS_STOPPED; /* kludge for stopping CCP */
|
||||
else
|
||||
} else {
|
||||
fsm_sconfreq(f, 0); /* Send Configure-Request */
|
||||
}
|
||||
break;
|
||||
|
||||
case LS_ACKRCVD:
|
||||
@ -707,8 +731,9 @@ static void fsm_rconfnakrej(fsm *f, int code, int id, u_char *inp, int len)
|
||||
|
||||
case LS_OPENED:
|
||||
/* Go down and restart negotiation */
|
||||
if (f->callbacks->down)
|
||||
if (f->callbacks->down) {
|
||||
(*f->callbacks->down)(f); /* Inform upper layers */
|
||||
}
|
||||
fsm_sconfreq(f, 0); /* Send initial Configure-Request */
|
||||
f->state = LS_REQSENT;
|
||||
break;
|
||||
@ -719,7 +744,8 @@ static void fsm_rconfnakrej(fsm *f, int code, int id, u_char *inp, int len)
|
||||
/*
|
||||
* fsm_rtermreq - Receive Terminate-Req.
|
||||
*/
|
||||
static void fsm_rtermreq(fsm *f, int id, u_char *p, int len)
|
||||
static void
|
||||
fsm_rtermreq(fsm *f, int id, u_char *p, int len)
|
||||
{
|
||||
FSMDEBUG((LOG_INFO, "fsm_rtermreq(%s): Rcvd id %d state=%d (%s)\n",
|
||||
PROTO_NAME(f), id, f->state, ppperr_strerr[f->state]));
|
||||
@ -736,8 +762,9 @@ static void fsm_rtermreq(fsm *f, int id, u_char *p, int len)
|
||||
} else {
|
||||
FSMDEBUG((LOG_INFO, "%s terminated by peer\n", PROTO_NAME(f)));
|
||||
}
|
||||
if (f->callbacks->down)
|
||||
if (f->callbacks->down) {
|
||||
(*f->callbacks->down)(f); /* Inform upper layers */
|
||||
}
|
||||
f->retransmits = 0;
|
||||
f->state = LS_STOPPING;
|
||||
TIMEOUT(fsm_timeout, f, f->timeouttime);
|
||||
@ -751,7 +778,8 @@ static void fsm_rtermreq(fsm *f, int id, u_char *p, int len)
|
||||
/*
|
||||
* fsm_rtermack - Receive Terminate-Ack.
|
||||
*/
|
||||
static void fsm_rtermack(fsm *f)
|
||||
static void
|
||||
fsm_rtermack(fsm *f)
|
||||
{
|
||||
FSMDEBUG((LOG_INFO, "fsm_rtermack(%s): state=%d (%s)\n",
|
||||
PROTO_NAME(f), f->state, ppperr_strerr[f->state]));
|
||||
@ -760,14 +788,17 @@ static void fsm_rtermack(fsm *f)
|
||||
case LS_CLOSING:
|
||||
UNTIMEOUT(fsm_timeout, f);
|
||||
f->state = LS_CLOSED;
|
||||
if( f->callbacks->finished )
|
||||
if( f->callbacks->finished ) {
|
||||
(*f->callbacks->finished)(f);
|
||||
}
|
||||
break;
|
||||
|
||||
case LS_STOPPING:
|
||||
UNTIMEOUT(fsm_timeout, f);
|
||||
f->state = LS_STOPPED;
|
||||
if( f->callbacks->finished )
|
||||
if( f->callbacks->finished ) {
|
||||
(*f->callbacks->finished)(f);
|
||||
}
|
||||
break;
|
||||
|
||||
case LS_ACKRCVD:
|
||||
@ -775,8 +806,9 @@ static void fsm_rtermack(fsm *f)
|
||||
break;
|
||||
|
||||
case LS_OPENED:
|
||||
if (f->callbacks->down)
|
||||
if (f->callbacks->down) {
|
||||
(*f->callbacks->down)(f); /* Inform upper layers */
|
||||
}
|
||||
fsm_sconfreq(f, 0);
|
||||
break;
|
||||
}
|
||||
@ -786,7 +818,8 @@ static void fsm_rtermack(fsm *f)
|
||||
/*
|
||||
* fsm_rcoderej - Receive an Code-Reject.
|
||||
*/
|
||||
static void fsm_rcoderej(fsm *f, u_char *inp, int len)
|
||||
static void
|
||||
fsm_rcoderej(fsm *f, u_char *inp, int len)
|
||||
{
|
||||
u_char code, id;
|
||||
|
||||
@ -802,27 +835,30 @@ static void fsm_rcoderej(fsm *f, u_char *inp, int len)
|
||||
FSMDEBUG((LOG_WARNING, "%s: Rcvd Code-Reject for code %d, id %d\n",
|
||||
PROTO_NAME(f), code, id));
|
||||
|
||||
if( f->state == LS_ACKRCVD )
|
||||
if( f->state == LS_ACKRCVD ) {
|
||||
f->state = LS_REQSENT;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* fsm_sconfreq - Send a Configure-Request.
|
||||
*/
|
||||
static void fsm_sconfreq(fsm *f, int retransmit)
|
||||
static void
|
||||
fsm_sconfreq(fsm *f, int retransmit)
|
||||
{
|
||||
u_char *outp;
|
||||
int cilen;
|
||||
|
||||
if( f->state != LS_REQSENT && f->state != LS_ACKRCVD && f->state != LS_ACKSENT ){
|
||||
if( f->state != LS_REQSENT && f->state != LS_ACKRCVD && f->state != LS_ACKSENT ) {
|
||||
/* Not currently negotiating - reset options */
|
||||
if( f->callbacks->resetci )
|
||||
if( f->callbacks->resetci ) {
|
||||
(*f->callbacks->resetci)(f);
|
||||
}
|
||||
f->nakloops = 0;
|
||||
}
|
||||
|
||||
if( !retransmit ){
|
||||
if( !retransmit ) {
|
||||
/* New request - reset retransmission counter, use new ID */
|
||||
f->retransmits = f->maxconfreqtransmits;
|
||||
f->reqid = ++f->id;
|
||||
@ -834,14 +870,17 @@ static void fsm_sconfreq(fsm *f, int retransmit)
|
||||
* Make up the request packet
|
||||
*/
|
||||
outp = outpacket_buf[f->unit] + PPP_HDRLEN + HEADERLEN;
|
||||
if( f->callbacks->cilen && f->callbacks->addci ){
|
||||
if( f->callbacks->cilen && f->callbacks->addci ) {
|
||||
cilen = (*f->callbacks->cilen)(f);
|
||||
if( cilen > peer_mru[f->unit] - (int)HEADERLEN )
|
||||
if( cilen > peer_mru[f->unit] - (int)HEADERLEN ) {
|
||||
cilen = peer_mru[f->unit] - HEADERLEN;
|
||||
if (f->callbacks->addci)
|
||||
}
|
||||
if (f->callbacks->addci) {
|
||||
(*f->callbacks->addci)(f, outp, &cilen);
|
||||
} else
|
||||
}
|
||||
} else {
|
||||
cilen = 0;
|
||||
}
|
||||
|
||||
/* send the request to our peer */
|
||||
fsm_sdata(f, CONFREQ, f->reqid, outp, cilen);
|
||||
|
@ -48,7 +48,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: fsm.h,v 1.2 2007/11/29 22:19:57 fbernon Exp $
|
||||
* $Id: fsm.h,v 1.3 2007/12/02 23:24:59 fbernon Exp $
|
||||
*/
|
||||
|
||||
#ifndef FSM_H
|
||||
@ -88,7 +88,6 @@
|
||||
#define LS_ACKSENT 8 /* We've sent a Config Ack */
|
||||
#define LS_OPENED 9 /* Connection available */
|
||||
|
||||
|
||||
/*
|
||||
* Flags - indicate options controlling FSM operation
|
||||
*/
|
||||
@ -112,46 +111,32 @@ typedef struct fsm {
|
||||
u_char reqid; /* Current request id */
|
||||
u_char seen_ack; /* Have received valid Ack/Nak/Rej to Req */
|
||||
int timeouttime; /* Timeout time in milliseconds */
|
||||
int maxconfreqtransmits;/* Maximum Configure-Request transmissions */
|
||||
int maxconfreqtransmits; /* Maximum Configure-Request transmissions */
|
||||
int retransmits; /* Number of retransmissions left */
|
||||
int maxtermtransmits; /* Maximum Terminate-Request transmissions */
|
||||
int nakloops; /* Number of nak loops since last ack */
|
||||
int maxnakloops; /* Maximum number of nak loops tolerated */
|
||||
struct fsm_callbacks* callbacks;/* Callback routines */
|
||||
struct fsm_callbacks* callbacks; /* Callback routines */
|
||||
char* term_reason; /* Reason for closing protocol */
|
||||
int term_reason_len; /* Length of term_reason */
|
||||
} fsm;
|
||||
|
||||
|
||||
typedef struct fsm_callbacks {
|
||||
void (*resetci) /* Reset our Configuration Information */
|
||||
(fsm*);
|
||||
int (*cilen) /* Length of our Configuration Information */
|
||||
(fsm*);
|
||||
void (*addci) /* Add our Configuration Information */
|
||||
(fsm*, u_char*, int*);
|
||||
int (*ackci) /* ACK our Configuration Information */
|
||||
(fsm*, u_char*, int);
|
||||
int (*nakci) /* NAK our Configuration Information */
|
||||
(fsm*, u_char*, int);
|
||||
int (*rejci) /* Reject our Configuration Information */
|
||||
(fsm*, u_char*, int);
|
||||
int (*reqci) /* Request peer's Configuration Information */
|
||||
(fsm*, u_char*, int*, int);
|
||||
void (*up) /* Called when fsm reaches LS_OPENED state */
|
||||
(fsm*);
|
||||
void (*down) /* Called when fsm leaves LS_OPENED state */
|
||||
(fsm*);
|
||||
void (*starting) /* Called when we want the lower layer */
|
||||
(fsm*);
|
||||
void (*finished) /* Called when we don't want the lower layer */
|
||||
(fsm*);
|
||||
void (*protreject) /* Called when Protocol-Reject received */
|
||||
(int);
|
||||
void (*retransmit) /* Retransmission is necessary */
|
||||
(fsm*);
|
||||
int (*extcode) /* Called when unknown code received */
|
||||
(fsm*, int, u_char, u_char*, int);
|
||||
void (*resetci)(fsm*); /* Reset our Configuration Information */
|
||||
int (*cilen)(fsm*); /* Length of our Configuration Information */
|
||||
void (*addci)(fsm*, u_char*, int*); /* Add our Configuration Information */
|
||||
int (*ackci)(fsm*, u_char*, int); /* ACK our Configuration Information */
|
||||
int (*nakci)(fsm*, u_char*, int); /* NAK our Configuration Information */
|
||||
int (*rejci)(fsm*, u_char*, int); /* Reject our Configuration Information */
|
||||
int (*reqci)(fsm*, u_char*, int*, int); /* Request peer's Configuration Information */
|
||||
void (*up)(fsm*); /* Called when fsm reaches LS_OPENED state */
|
||||
void (*down)(fsm*); /* Called when fsm leaves LS_OPENED state */
|
||||
void (*starting)(fsm*); /* Called when we want the lower layer */
|
||||
void (*finished)(fsm*); /* Called when we don't want the lower layer */
|
||||
void (*protreject)(int); /* Called when Protocol-Reject received */
|
||||
void (*retransmit)(fsm*); /* Retransmission is necessary */
|
||||
int (*extcode)(fsm*, int, u_char, u_char*, int); /* Called when unknown code received */
|
||||
char *proto_name; /* String name for protocol (for messages) */
|
||||
} fsm_callbacks;
|
||||
|
||||
|
@ -41,13 +41,13 @@
|
||||
************************/
|
||||
/* Trace levels. */
|
||||
typedef enum {
|
||||
LOG_CRITICAL = 0,
|
||||
LOG_ERR = 1,
|
||||
LOG_NOTICE = 2,
|
||||
LOG_WARNING = 3,
|
||||
LOG_INFO = 5,
|
||||
LOG_DETAIL = 6,
|
||||
LOG_DEBUG = 7
|
||||
LOG_CRITICAL = 0,
|
||||
LOG_ERR = 1,
|
||||
LOG_NOTICE = 2,
|
||||
LOG_WARNING = 3,
|
||||
LOG_INFO = 5,
|
||||
LOG_DETAIL = 6,
|
||||
LOG_DEBUG = 7
|
||||
} LogCodes;
|
||||
|
||||
|
||||
@ -59,6 +59,8 @@ typedef enum {
|
||||
*/
|
||||
void ppp_trace(int level, const char *format,...);
|
||||
|
||||
#define TRACELCP PPP_DEBUG
|
||||
|
||||
#if PPP_DEBUG
|
||||
|
||||
#define AUTHDEBUG(a) ppp_trace a
|
||||
@ -69,8 +71,6 @@ void ppp_trace(int level, const char *format,...);
|
||||
#define CHAPDEBUG(a) ppp_trace a
|
||||
#define PPPDEBUG(a) ppp_trace a
|
||||
|
||||
#define TRACELCP 1
|
||||
|
||||
#else /* PPP_DEBUG */
|
||||
|
||||
#define AUTHDEBUG(a)
|
||||
@ -79,11 +79,8 @@ void ppp_trace(int level, const char *format,...);
|
||||
#define LCPDEBUG(a)
|
||||
#define FSMDEBUG(a)
|
||||
#define CHAPDEBUG(a)
|
||||
|
||||
#define PPPDEBUG(a)
|
||||
|
||||
#define TRACELCP 0
|
||||
|
||||
#endif /* PPP_DEBUG */
|
||||
|
||||
#endif /* PPPDEBUG_H */
|
||||
|
Loading…
Reference in New Issue
Block a user