summaryrefslogtreecommitdiff
path: root/usr.sbin/ppp/cbcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/ppp/cbcp.c')
-rw-r--r--usr.sbin/ppp/cbcp.c55
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);