X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppd%2Ffsm.c;h=b5b8148f9a2c5af079212f45193dc98d85963f53;hp=7f63e9fcd37d5d7093752c575bfe0d554cf45e10;hb=31b4bba68d46b38119fd8620ee09ff7f8831f4b5;hpb=73530fd459d5c7b22a0f320fb6438c825c9b4731 diff --git a/pppd/fsm.c b/pppd/fsm.c index 7f63e9f..b5b8148 100644 --- a/pppd/fsm.c +++ b/pppd/fsm.c @@ -17,9 +17,7 @@ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ -#ifndef lint -static char rcsid[] = "$Id: fsm.c,v 1.12 1996/07/01 01:13:11 paulus Exp $"; -#endif +#define RCSID "$Id: fsm.c,v 1.17 1999/08/13 06:46:12 paulus Exp $" /* * TODO: @@ -30,14 +28,13 @@ static char rcsid[] = "$Id: fsm.c,v 1.12 1996/07/01 01:13:11 paulus Exp $"; #include #include #include -#include #include "pppd.h" #include "fsm.h" -extern char *proto_name(); +static const char rcsid[] = RCSID; -static void fsm_timeout __P((caddr_t)); +static void fsm_timeout __P((void *)); static void fsm_rconfreq __P((fsm *, int, u_char *, int)); static void fsm_rconfack __P((fsm *, int, u_char *, int)); static void fsm_rconfnakrej __P((fsm *, int, int, u_char *, int)); @@ -94,8 +91,7 @@ fsm_lowerup(f) break; default: - FSMDEBUG((LOG_INFO, "%s: Up event in state %d!", - PROTO_NAME(f), f->state)); + FSMDEBUG(("%s: Up event in state %d!", PROTO_NAME(f), f->state)); } } @@ -122,7 +118,7 @@ fsm_lowerdown(f) case CLOSING: f->state = INITIAL; - UNTIMEOUT(fsm_timeout, (caddr_t) f); /* Cancel timeout */ + UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ break; case STOPPING: @@ -130,7 +126,7 @@ fsm_lowerdown(f) case ACKRCVD: case ACKSENT: f->state = STARTING; - UNTIMEOUT(fsm_timeout, (caddr_t) f); /* Cancel timeout */ + UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ break; case OPENED: @@ -140,8 +136,7 @@ fsm_lowerdown(f) break; default: - FSMDEBUG((LOG_INFO, "%s: Down event in state %d!", - PROTO_NAME(f), f->state)); + FSMDEBUG(("%s: Down event in state %d!", PROTO_NAME(f), f->state)); } } @@ -213,7 +208,7 @@ fsm_close(f, reason) case ACKSENT: case OPENED: if( f->state != OPENED ) - UNTIMEOUT(fsm_timeout, (caddr_t) f); /* Cancel timeout */ + UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ else if( f->callbacks->down ) (*f->callbacks->down)(f); /* Inform upper layers we're down */ @@ -221,7 +216,7 @@ fsm_close(f, reason) f->retransmits = f->maxtermtransmits; fsm_sdata(f, TERMREQ, f->reqid = ++f->id, (u_char *) f->term_reason, f->term_reason_len); - TIMEOUT(fsm_timeout, (caddr_t) f, f->timeouttime); + TIMEOUT(fsm_timeout, f, f->timeouttime); --f->retransmits; f->state = CLOSING; @@ -235,7 +230,7 @@ fsm_close(f, reason) */ static void fsm_timeout(arg) - caddr_t arg; + void *arg; { fsm *f = (fsm *) arg; @@ -253,7 +248,7 @@ fsm_timeout(arg) /* Send Terminate-Request */ fsm_sdata(f, TERMREQ, f->reqid = ++f->id, (u_char *) f->term_reason, f->term_reason_len); - TIMEOUT(fsm_timeout, (caddr_t) f, f->timeouttime); + TIMEOUT(fsm_timeout, f, f->timeouttime); --f->retransmits; } break; @@ -262,8 +257,7 @@ fsm_timeout(arg) case ACKRCVD: case ACKSENT: if (f->retransmits <= 0) { - syslog(LOG_WARNING, "%s: timeout sending Config-Requests", - PROTO_NAME(f)); + warn("%s: timeout sending Config-Requests\n", PROTO_NAME(f)); f->state = STOPPED; if( (f->flags & OPT_PASSIVE) == 0 && f->callbacks->finished ) (*f->callbacks->finished)(f); @@ -279,8 +273,7 @@ fsm_timeout(arg) break; default: - FSMDEBUG((LOG_INFO, "%s: Timeout event in state %d!", - PROTO_NAME(f), f->state)); + FSMDEBUG(("%s: Timeout event in state %d!", PROTO_NAME(f), f->state)); } } @@ -304,27 +297,24 @@ fsm_input(f, inpacket, l) */ inp = inpacket; if (l < HEADERLEN) { - FSMDEBUG((LOG_WARNING, "fsm_input(%x): Rcvd short header.", - f->protocol)); + FSMDEBUG(("fsm_input(%x): Rcvd short header.", f->protocol)); return; } GETCHAR(code, inp); GETCHAR(id, inp); GETSHORT(len, inp); if (len < HEADERLEN) { - FSMDEBUG((LOG_INFO, "fsm_input(%x): Rcvd illegal length.", - f->protocol)); + FSMDEBUG(("fsm_input(%x): Rcvd illegal length.", f->protocol)); return; } if (len > l) { - FSMDEBUG((LOG_INFO, "fsm_input(%x): Rcvd short packet.", - f->protocol)); + FSMDEBUG(("fsm_input(%x): Rcvd short packet.", f->protocol)); return; } len -= HEADERLEN; /* subtract header length */ if( f->state == INITIAL || f->state == STARTING ){ - FSMDEBUG((LOG_INFO, "fsm_input(%x): Rcvd packet in state %d.", + FSMDEBUG(("fsm_input(%x): Rcvd packet in state %d.", f->protocol, f->state)); return; } @@ -379,7 +369,6 @@ fsm_rconfreq(f, id, inp, len) { int code, reject_if_disagree; - FSMDEBUG((LOG_INFO, "fsm_rconfreq(%s): Rcvd id %d.", PROTO_NAME(f), id)); switch( f->state ){ case CLOSED: /* Go away, we're closed */ @@ -420,7 +409,7 @@ fsm_rconfreq(f, id, inp, len) if (code == CONFACK) { if (f->state == ACKRCVD) { - UNTIMEOUT(fsm_timeout, (caddr_t) f); /* Cancel timeout */ + UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ f->state = OPENED; if (f->callbacks->up) (*f->callbacks->up)(f); /* Inform upper layers */ @@ -448,16 +437,12 @@ fsm_rconfack(f, id, inp, len) u_char *inp; int len; { - FSMDEBUG((LOG_INFO, "fsm_rconfack(%s): Rcvd id %d.", - PROTO_NAME(f), 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)) ){ /* Ack is bad - ignore it */ - FSMDEBUG((LOG_INFO, "%s: received bad Ack (length %d)", - PROTO_NAME(f), len)); + error("Received bad configure-ack: %P", inp, len); return; } f->seen_ack = 1; @@ -475,13 +460,13 @@ fsm_rconfack(f, id, inp, len) case ACKRCVD: /* Huh? an extra valid Ack? oh well... */ - UNTIMEOUT(fsm_timeout, (caddr_t) f); /* Cancel timeout */ + UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ fsm_sconfreq(f, 0); f->state = REQSENT; break; case ACKSENT: - UNTIMEOUT(fsm_timeout, (caddr_t) f); /* Cancel timeout */ + UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ f->state = OPENED; f->retransmits = f->maxconfreqtransmits; if (f->callbacks->up) @@ -509,19 +494,15 @@ fsm_rconfnakrej(f, code, id, inp, len) u_char *inp; int len; { - int (*proc)(); + int (*proc) __P((fsm *, u_char *, int)); int ret; - FSMDEBUG((LOG_INFO, "fsm_rconfnakrej(%s): Rcvd id %d.", - PROTO_NAME(f), 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 */ - FSMDEBUG((LOG_INFO, "%s: received bad %s (length %d)", - PROTO_NAME(f), (code==CONFNAK? "Nak": "reject"), len)); + error("Received bad configure-nak/rej: %P", inp, len); return; } f->seen_ack = 1; @@ -535,7 +516,7 @@ fsm_rconfnakrej(f, code, id, inp, len) case REQSENT: case ACKSENT: /* They didn't agree to what we wanted - try another request */ - UNTIMEOUT(fsm_timeout, (caddr_t) f); /* Cancel timeout */ + UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ if (ret < 0) f->state = STOPPED; /* kludge for stopping CCP */ else @@ -544,7 +525,7 @@ fsm_rconfnakrej(f, code, id, inp, len) case ACKRCVD: /* Got a Nak/reject when we had already had an Ack?? oh well... */ - UNTIMEOUT(fsm_timeout, (caddr_t) f); /* Cancel timeout */ + UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ fsm_sconfreq(f, 0); f->state = REQSENT; break; @@ -570,11 +551,6 @@ fsm_rtermreq(f, id, p, len) u_char *p; int len; { - char str[80]; - - FSMDEBUG((LOG_INFO, "fsm_rtermreq(%s): Rcvd id %d.", - PROTO_NAME(f), id)); - switch (f->state) { case ACKRCVD: case ACKSENT: @@ -583,15 +559,14 @@ fsm_rtermreq(f, id, p, len) case OPENED: if (len > 0) { - fmtmsg(str, sizeof(str), "%0.*v", len, p); - syslog(LOG_INFO, "%s terminated by peer (%s)", PROTO_NAME(f), str); + info("%s terminated by peer (%0.*v)", PROTO_NAME(f), len, p); } else - syslog(LOG_INFO, "%s terminated by peer", PROTO_NAME(f)); + info("%s terminated by peer", PROTO_NAME(f)); if (f->callbacks->down) (*f->callbacks->down)(f); /* Inform upper layers */ f->retransmits = 0; f->state = STOPPING; - TIMEOUT(fsm_timeout, (caddr_t) f, f->timeouttime); + TIMEOUT(fsm_timeout, f, f->timeouttime); break; } @@ -606,17 +581,15 @@ static void fsm_rtermack(f) fsm *f; { - FSMDEBUG((LOG_INFO, "fsm_rtermack(%s).", PROTO_NAME(f))); - switch (f->state) { case CLOSING: - UNTIMEOUT(fsm_timeout, (caddr_t) f); + UNTIMEOUT(fsm_timeout, f); f->state = CLOSED; if( f->callbacks->finished ) (*f->callbacks->finished)(f); break; case STOPPING: - UNTIMEOUT(fsm_timeout, (caddr_t) f); + UNTIMEOUT(fsm_timeout, f); f->state = STOPPED; if( f->callbacks->finished ) (*f->callbacks->finished)(f); @@ -646,16 +619,13 @@ fsm_rcoderej(f, inp, len) { u_char code, id; - FSMDEBUG((LOG_INFO, "fsm_rcoderej(%s).", PROTO_NAME(f))); - if (len < HEADERLEN) { - FSMDEBUG((LOG_INFO, "fsm_rcoderej: Rcvd short Code-Reject packet!")); + FSMDEBUG(("fsm_rcoderej: Rcvd short Code-Reject packet!")); return; } GETCHAR(code, inp); GETCHAR(id, inp); - syslog(LOG_WARNING, "%s: Rcvd Code-Reject for code %d, id %d", - PROTO_NAME(f), code, id); + warn("%s: Rcvd Code-Reject for code %d, id %d", PROTO_NAME(f), code, id); if( f->state == ACKRCVD ) f->state = REQSENT; @@ -673,7 +643,7 @@ fsm_protreject(f) { switch( f->state ){ case CLOSING: - UNTIMEOUT(fsm_timeout, (caddr_t) f); /* Cancel timeout */ + UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ /* fall through */ case CLOSED: f->state = CLOSED; @@ -685,7 +655,7 @@ fsm_protreject(f) case REQSENT: case ACKRCVD: case ACKSENT: - UNTIMEOUT(fsm_timeout, (caddr_t) f); /* Cancel timeout */ + UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ /* fall through */ case STOPPED: f->state = STOPPED; @@ -701,14 +671,14 @@ fsm_protreject(f) f->retransmits = f->maxtermtransmits; fsm_sdata(f, TERMREQ, f->reqid = ++f->id, (u_char *) f->term_reason, f->term_reason_len); - TIMEOUT(fsm_timeout, (caddr_t) f, f->timeouttime); + TIMEOUT(fsm_timeout, f, f->timeouttime); --f->retransmits; f->state = STOPPING; break; default: - FSMDEBUG((LOG_INFO, "%s: Protocol-reject event in state %d!", + FSMDEBUG(("%s: Protocol-reject event in state %d!", PROTO_NAME(f), f->state)); } } @@ -758,10 +728,7 @@ fsm_sconfreq(f, retransmit) /* start the retransmit timer */ --f->retransmits; - TIMEOUT(fsm_timeout, (caddr_t) f, f->timeouttime); - - FSMDEBUG((LOG_INFO, "%s: sending Configure-Request, id %d", - PROTO_NAME(f), f->reqid)); + TIMEOUT(fsm_timeout, f, f->timeouttime); } @@ -792,7 +759,4 @@ fsm_sdata(f, code, id, data, datalen) PUTCHAR(id, outp); PUTSHORT(outlen, outp); output(f->unit, outpacket_buf, outlen + PPP_HDRLEN); - - FSMDEBUG((LOG_INFO, "fsm_sdata(%s): Sent code %d, id %d.", - PROTO_NAME(f), code, id)); }