mirror of
https://git.savannah.nongnu.org/git/lwip.git
synced 2025-08-07 15:04:39 +08: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.
|
* Initialize fsm state.
|
||||||
*/
|
*/
|
||||||
void fsm_init(fsm *f)
|
void
|
||||||
|
fsm_init(fsm *f)
|
||||||
{
|
{
|
||||||
f->state = LS_INITIAL;
|
f->state = LS_INITIAL;
|
||||||
f->flags = 0;
|
f->flags = 0;
|
||||||
@ -142,7 +143,8 @@ void fsm_init(fsm *f)
|
|||||||
/*
|
/*
|
||||||
* fsm_lowerup - The lower layer is up.
|
* fsm_lowerup - The lower layer is up.
|
||||||
*/
|
*/
|
||||||
void fsm_lowerup(fsm *f)
|
void
|
||||||
|
fsm_lowerup(fsm *f)
|
||||||
{
|
{
|
||||||
int oldState = f->state;
|
int oldState = f->state;
|
||||||
|
|
||||||
@ -152,9 +154,9 @@ void fsm_lowerup(fsm *f)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case LS_STARTING:
|
case LS_STARTING:
|
||||||
if( f->flags & OPT_SILENT )
|
if( f->flags & OPT_SILENT ) {
|
||||||
f->state = LS_STOPPED;
|
f->state = LS_STOPPED;
|
||||||
else {
|
} else {
|
||||||
/* Send an initial configure-request */
|
/* Send an initial configure-request */
|
||||||
fsm_sconfreq(f, 0);
|
fsm_sconfreq(f, 0);
|
||||||
f->state = LS_REQSENT;
|
f->state = LS_REQSENT;
|
||||||
@ -176,7 +178,8 @@ void fsm_lowerup(fsm *f)
|
|||||||
*
|
*
|
||||||
* Cancel all timeouts and inform upper layers.
|
* Cancel all timeouts and inform upper layers.
|
||||||
*/
|
*/
|
||||||
void fsm_lowerdown(fsm *f)
|
void
|
||||||
|
fsm_lowerdown(fsm *f)
|
||||||
{
|
{
|
||||||
int oldState = f->state;
|
int oldState = f->state;
|
||||||
|
|
||||||
@ -187,8 +190,9 @@ void fsm_lowerdown(fsm *f)
|
|||||||
|
|
||||||
case LS_STOPPED:
|
case LS_STOPPED:
|
||||||
f->state = LS_STARTING;
|
f->state = LS_STARTING;
|
||||||
if( f->callbacks->starting )
|
if( f->callbacks->starting ) {
|
||||||
(*f->callbacks->starting)(f);
|
(*f->callbacks->starting)(f);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LS_CLOSING:
|
case LS_CLOSING:
|
||||||
@ -205,8 +209,9 @@ void fsm_lowerdown(fsm *f)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case LS_OPENED:
|
case LS_OPENED:
|
||||||
if( f->callbacks->down )
|
if( f->callbacks->down ) {
|
||||||
(*f->callbacks->down)(f);
|
(*f->callbacks->down)(f);
|
||||||
|
}
|
||||||
f->state = LS_STARTING;
|
f->state = LS_STARTING;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -223,21 +228,23 @@ void fsm_lowerdown(fsm *f)
|
|||||||
/*
|
/*
|
||||||
* fsm_open - Link is allowed to come up.
|
* fsm_open - Link is allowed to come up.
|
||||||
*/
|
*/
|
||||||
void fsm_open(fsm *f)
|
void
|
||||||
|
fsm_open(fsm *f)
|
||||||
{
|
{
|
||||||
int oldState = f->state;
|
int oldState = f->state;
|
||||||
|
|
||||||
switch( f->state ) {
|
switch( f->state ) {
|
||||||
case LS_INITIAL:
|
case LS_INITIAL:
|
||||||
f->state = LS_STARTING;
|
f->state = LS_STARTING;
|
||||||
if( f->callbacks->starting )
|
if( f->callbacks->starting ) {
|
||||||
(*f->callbacks->starting)(f);
|
(*f->callbacks->starting)(f);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LS_CLOSED:
|
case LS_CLOSED:
|
||||||
if( f->flags & OPT_SILENT )
|
if( f->flags & OPT_SILENT ) {
|
||||||
f->state = LS_STOPPED;
|
f->state = LS_STOPPED;
|
||||||
else {
|
} else {
|
||||||
/* Send an initial configure-request */
|
/* Send an initial configure-request */
|
||||||
fsm_sconfreq(f, 0);
|
fsm_sconfreq(f, 0);
|
||||||
f->state = LS_REQSENT;
|
f->state = LS_REQSENT;
|
||||||
@ -267,7 +274,8 @@ void fsm_open(fsm *f)
|
|||||||
* Cancel timeouts and either initiate close or possibly go directly to
|
* Cancel timeouts and either initiate close or possibly go directly to
|
||||||
* the LS_CLOSED state.
|
* the LS_CLOSED state.
|
||||||
*/
|
*/
|
||||||
void fsm_close(fsm *f, char *reason)
|
void
|
||||||
|
fsm_close(fsm *f, char *reason)
|
||||||
{
|
{
|
||||||
int oldState = f->state;
|
int oldState = f->state;
|
||||||
|
|
||||||
@ -288,11 +296,11 @@ void fsm_close(fsm *f, char *reason)
|
|||||||
case LS_ACKRCVD:
|
case LS_ACKRCVD:
|
||||||
case LS_ACKSENT:
|
case LS_ACKSENT:
|
||||||
case LS_OPENED:
|
case LS_OPENED:
|
||||||
if( f->state != LS_OPENED )
|
if( f->state != LS_OPENED ) {
|
||||||
UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
|
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 */
|
(*f->callbacks->down)(f); /* Inform upper layers we're down */
|
||||||
|
}
|
||||||
/* Init restart counter, send Terminate-Request */
|
/* Init restart counter, send Terminate-Request */
|
||||||
f->retransmits = f->maxtermtransmits;
|
f->retransmits = f->maxtermtransmits;
|
||||||
fsm_sdata(f, TERMREQ, f->reqid = ++f->id,
|
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.
|
* Used for all packets sent to our peer by this module.
|
||||||
*/
|
*/
|
||||||
void fsm_sdata(
|
void
|
||||||
fsm *f,
|
fsm_sdata( fsm *f, u_char code, u_char id, u_char *data, int datalen)
|
||||||
u_char code,
|
|
||||||
u_char id,
|
|
||||||
u_char *data,
|
|
||||||
int datalen
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
u_char *outp;
|
u_char *outp;
|
||||||
int outlen;
|
int outlen;
|
||||||
|
|
||||||
/* Adjust length to be smaller than MTU */
|
/* Adjust length to be smaller than MTU */
|
||||||
outp = outpacket_buf[f->unit];
|
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;
|
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);
|
BCOPY(data, outp + PPP_HDRLEN + HEADERLEN, datalen);
|
||||||
|
}
|
||||||
outlen = datalen + HEADERLEN;
|
outlen = datalen + HEADERLEN;
|
||||||
MAKEHEADER(outp, f->protocol);
|
MAKEHEADER(outp, f->protocol);
|
||||||
PUTCHAR(code, outp);
|
PUTCHAR(code, outp);
|
||||||
@ -345,7 +350,8 @@ void fsm_sdata(
|
|||||||
/*
|
/*
|
||||||
* fsm_input - Input packet.
|
* 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 *inp = inpacket;
|
||||||
u_char code, id;
|
u_char code, id;
|
||||||
@ -411,9 +417,10 @@ void fsm_input(fsm *f, u_char *inpacket, int l)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if( !f->callbacks->extcode
|
if( !f->callbacks->extcode ||
|
||||||
|| !(*f->callbacks->extcode)(f, code, id, inp, len) )
|
!(*f->callbacks->extcode)(f, code, id, inp, len) ) {
|
||||||
fsm_sdata(f, CODEREJ, ++f->id, inpacket, len + HEADERLEN);
|
fsm_sdata(f, CODEREJ, ++f->id, inpacket, len + HEADERLEN);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -424,7 +431,8 @@ void fsm_input(fsm *f, u_char *inpacket, int l)
|
|||||||
*
|
*
|
||||||
* Treat this as a catastrophic error (RXJ-).
|
* 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:
|
case LS_CLOSING:
|
||||||
@ -432,8 +440,9 @@ void fsm_protreject(fsm *f)
|
|||||||
/* fall through */
|
/* fall through */
|
||||||
case LS_CLOSED:
|
case LS_CLOSED:
|
||||||
f->state = LS_CLOSED;
|
f->state = LS_CLOSED;
|
||||||
if( f->callbacks->finished )
|
if( f->callbacks->finished ) {
|
||||||
(*f->callbacks->finished)(f);
|
(*f->callbacks->finished)(f);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LS_STOPPING:
|
case LS_STOPPING:
|
||||||
@ -444,14 +453,15 @@ void fsm_protreject(fsm *f)
|
|||||||
/* fall through */
|
/* fall through */
|
||||||
case LS_STOPPED:
|
case LS_STOPPED:
|
||||||
f->state = LS_STOPPED;
|
f->state = LS_STOPPED;
|
||||||
if( f->callbacks->finished )
|
if( f->callbacks->finished ) {
|
||||||
(*f->callbacks->finished)(f);
|
(*f->callbacks->finished)(f);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LS_OPENED:
|
case LS_OPENED:
|
||||||
if( f->callbacks->down )
|
if( f->callbacks->down ) {
|
||||||
(*f->callbacks->down)(f);
|
(*f->callbacks->down)(f);
|
||||||
|
}
|
||||||
/* Init restart counter, send Terminate-Request */
|
/* Init restart counter, send Terminate-Request */
|
||||||
f->retransmits = f->maxtermtransmits;
|
f->retransmits = f->maxtermtransmits;
|
||||||
fsm_sdata(f, TERMREQ, f->reqid = ++f->id,
|
fsm_sdata(f, TERMREQ, f->reqid = ++f->id,
|
||||||
@ -479,7 +489,8 @@ void fsm_protreject(fsm *f)
|
|||||||
/*
|
/*
|
||||||
* fsm_timeout - Timeout expired.
|
* fsm_timeout - Timeout expired.
|
||||||
*/
|
*/
|
||||||
static void fsm_timeout(void *arg)
|
static void
|
||||||
|
fsm_timeout(void *arg)
|
||||||
{
|
{
|
||||||
fsm *f = (fsm *) arg;
|
fsm *f = (fsm *) arg;
|
||||||
|
|
||||||
@ -493,8 +504,9 @@ static void fsm_timeout(void *arg)
|
|||||||
* We've waited for an ack long enough. Peer probably heard us.
|
* We've waited for an ack long enough. Peer probably heard us.
|
||||||
*/
|
*/
|
||||||
f->state = (f->state == LS_CLOSING)? LS_CLOSED: LS_STOPPED;
|
f->state = (f->state == LS_CLOSING)? LS_CLOSED: LS_STOPPED;
|
||||||
if( f->callbacks->finished )
|
if( f->callbacks->finished ) {
|
||||||
(*f->callbacks->finished)(f);
|
(*f->callbacks->finished)(f);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
FSMDEBUG((LOG_WARNING, "%s: timeout resending Terminate-Requests state=%d (%s)\n",
|
FSMDEBUG((LOG_WARNING, "%s: timeout resending Terminate-Requests state=%d (%s)\n",
|
||||||
PROTO_NAME(f), f->state, ppperr_strerr[f->state]));
|
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",
|
FSMDEBUG((LOG_WARNING, "%s: timeout sending Config-Requests state=%d (%s)\n",
|
||||||
PROTO_NAME(f), f->state, ppperr_strerr[f->state]));
|
PROTO_NAME(f), f->state, ppperr_strerr[f->state]));
|
||||||
f->state = LS_STOPPED;
|
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);
|
(*f->callbacks->finished)(f);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
FSMDEBUG((LOG_WARNING, "%s: timeout resending Config-Request state=%d (%s)\n",
|
FSMDEBUG((LOG_WARNING, "%s: timeout resending Config-Request state=%d (%s)\n",
|
||||||
PROTO_NAME(f), f->state, ppperr_strerr[f->state]));
|
PROTO_NAME(f), f->state, ppperr_strerr[f->state]));
|
||||||
/* Retransmit the configure-request */
|
/* Retransmit the configure-request */
|
||||||
if (f->callbacks->retransmit)
|
if (f->callbacks->retransmit) {
|
||||||
(*f->callbacks->retransmit)(f);
|
(*f->callbacks->retransmit)(f);
|
||||||
|
}
|
||||||
fsm_sconfreq(f, 1); /* Re-send Configure-Request */
|
fsm_sconfreq(f, 1); /* Re-send Configure-Request */
|
||||||
if( f->state == LS_ACKRCVD )
|
if( f->state == LS_ACKRCVD ) {
|
||||||
f->state = LS_REQSENT;
|
f->state = LS_REQSENT;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -538,7 +552,8 @@ static void fsm_timeout(void *arg)
|
|||||||
/*
|
/*
|
||||||
* fsm_rconfreq - Receive Configure-Request.
|
* 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;
|
int code, reject_if_disagree;
|
||||||
|
|
||||||
@ -555,8 +570,9 @@ static void fsm_rconfreq(fsm *f, u_char id, u_char *inp, int len)
|
|||||||
|
|
||||||
case LS_OPENED:
|
case LS_OPENED:
|
||||||
/* Go down and restart negotiation */
|
/* Go down and restart negotiation */
|
||||||
if( f->callbacks->down )
|
if( f->callbacks->down ) {
|
||||||
(*f->callbacks->down)(f); /* Inform upper layers */
|
(*f->callbacks->down)(f); /* Inform upper layers */
|
||||||
|
}
|
||||||
fsm_sconfreq(f, 0); /* Send initial Configure-Request */
|
fsm_sconfreq(f, 0); /* Send initial Configure-Request */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -574,11 +590,11 @@ static void fsm_rconfreq(fsm *f, u_char id, u_char *inp, int len)
|
|||||||
if (f->callbacks->reqci) { /* Check CI */
|
if (f->callbacks->reqci) { /* Check CI */
|
||||||
reject_if_disagree = (f->nakloops >= f->maxnakloops);
|
reject_if_disagree = (f->nakloops >= f->maxnakloops);
|
||||||
code = (*f->callbacks->reqci)(f, inp, &len, reject_if_disagree);
|
code = (*f->callbacks->reqci)(f, inp, &len, reject_if_disagree);
|
||||||
}
|
} else if (len) {
|
||||||
else if (len)
|
|
||||||
code = CONFREJ; /* Reject all CI */
|
code = CONFREJ; /* Reject all CI */
|
||||||
else
|
} else {
|
||||||
code = CONFACK;
|
code = CONFACK;
|
||||||
|
}
|
||||||
|
|
||||||
/* send the Ack, Nak or Rej to the peer */
|
/* send the Ack, Nak or Rej to the peer */
|
||||||
fsm_sdata(f, (u_char)code, id, inp, len);
|
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) {
|
if (f->state == LS_ACKRCVD) {
|
||||||
UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
|
UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
|
||||||
f->state = LS_OPENED;
|
f->state = LS_OPENED;
|
||||||
if (f->callbacks->up)
|
if (f->callbacks->up) {
|
||||||
(*f->callbacks->up)(f); /* Inform upper layers */
|
(*f->callbacks->up)(f); /* Inform upper layers */
|
||||||
}
|
}
|
||||||
else
|
} else {
|
||||||
f->state = LS_ACKSENT;
|
f->state = LS_ACKSENT;
|
||||||
f->nakloops = 0;
|
|
||||||
}
|
}
|
||||||
else {
|
f->nakloops = 0;
|
||||||
|
} else {
|
||||||
/* we sent CONFACK or CONFREJ */
|
/* we sent CONFACK or CONFREJ */
|
||||||
if (f->state != LS_ACKRCVD)
|
if (f->state != LS_ACKRCVD) {
|
||||||
f->state = LS_REQSENT;
|
f->state = LS_REQSENT;
|
||||||
if( code == CONFNAK )
|
}
|
||||||
|
if( code == CONFNAK ) {
|
||||||
++f->nakloops;
|
++f->nakloops;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* fsm_rconfack - Receive Configure-Ack.
|
* 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",
|
FSMDEBUG((LOG_INFO, "fsm_rconfack(%s): Rcvd id %d state=%d (%s)\n",
|
||||||
PROTO_NAME(f), id, f->state, ppperr_strerr[f->state]));
|
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... */
|
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 */
|
/* Ack is bad - ignore it */
|
||||||
FSMDEBUG((LOG_INFO, "%s: received bad Ack (length %d)\n",
|
FSMDEBUG((LOG_INFO, "%s: received bad Ack (length %d)\n",
|
||||||
PROTO_NAME(f), len));
|
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 */
|
UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
|
||||||
f->state = LS_OPENED;
|
f->state = LS_OPENED;
|
||||||
f->retransmits = f->maxconfreqtransmits;
|
f->retransmits = f->maxconfreqtransmits;
|
||||||
if (f->callbacks->up)
|
if (f->callbacks->up) {
|
||||||
(*f->callbacks->up)(f); /* Inform upper layers */
|
(*f->callbacks->up)(f); /* Inform upper layers */
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LS_OPENED:
|
case LS_OPENED:
|
||||||
/* Go down and restart negotiation */
|
/* Go down and restart negotiation */
|
||||||
if (f->callbacks->down)
|
if (f->callbacks->down) {
|
||||||
(*f->callbacks->down)(f); /* Inform upper layers */
|
(*f->callbacks->down)(f); /* Inform upper layers */
|
||||||
|
}
|
||||||
fsm_sconfreq(f, 0); /* Send initial Configure-Request */
|
fsm_sconfreq(f, 0); /* Send initial Configure-Request */
|
||||||
f->state = LS_REQSENT;
|
f->state = LS_REQSENT;
|
||||||
break;
|
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.
|
* 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 (*proc) (fsm *, u_char *, int);
|
||||||
int ret;
|
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",
|
FSMDEBUG((LOG_INFO, "fsm_rconfnakrej(%s): Rcvd id %d state=%d (%s)\n",
|
||||||
PROTO_NAME(f), id, f->state, ppperr_strerr[f->state]));
|
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... */
|
return; /* Nope, toss... */
|
||||||
|
}
|
||||||
proc = (code == CONFNAK)? f->callbacks->nakci: f->callbacks->rejci;
|
proc = (code == CONFNAK)? f->callbacks->nakci: f->callbacks->rejci;
|
||||||
if (!proc || !((ret = proc(f, inp, len)))) {
|
if (!proc || !((ret = proc(f, inp, len)))) {
|
||||||
/* Nak/reject is bad - ignore it */
|
/* 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:
|
case LS_ACKSENT:
|
||||||
/* They didn't agree to what we wanted - try another request */
|
/* They didn't agree to what we wanted - try another request */
|
||||||
UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
|
UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
|
||||||
if (ret < 0)
|
if (ret < 0) {
|
||||||
f->state = LS_STOPPED; /* kludge for stopping CCP */
|
f->state = LS_STOPPED; /* kludge for stopping CCP */
|
||||||
else
|
} else {
|
||||||
fsm_sconfreq(f, 0); /* Send Configure-Request */
|
fsm_sconfreq(f, 0); /* Send Configure-Request */
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LS_ACKRCVD:
|
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:
|
case LS_OPENED:
|
||||||
/* Go down and restart negotiation */
|
/* Go down and restart negotiation */
|
||||||
if (f->callbacks->down)
|
if (f->callbacks->down) {
|
||||||
(*f->callbacks->down)(f); /* Inform upper layers */
|
(*f->callbacks->down)(f); /* Inform upper layers */
|
||||||
|
}
|
||||||
fsm_sconfreq(f, 0); /* Send initial Configure-Request */
|
fsm_sconfreq(f, 0); /* Send initial Configure-Request */
|
||||||
f->state = LS_REQSENT;
|
f->state = LS_REQSENT;
|
||||||
break;
|
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.
|
* 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",
|
FSMDEBUG((LOG_INFO, "fsm_rtermreq(%s): Rcvd id %d state=%d (%s)\n",
|
||||||
PROTO_NAME(f), id, f->state, ppperr_strerr[f->state]));
|
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 {
|
} else {
|
||||||
FSMDEBUG((LOG_INFO, "%s terminated by peer\n", PROTO_NAME(f)));
|
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->callbacks->down)(f); /* Inform upper layers */
|
||||||
|
}
|
||||||
f->retransmits = 0;
|
f->retransmits = 0;
|
||||||
f->state = LS_STOPPING;
|
f->state = LS_STOPPING;
|
||||||
TIMEOUT(fsm_timeout, f, f->timeouttime);
|
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.
|
* 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",
|
FSMDEBUG((LOG_INFO, "fsm_rtermack(%s): state=%d (%s)\n",
|
||||||
PROTO_NAME(f), f->state, ppperr_strerr[f->state]));
|
PROTO_NAME(f), f->state, ppperr_strerr[f->state]));
|
||||||
@ -760,14 +788,17 @@ static void fsm_rtermack(fsm *f)
|
|||||||
case LS_CLOSING:
|
case LS_CLOSING:
|
||||||
UNTIMEOUT(fsm_timeout, f);
|
UNTIMEOUT(fsm_timeout, f);
|
||||||
f->state = LS_CLOSED;
|
f->state = LS_CLOSED;
|
||||||
if( f->callbacks->finished )
|
if( f->callbacks->finished ) {
|
||||||
(*f->callbacks->finished)(f);
|
(*f->callbacks->finished)(f);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LS_STOPPING:
|
case LS_STOPPING:
|
||||||
UNTIMEOUT(fsm_timeout, f);
|
UNTIMEOUT(fsm_timeout, f);
|
||||||
f->state = LS_STOPPED;
|
f->state = LS_STOPPED;
|
||||||
if( f->callbacks->finished )
|
if( f->callbacks->finished ) {
|
||||||
(*f->callbacks->finished)(f);
|
(*f->callbacks->finished)(f);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LS_ACKRCVD:
|
case LS_ACKRCVD:
|
||||||
@ -775,8 +806,9 @@ static void fsm_rtermack(fsm *f)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case LS_OPENED:
|
case LS_OPENED:
|
||||||
if (f->callbacks->down)
|
if (f->callbacks->down) {
|
||||||
(*f->callbacks->down)(f); /* Inform upper layers */
|
(*f->callbacks->down)(f); /* Inform upper layers */
|
||||||
|
}
|
||||||
fsm_sconfreq(f, 0);
|
fsm_sconfreq(f, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -786,7 +818,8 @@ static void fsm_rtermack(fsm *f)
|
|||||||
/*
|
/*
|
||||||
* fsm_rcoderej - Receive an Code-Reject.
|
* 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;
|
u_char code, id;
|
||||||
|
|
||||||
@ -802,23 +835,26 @@ static void fsm_rcoderej(fsm *f, u_char *inp, int len)
|
|||||||
FSMDEBUG((LOG_WARNING, "%s: Rcvd Code-Reject for code %d, id %d\n",
|
FSMDEBUG((LOG_WARNING, "%s: Rcvd Code-Reject for code %d, id %d\n",
|
||||||
PROTO_NAME(f), code, id));
|
PROTO_NAME(f), code, id));
|
||||||
|
|
||||||
if( f->state == LS_ACKRCVD )
|
if( f->state == LS_ACKRCVD ) {
|
||||||
f->state = LS_REQSENT;
|
f->state = LS_REQSENT;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* fsm_sconfreq - Send a Configure-Request.
|
* 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;
|
u_char *outp;
|
||||||
int cilen;
|
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 */
|
/* Not currently negotiating - reset options */
|
||||||
if( f->callbacks->resetci )
|
if( f->callbacks->resetci ) {
|
||||||
(*f->callbacks->resetci)(f);
|
(*f->callbacks->resetci)(f);
|
||||||
|
}
|
||||||
f->nakloops = 0;
|
f->nakloops = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -836,12 +872,15 @@ static void fsm_sconfreq(fsm *f, int retransmit)
|
|||||||
outp = outpacket_buf[f->unit] + PPP_HDRLEN + HEADERLEN;
|
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);
|
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;
|
cilen = peer_mru[f->unit] - HEADERLEN;
|
||||||
if (f->callbacks->addci)
|
}
|
||||||
|
if (f->callbacks->addci) {
|
||||||
(*f->callbacks->addci)(f, outp, &cilen);
|
(*f->callbacks->addci)(f, outp, &cilen);
|
||||||
} else
|
}
|
||||||
|
} else {
|
||||||
cilen = 0;
|
cilen = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* send the request to our peer */
|
/* send the request to our peer */
|
||||||
fsm_sdata(f, CONFREQ, f->reqid, outp, cilen);
|
fsm_sdata(f, CONFREQ, f->reqid, outp, cilen);
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
* 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
|
#ifndef FSM_H
|
||||||
@ -88,7 +88,6 @@
|
|||||||
#define LS_ACKSENT 8 /* We've sent a Config Ack */
|
#define LS_ACKSENT 8 /* We've sent a Config Ack */
|
||||||
#define LS_OPENED 9 /* Connection available */
|
#define LS_OPENED 9 /* Connection available */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Flags - indicate options controlling FSM operation
|
* Flags - indicate options controlling FSM operation
|
||||||
*/
|
*/
|
||||||
@ -124,34 +123,20 @@ typedef struct fsm {
|
|||||||
|
|
||||||
|
|
||||||
typedef struct fsm_callbacks {
|
typedef struct fsm_callbacks {
|
||||||
void (*resetci) /* Reset our Configuration Information */
|
void (*resetci)(fsm*); /* Reset our Configuration Information */
|
||||||
(fsm*);
|
int (*cilen)(fsm*); /* Length of our Configuration Information */
|
||||||
int (*cilen) /* Length of our Configuration Information */
|
void (*addci)(fsm*, u_char*, int*); /* Add our Configuration Information */
|
||||||
(fsm*);
|
int (*ackci)(fsm*, u_char*, int); /* ACK our Configuration Information */
|
||||||
void (*addci) /* Add our Configuration Information */
|
int (*nakci)(fsm*, u_char*, int); /* NAK our Configuration Information */
|
||||||
(fsm*, u_char*, int*);
|
int (*rejci)(fsm*, u_char*, int); /* Reject our Configuration Information */
|
||||||
int (*ackci) /* ACK our Configuration Information */
|
int (*reqci)(fsm*, u_char*, int*, int); /* Request peer's Configuration Information */
|
||||||
(fsm*, u_char*, int);
|
void (*up)(fsm*); /* Called when fsm reaches LS_OPENED state */
|
||||||
int (*nakci) /* NAK our Configuration Information */
|
void (*down)(fsm*); /* Called when fsm leaves LS_OPENED state */
|
||||||
(fsm*, u_char*, int);
|
void (*starting)(fsm*); /* Called when we want the lower layer */
|
||||||
int (*rejci) /* Reject our Configuration Information */
|
void (*finished)(fsm*); /* Called when we don't want the lower layer */
|
||||||
(fsm*, u_char*, int);
|
void (*protreject)(int); /* Called when Protocol-Reject received */
|
||||||
int (*reqci) /* Request peer's Configuration Information */
|
void (*retransmit)(fsm*); /* Retransmission is necessary */
|
||||||
(fsm*, u_char*, int*, int);
|
int (*extcode)(fsm*, int, u_char, u_char*, int); /* Called when unknown code received */
|
||||||
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);
|
|
||||||
char *proto_name; /* String name for protocol (for messages) */
|
char *proto_name; /* String name for protocol (for messages) */
|
||||||
} fsm_callbacks;
|
} fsm_callbacks;
|
||||||
|
|
||||||
|
@ -59,6 +59,8 @@ typedef enum {
|
|||||||
*/
|
*/
|
||||||
void ppp_trace(int level, const char *format,...);
|
void ppp_trace(int level, const char *format,...);
|
||||||
|
|
||||||
|
#define TRACELCP PPP_DEBUG
|
||||||
|
|
||||||
#if PPP_DEBUG
|
#if PPP_DEBUG
|
||||||
|
|
||||||
#define AUTHDEBUG(a) ppp_trace a
|
#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 CHAPDEBUG(a) ppp_trace a
|
||||||
#define PPPDEBUG(a) ppp_trace a
|
#define PPPDEBUG(a) ppp_trace a
|
||||||
|
|
||||||
#define TRACELCP 1
|
|
||||||
|
|
||||||
#else /* PPP_DEBUG */
|
#else /* PPP_DEBUG */
|
||||||
|
|
||||||
#define AUTHDEBUG(a)
|
#define AUTHDEBUG(a)
|
||||||
@ -79,11 +79,8 @@ void ppp_trace(int level, const char *format,...);
|
|||||||
#define LCPDEBUG(a)
|
#define LCPDEBUG(a)
|
||||||
#define FSMDEBUG(a)
|
#define FSMDEBUG(a)
|
||||||
#define CHAPDEBUG(a)
|
#define CHAPDEBUG(a)
|
||||||
|
|
||||||
#define PPPDEBUG(a)
|
#define PPPDEBUG(a)
|
||||||
|
|
||||||
#define TRACELCP 0
|
|
||||||
|
|
||||||
#endif /* PPP_DEBUG */
|
#endif /* PPP_DEBUG */
|
||||||
|
|
||||||
#endif /* PPPDEBUG_H */
|
#endif /* PPPDEBUG_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user