summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/cbcp.c
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>1998-10-25 23:35:15 +0000
committerbrian <brian@FreeBSD.org>1998-10-25 23:35:15 +0000
commitaa7fed94a8ccd9aa4b30fda6730aca1c6c5ffc17 (patch)
treef99776d7c1eee132bf3b60d74dbe79c206f6c657 /usr.sbin/ppp/cbcp.c
parentd76017bab4f1ccc64b1d79f2369d9d8cc8aee4e5 (diff)
downloadFreeBSD-src-aa7fed94a8ccd9aa4b30fda6730aca1c6c5ffc17.zip
FreeBSD-src-aa7fed94a8ccd9aa4b30fda6730aca1c6c5ffc17.tar.gz
Don't send a DELAY value when sending CBCP_NONUM
(as per the spec). Spotted by: Andrzej Tobola <san@koziolek.lublin.top.pl>
Diffstat (limited to 'usr.sbin/ppp/cbcp.c')
-rw-r--r--usr.sbin/ppp/cbcp.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/usr.sbin/ppp/cbcp.c b/usr.sbin/ppp/cbcp.c
index e2a22e5..9d01ef5 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.4 1998/10/17 12:28:09 brian Exp $
+ * $Id: cbcp.c,v 1.5 1998/10/17 12:28:11 brian Exp $
*/
#include <sys/types.h>
@@ -293,7 +293,7 @@ cbcp_SendReq(struct cbcp *cbcp)
break;
default:
- data.length = 2;
+ data.length = (char *)&data.delay - (char *)&data;
break;
}
@@ -471,7 +471,9 @@ cbcp_SendResponse(struct cbcp *cbcp)
data.type = cbcp->fsm.type;
data.delay = cbcp->fsm.delay;
addr = (struct cbcp_addr *)data.addr_start;
- if (*cbcp->fsm.phone) {
+ if (data.type == CBCP_NONUM)
+ data.length = (char *)&data.delay - (char *)&data;
+ else 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;
@@ -564,6 +566,7 @@ static void
cbcp_SendAck(struct cbcp *cbcp)
{
struct cbcp_data data;
+ char *end;
/* Only callees send ACKs */
@@ -572,7 +575,8 @@ cbcp_SendAck(struct cbcp *cbcp)
data.type = cbcp->fsm.type;
data.delay = cbcp->fsm.delay;
- data.length = data.addr_start - (char *)&data;
+ end = data.type == CBCP_NONUM ? (char *)&data.delay : data.addr_start;
+ data.length = end - (char *)&data;
cbcp_data_Show(&data);
cbcp_Output(cbcp, CBCP_ACK, &data);
OpenPOWER on IntegriCloud