X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Fcbcp.c;h=abe6253fe78222f22b996d00daa4319df1ce37f3;hb=1b032c687deba56230f89ff5217e0a0ea445698f;hp=d2f4786737d5e7d1e9d7ea8328ad787b81c303a1;hpb=f1c955be4c9a9a1a0ac000e063124b9f8122a45d;p=ppp.git diff --git a/pppd/cbcp.c b/pppd/cbcp.c index d2f4786..abe6253 100644 --- a/pppd/cbcp.c +++ b/pppd/cbcp.c @@ -18,9 +18,7 @@ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ -#ifndef lint -static char rcsid[] = "$Id: cbcp.c,v 1.5 1999/03/16 02:58:01 paulus Exp $"; -#endif +#define RCSID "$Id: cbcp.c,v 1.13 2002/09/18 02:49:46 carlsonj Exp $" #include #include @@ -31,7 +29,8 @@ static char rcsid[] = "$Id: cbcp.c,v 1.5 1999/03/16 02:58:01 paulus Exp $"; #include "cbcp.h" #include "fsm.h" #include "lcp.h" -#include "ipcp.h" + +static const char rcsid[] = RCSID; /* * Options. @@ -39,8 +38,8 @@ static char rcsid[] = "$Id: cbcp.c,v 1.5 1999/03/16 02:58:01 paulus Exp $"; static int setcbcp __P((char **)); static option_t cbcp_option_list[] = { - { "callback", o_special, setcbcp, - "Ask for callback" }, + { "callback", o_special, (void *)setcbcp, + "Ask for callback", OPT_PRIO | OPT_A2STRVAL, &cbcp[0].us_number }, { NULL } }; @@ -69,6 +68,7 @@ struct protent cbcp_protent = { NULL, 0, "CBCP", + NULL, cbcp_option_list, NULL, NULL, @@ -79,11 +79,11 @@ cbcp_state cbcp[NUM_PPP]; /* internal prototypes */ -static void cbcp_recvreq __P((cbcp_state *us, char *pckt, int len)); +static void cbcp_recvreq __P((cbcp_state *us, u_char *pckt, int len)); static void cbcp_resp __P((cbcp_state *us)); static void cbcp_up __P((cbcp_state *us)); -static void cbcp_recvack __P((cbcp_state *us, char *pckt, int len)); -static void cbcp_send __P((cbcp_state *us, u_char code, u_char *buf, int len)); +static void cbcp_recvack __P((cbcp_state *us, u_char *pckt, int len)); +static void cbcp_send __P((cbcp_state *us, int code, u_char *buf, int len)); /* option processing */ static int @@ -269,8 +269,8 @@ cbcp_printpkt(p, plen, printer, arg) printer(arg, " number = %s", str); } printer(arg, ">"); - break; } + break; default: break; @@ -288,7 +288,7 @@ cbcp_printpkt(p, plen, printer, arg) static void cbcp_recvreq(us, pckt, pcktlen) cbcp_state *us; - char *pckt; + u_char *pckt; int pcktlen; { u_char type, opt_len, delay, addr_type; @@ -383,7 +383,7 @@ cbcp_resp(us) PUTCHAR(len , bufp); PUTCHAR(0, bufp); cbcp_send(us, CBCP_RESP, buf, len); - (*ipcp_protent.open)(us->us_unit); + start_networks(us->us_unit); return; } } @@ -391,7 +391,7 @@ cbcp_resp(us) static void cbcp_send(us, code, buf, len) cbcp_state *us; - u_char code; + int code; u_char *buf; int len; { @@ -417,7 +417,7 @@ cbcp_send(us, code, buf, len) static void cbcp_recvack(us, pckt, len) cbcp_state *us; - char *pckt; + u_char *pckt; int len; { u_char type, delay, addr_type; @@ -438,6 +438,8 @@ cbcp_recvack(us, pckt, len) if (address[0]) dbglog("peer will call: %s", address); } + if (type == CB_CONF_NO) + return; } cbcp_up(us); @@ -450,4 +452,5 @@ cbcp_up(us) { persist = 0; lcp_close(0, "Call me back, please"); + status = EXIT_CALLBACK; }