X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Fcbcp.c;h=8add25f09b63887d6e793699afafb6b154530e9f;hb=50f06d79e6f4c457a68929df21d4c71b9d2dade1;hp=c9ef0899ae9fb500fbfe692f0f1198cce44e1e91;hpb=2305ca29c0b59dae6edf23b1d69823013999883a;p=ppp.git diff --git a/pppd/cbcp.c b/pppd/cbcp.c index c9ef089..8add25f 100644 --- a/pppd/cbcp.c +++ b/pppd/cbcp.c @@ -19,7 +19,7 @@ */ #ifndef lint -static char rcsid[] = "$Id: cbcp.c,v 1.2 1997/04/30 05:50:26 paulus Exp $"; +static char rcsid[] = "$Id: cbcp.c,v 1.4 1999/03/02 05:34:16 paulus Exp $"; #endif #include @@ -34,6 +34,17 @@ static char rcsid[] = "$Id: cbcp.c,v 1.2 1997/04/30 05:50:26 paulus Exp $"; #include "lcp.h" #include "ipcp.h" +/* + * Options. + */ +static int setcbcp __P((char **)); + +static option_t cbcp_option_list[] = { + { "callback", o_special, setcbcp, + "Ask for callback" }, + { NULL } +}; + /* * Protocol entry points. */ @@ -59,6 +70,8 @@ struct protent cbcp_protent = { NULL, 0, "CBCP", + cbcp_option_list, + NULL, NULL, NULL, NULL @@ -74,6 +87,21 @@ 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)); +/* option processing */ +static int +setcbcp(argv) + char **argv; +{ + lcp_wantoptions[0].neg_cbcp = 1; + cbcp_protent.enabled_flag = 1; + cbcp[0].us_number = strdup(*argv); + if (cbcp[0].us_number == 0) + novm("callback number"); + cbcp[0].us_type |= (1 << CB_CONF_USER); + cbcp[0].us_type |= (1 << CB_CONF_ADMIN); + return (1); +} + /* init state */ static void cbcp_init(iface) @@ -343,10 +371,9 @@ cbcp_resp(us) if (cb_type & ( 1 << CB_CONF_ADMIN ) ) { syslog(LOG_DEBUG, "cbcp_resp CONF_ADMIN"); PUTCHAR(CB_CONF_ADMIN, bufp); - len = 3 + 1; - PUTCHAR(len , bufp); + len = 3; + PUTCHAR(len, bufp); PUTCHAR(5, bufp); /* delay */ - PUTCHAR(0, bufp); cbcp_send(us, CBCP_RESP, buf, len); return; }