diff options
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); | 
