summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/ccp.c
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>2001-02-04 22:53:11 +0000
committerbrian <brian@FreeBSD.org>2001-02-04 22:53:11 +0000
commita59964d665ad1cfe452c2c227de97a8af275fec8 (patch)
treed2333a42ca97b6c465b331cfb89fc7686024d300 /usr.sbin/ppp/ccp.c
parentc0460ef928465b6cc12672bb05309f2a94ab6f87 (diff)
downloadFreeBSD-src-a59964d665ad1cfe452c2c227de97a8af275fec8.zip
FreeBSD-src-a59964d665ad1cfe452c2c227de97a8af275fec8.tar.gz
Add a ``Usable'' function to the ccp switch. The function
is called prior to sending a CCP configure request for a given protocol. The default is to send the request, but this is overridden for MPPE which checks to see if the lcp negotiations agreed CHAP81, and if not fails. Use the same function to decide if we should reject peer requests for MPPE. This should get rid of those boring messages about not being able to initialise MPPE when we don't negotiate CHAP81.
Diffstat (limited to 'usr.sbin/ppp/ccp.c')
-rw-r--r--usr.sbin/ppp/ccp.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/usr.sbin/ppp/ccp.c b/usr.sbin/ppp/ccp.c
index 6acfc53..f2b7f19 100644
--- a/usr.sbin/ppp/ccp.c
+++ b/usr.sbin/ppp/ccp.c
@@ -268,7 +268,8 @@ CcpSendConfigReq(struct fsm *fp)
ccp->out.algorithm = -1;
for (f = 0; f < NALGORITHMS; f++)
if (IsEnabled(ccp->cfg.neg[algorithm[f]->Neg]) &&
- !REJECTED(ccp, algorithm[f]->id)) {
+ !REJECTED(ccp, algorithm[f]->id) &&
+ (*algorithm[f]->Usable)(fp)) {
if (!alloc)
for (o = &ccp->out.opt; *o != NULL; o = &(*o)->next)
@@ -491,6 +492,7 @@ CcpDecodeConfig(struct fsm *fp, u_char *cp, int plen, int mode_type,
switch (mode_type) {
case MODE_REQ:
if (IsAccepted(ccp->cfg.neg[algorithm[f]->Neg]) &&
+ (*algorithm[f]->Usable)(fp) &&
ccp->in.algorithm == -1) {
memcpy(&ccp->in.opt, cp, length);
switch ((*algorithm[f]->i.Set)(&ccp->in.opt, &ccp->cfg)) {
@@ -697,4 +699,10 @@ ccp_SetOpenMode(struct ccp *ccp)
return 0; /* No CCP at all */
}
+int
+ccp_IsUsable(struct fsm *fp)
+{
+ return 1;
+}
+
struct layer ccplayer = { LAYER_CCP, "ccp", ccp_LayerPush, ccp_LayerPull };
OpenPOWER on IntegriCloud