diff options
| author | cvs2svn <cvs2svn@FreeBSD.org> | 1999-01-21 00:55:32 +0000 |
|---|---|---|
| committer | cvs2svn <cvs2svn@FreeBSD.org> | 1999-01-21 00:55:32 +0000 |
| commit | 76b5366091f76c9bc73570149ef5055648fc2c39 (patch) | |
| tree | 590d020e0f2a5bea6e09d66d951a674443b21d67 /usr.sbin/ppp/cbcp.c | |
| parent | 4b4d01da6f07f7754ff6a6e4f5223e9f0984d1a6 (diff) | |
Diffstat (limited to 'usr.sbin/ppp/cbcp.c')
| -rw-r--r-- | usr.sbin/ppp/cbcp.c | 55 |
1 files changed, 9 insertions, 46 deletions
diff --git a/usr.sbin/ppp/cbcp.c b/usr.sbin/ppp/cbcp.c index defa43186dd2f..27f83e9f204d3 100644 --- a/usr.sbin/ppp/cbcp.c +++ b/usr.sbin/ppp/cbcp.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: cbcp.c,v 1.7 1998/10/31 17:38:48 brian Exp $ + * $Id: cbcp.c,v 1.1 1998/08/07 18:44:16 brian Exp $ */ #include <sys/types.h> @@ -293,7 +293,7 @@ cbcp_SendReq(struct cbcp *cbcp) break; default: - data.length = (char *)&data.delay - (char *)&data; + data.length = 2; break; } @@ -354,12 +354,10 @@ cbcp_AdjustResponse(struct cbcp *cbcp, struct cbcp_data *data) switch (data->type) { case CBCP_NONUM: - /* - * If the callee offers no callback, we send our desired response - * anyway. This is what Win95 does - although I can't find this - * behaviour documented in the spec.... - */ - return 1; + if (cbcp->fsm.type == CBCP_NONUM) + return 1; + log_Printf(LogPHASE, "CBCP: server wants no callback !\n"); + return 0; case CBCP_CLIENTNUM: if (cbcp->fsm.type == CBCP_CLIENTNUM) { @@ -473,9 +471,7 @@ cbcp_SendResponse(struct cbcp *cbcp) data.type = cbcp->fsm.type; data.delay = cbcp->fsm.delay; addr = (struct cbcp_addr *)data.addr_start; - if (data.type == CBCP_NONUM) - data.length = (char *)&data.delay - (char *)&data; - else if (*cbcp->fsm.phone) { + if (*cbcp->fsm.phone) { addr->type = CBCP_ADDR_PSTN; strcpy(addr->addr, cbcp->fsm.phone); data.length = (addr->addr + strlen(addr->addr) + 1) - (char *)&data; @@ -552,13 +548,6 @@ cbcp_CheckResponse(struct cbcp *cbcp, struct cbcp_data *data) log_Printf(LogPHASE, "Internal CBCP error - agreed on %d ??!?\n", (int)cbcp->fsm.type); return CBCP_ACTION_DOWN; - } else if (data->type == CBCP_NONUM && cbcp->fsm.type == CBCP_CLIENTNUM) { - /* - * Client doesn't want CBCP after all.... - * We only allow this when ``set cbcp *'' has been specified. - */ - cbcp->fsm.type = CBCP_NONUM; - return CBCP_ACTION_ACK; } log_Printf(LogCBCP, "Invalid peer RESPONSE\n"); return CBCP_ACTION_REQ; @@ -568,7 +557,6 @@ static void cbcp_SendAck(struct cbcp *cbcp) { struct cbcp_data data; - struct cbcp_addr *addr; /* Only callees send ACKs */ @@ -576,22 +564,8 @@ cbcp_SendAck(struct cbcp *cbcp) cbcp->fsm.id, cbcpstate(cbcp->fsm.state)); data.type = cbcp->fsm.type; - switch (data.type) { - case CBCP_NONUM: - data.length = (char *)&data.delay - (char *)&data; - break; - case CBCP_CLIENTNUM: - addr = (struct cbcp_addr *)data.addr_start; - addr->type = CBCP_ADDR_PSTN; - strcpy(addr->addr, cbcp->fsm.phone); - data.delay = cbcp->fsm.delay; - data.length = addr->addr + strlen(addr->addr) + 1 - (char *)&data; - break; - default: - data.delay = cbcp->fsm.delay; - data.length = data.addr_start - (char *)&data; - break; - } + data.delay = cbcp->fsm.delay; + data.length = data.addr_start - (char *)&data; cbcp_data_Show(&data); cbcp_Output(cbcp, CBCP_ACK, &data); @@ -636,7 +610,6 @@ cbcp_Input(struct physical *p, struct mbuf *bp) timer_Stop(&cbcp->fsm.timer); if (cbcp_AdjustResponse(cbcp, data)) { cbcp->fsm.restart = DEF_REQs; - cbcp->fsm.id = head->id; cbcp_SendResponse(cbcp); } else datalink_CBCPFailed(cbcp->p->dl); @@ -648,11 +621,6 @@ cbcp_Input(struct physical *p, struct mbuf *bp) log_Printf(LogCBCP, "%s: RecvResponse(%d) state = %s\n", p->dl->name, head->id, cbcpstate(cbcp->fsm.state)); cbcp_data_Show(data); - if (cbcp->fsm.id != head->id) { - log_Printf(LogCBCP, "Warning: Expected id was %d, not %d\n", - cbcp->fsm.id, head->id); - cbcp->fsm.id = head->id; - } if (cbcp->fsm.state == CBCP_REQSENT || cbcp->fsm.state == CBCP_ACKSENT) { timer_Stop(&cbcp->fsm.timer); switch (cbcp_CheckResponse(cbcp, data)) { @@ -685,11 +653,6 @@ cbcp_Input(struct physical *p, struct mbuf *bp) log_Printf(LogCBCP, "%s: RecvAck(%d) state = %s\n", p->dl->name, head->id, cbcpstate(cbcp->fsm.state)); cbcp_data_Show(data); - if (cbcp->fsm.id != head->id) { - log_Printf(LogCBCP, "Warning: Expected id was %d, not %d\n", - cbcp->fsm.id, head->id); - cbcp->fsm.id = head->id; - } if (cbcp->fsm.state == CBCP_RESPSENT) { timer_Stop(&cbcp->fsm.timer); datalink_CBCPComplete(cbcp->p->dl); |
