From 29ba3df7173f64bc6f4ae8c2c83ba55062f2629d Mon Sep 17 00:00:00 2001 From: Sylvain Rochet Date: Fri, 1 May 2015 00:08:34 +0200 Subject: [PATCH] PPP, re-enabled MRU defines in opt.h --- src/include/lwip/opt.h | 31 +++++++++++++++---------------- src/include/netif/ppp/lcp.h | 2 ++ src/netif/ppp/lcp.c | 22 +++++++++++----------- 3 files changed, 28 insertions(+), 27 deletions(-) diff --git a/src/include/lwip/opt.h b/src/include/lwip/opt.h index 4da16afb..5216e50e 100644 --- a/src/include/lwip/opt.h +++ b/src/include/lwip/opt.h @@ -2001,7 +2001,7 @@ #endif /** - * pbuf_type PPP is using for LCP, PAP, CHAP, EAP, IPCP and IP6CP packets. + * pbuf_type PPP is using for LCP, PAP, CHAP, EAP, CCP, IPCP and IP6CP packets. * * Memory allocated must be single buffered for PPP to works, it requires pbuf * that are not going to be chained when allocated. This requires setting @@ -2015,7 +2015,7 @@ #endif /** - * PPP_FCS_TABLE: Keep a 256*2 byte table to speed up FCS calculation + * PPP_FCS_TABLE: Keep a 256*2 byte table to speed up FCS calculation for PPPoS */ #ifndef PPP_FCS_TABLE #define PPP_FCS_TABLE 1 @@ -2299,28 +2299,27 @@ /* * Packet sizes - * - * Note - lcp shouldn't be allowed to negotiate stuff outside these - * limits. See lcp.h in the pppd directory. - * (XXX - these constants should simply be shared by lcp.c instead - * of living in lcp.h) */ -#define PPP_MTU 1500 /* Default MTU (size of Info field) */ -#ifndef PPP_MAXMTU -/* #define PPP_MAXMTU 65535 - (PPP_HDRLEN + PPP_FCSLEN) */ -#define PPP_MAXMTU 1500 /* Largest MTU we allow */ +#ifndef PPP_MRU +#define PPP_MRU 1500 /* Default MRU */ #endif -#define PPP_MINMTU 64 -#define PPP_MRU 1500 /* default MRU = max length of info field */ -#define PPP_MAXMRU 1500 /* Largest MRU we allow */ + #ifndef PPP_DEFMRU -#define PPP_DEFMRU 296 /* Try for this */ +#define PPP_DEFMRU 1500 /* Default MRU to try */ +#endif + +#ifndef PPP_MAXMRU +#define PPP_MAXMRU 1500 /* Normally limit MRU to this (pppd default = 16384) */ +#endif + +#ifndef PPP_MINMRU +#define PPP_MINMRU 128 /* No MRUs below this */ #endif -#define PPP_MINMRU 128 /* No MRUs below this */ #ifndef MAXNAMELEN #define MAXNAMELEN 256 /* max length of hostname or name for auth */ #endif + #ifndef MAXSECRETLEN #define MAXSECRETLEN 256 /* max length of password or secret */ #endif diff --git a/src/include/netif/ppp/lcp.h b/src/include/netif/ppp/lcp.h index d7f8ffc6..04970699 100644 --- a/src/include/netif/ppp/lcp.h +++ b/src/include/netif/ppp/lcp.h @@ -90,9 +90,11 @@ /* Value used as data for CI_CALLBACK option */ #define CBCP_OPT 6 /* Use callback control protocol */ +#if 0 /* moved to opt.h */ #define DEFMRU 1500 /* Try for this */ #define MINMRU 128 /* No MRUs below this */ #define MAXMRU 16384 /* Normally limit MRU to this */ +#endif /* moved to opt.h */ /* An endpoint discriminator, used with multilink. */ #define MAX_ENDP_LEN 20 /* maximum length of discriminator value */ diff --git a/src/netif/ppp/lcp.c b/src/netif/ppp/lcp.c index 885a381c..8ccead06 100644 --- a/src/netif/ppp/lcp.c +++ b/src/netif/ppp/lcp.c @@ -373,7 +373,7 @@ static void lcp_init(ppp_pcb *pcb) { BZERO(wo, sizeof(*wo)); wo->neg_mru = 1; - wo->mru = DEFMRU; + wo->mru = PPP_DEFMRU; wo->neg_asyncmap = 1; wo->neg_magicnumber = 1; wo->neg_pcompression = 1; @@ -381,7 +381,7 @@ static void lcp_init(ppp_pcb *pcb) { BZERO(ao, sizeof(*ao)); ao->neg_mru = 1; - ao->mru = MAXMRU; + ao->mru = PPP_MAXMRU; ao->neg_asyncmap = 1; #if CHAP_SUPPORT ao->neg_chap = 1; @@ -782,7 +782,7 @@ static int lcp_cilen(fsm *f) { * accept more than one. We prefer EAP first, then CHAP, then * PAP. */ - return (LENCISHORT(go->neg_mru && go->mru != DEFMRU) + + return (LENCISHORT(go->neg_mru && go->mru != PPP_DEFMRU) + LENCILONG(go->neg_asyncmap && go->asyncmap != 0xFFFFFFFF) + #if EAP_SUPPORT LENCISHORT(go->neg_eap) + @@ -883,7 +883,7 @@ static void lcp_addci(fsm *f, u_char *ucp, int *lenp) { PUTCHAR(val[i], ucp); \ } - ADDCISHORT(CI_MRU, go->neg_mru && go->mru != DEFMRU, go->mru); + ADDCISHORT(CI_MRU, go->neg_mru && go->mru != PPP_DEFMRU, go->mru); ADDCILONG(CI_ASYNCMAP, go->neg_asyncmap && go->asyncmap != 0xFFFFFFFF, go->asyncmap); #if EAP_SUPPORT @@ -1057,7 +1057,7 @@ static int lcp_ackci(fsm *f, u_char *p, int len) { } \ } - ACKCISHORT(CI_MRU, go->neg_mru && go->mru != DEFMRU, go->mru); + ACKCISHORT(CI_MRU, go->neg_mru && go->mru != PPP_DEFMRU, go->mru); ACKCILONG(CI_ASYNCMAP, go->neg_asyncmap && go->asyncmap != 0xFFFFFFFF, go->asyncmap); #if EAP_SUPPORT @@ -1234,9 +1234,9 @@ static int lcp_nakci(fsm *f, u_char *p, int len, int treat_as_reject) { * If they send us a bigger MRU than what we asked, accept it, up to * the limit of the default MRU we'd get if we didn't negotiate. */ - if (go->neg_mru && go->mru != DEFMRU) { + if (go->neg_mru && go->mru != PPP_DEFMRU) { NAKCISHORT(CI_MRU, neg_mru, - if (cishort <= wo->mru || cishort <= DEFMRU) + if (cishort <= wo->mru || cishort <= PPP_DEFMRU) try_.mru = cishort; ); } @@ -1479,11 +1479,11 @@ static int lcp_nakci(fsm *f, u_char *p, int len, int treat_as_reject) { switch (citype) { case CI_MRU: - if ((go->neg_mru && go->mru != DEFMRU) + if ((go->neg_mru && go->mru != PPP_DEFMRU) || no.neg_mru || cilen != CILEN_SHORT) goto bad; GETSHORT(cishort, p); - if (cishort < DEFMRU) { + if (cishort < PPP_DEFMRU) { try_.neg_mru = 1; try_.mru = cishort; } @@ -1881,11 +1881,11 @@ static int lcp_reqci(fsm *f, u_char *inp, int *lenp, int reject_if_disagree) { * No need to check a maximum. If he sends a large number, * we'll just ignore it. */ - if (cishort < MINMRU) { + if (cishort < PPP_MINMRU) { orc = CONFNAK; /* Nak CI */ PUTCHAR(CI_MRU, nakoutp); PUTCHAR(CILEN_SHORT, nakoutp); - PUTSHORT(MINMRU, nakoutp); /* Give him a hint */ + PUTSHORT(PPP_MINMRU, nakoutp); /* Give him a hint */ break; } ho->neg_mru = 1; /* Remember he sent MRU */