From 867d13b0074622f013a2d05d6bf5d926ed409330 Mon Sep 17 00:00:00 2001 From: Sylvain Rochet Date: Sat, 18 Apr 2015 23:51:10 +0200 Subject: [PATCH] PPP, CCP, MPPE: calling mppe_init() in ccp.c instead of using ccp_test() We don't need this ccp_test() stuff which is used to test if kernel have the ability to process MPPE packets. Reworked MPPE so we don't need it. --- src/netif/ppp/ccp.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/netif/ppp/ccp.c b/src/netif/ppp/ccp.c index 3bacaa65..e78d671c 100644 --- a/src/netif/ppp/ccp.c +++ b/src/netif/ppp/ccp.c @@ -41,6 +41,7 @@ #if MPPE_SUPPORT #include "netif/ppp/lcp.h" /* lcp_close(), lcp_fsm */ +#include "netif/ppp/mppe.h" /* mppe_init() */ #endif /* MPPE_SUPPORT */ /* @@ -540,7 +541,9 @@ static void ccp_resetci(fsm *f) { ppp_pcb *pcb = f->pcb; ccp_options *go = &pcb->ccp_gotoptions; ccp_options *wo = &pcb->ccp_wantoptions; +#if DEFLATE_SUPPORT || BSDCOMPRESS_SUPPORT || PREDICTOR_SUPPORT u_char opt_buf[CCP_MAX_OPTION_LENGTH]; +#endif /* DEFLATE_SUPPORT || BSDCOMPRESS_SUPPORT || PREDICTOR_SUPPORT */ #if DEFLATE_SUPPORT || BSDCOMPRESS_SUPPORT int res; #endif /* DEFLATE_SUPPORT || BSDCOMPRESS_SUPPORT */ @@ -631,19 +634,10 @@ static void ccp_resetci(fsm *f) { * Check whether the kernel knows about the various * compression methods we might request. */ -#if MPPE_SUPPORT - if (go->mppe) { - opt_buf[0] = CI_MPPE; - opt_buf[1] = CILEN_MPPE; - MPPE_OPTS_TO_CI(go->mppe, &opt_buf[2]); - /* Key material unimportant here. */ - if (ccp_test(pcb, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, 0) <= 0) { - ppp_error("MPPE required, but kernel has no support."); - lcp_close(pcb, "MPPE required but not available"); - } - } -#endif /* MPPE_SUPPORT */ #if BSDCOMPRESS_SUPPORT + /* FIXME: we don't need to test if BSD compress is available + * if BSDCOMPRESS_SUPPORT is set, it is. + */ if (go->bsd_compress) { opt_buf[0] = CI_BSD_COMPRESS; opt_buf[1] = CILEN_BSD_COMPRESS; @@ -665,6 +659,9 @@ static void ccp_resetci(fsm *f) { } #endif /* BSDCOMPRESS_SUPPORT */ #if DEFLATE_SUPPORT + /* FIXME: we don't need to test if deflate is available + * if DEFLATE_SUPPORT is set, it is. + */ if (go->deflate) { if (go->deflate_correct) { opt_buf[0] = CI_DEFLATE; @@ -711,6 +708,9 @@ static void ccp_resetci(fsm *f) { } #endif /* DEFLATE_SUPPORT */ #if PREDICTOR_SUPPORT + /* FIXME: we don't need to test if predictor is available, + * if PREDICTOR_SUPPORT is set, it is. + */ if (go->predictor_1) { opt_buf[0] = CI_PREDICTOR_1; opt_buf[1] = CILEN_PREDICTOR_1; @@ -772,8 +772,8 @@ static void ccp_addci(fsm *f, u_char *p, int *lenp) { MPPE_OPTS_TO_CI(go->mppe, &p[2]); MPPE_OPTS_TO_CI(go->mppe, &opt_buf[2]); MEMCPY(&opt_buf[CILEN_MPPE], pcb->mppe_recv_key, MPPE_MAX_KEY_LEN); - /* ccp_test() can't fail, we've already tested it! */ - ccp_test(pcb, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, 0); + mppe_init(&pcb->mppe_decomp, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, + pcb->netif->num, 1, "mppe_decomp_init"); p += CILEN_MPPE; } #endif /* MPPE_SUPPORT */ @@ -1205,8 +1205,8 @@ static int ccp_reqci(fsm *f, u_char *p, int *lenp, int dont_nak) { MEMCPY(opt_buf, p, CILEN_MPPE); MEMCPY(&opt_buf[CILEN_MPPE], pcb->mppe_send_key, MPPE_MAX_KEY_LEN); - if (ccp_test(pcb, opt_buf, - CILEN_MPPE + MPPE_MAX_KEY_LEN, 1) <= 0) { + if (mppe_init(&pcb->mppe_comp, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, + pcb->netif->num, 1, "mppe_comp_init") <= 0) { /* This shouldn't happen, we've already tested it! */ ppp_error("MPPE required, but kernel has no support."); lcp_close(pcb, "MPPE required but not available");