1/* 2 * Redistribution and use in source and binary forms, with or without modification, 3 * are permitted provided that the following conditions are met: 4 * 5 * 1. Redistributions of source code must retain the above copyright notice, 6 * this list of conditions and the following disclaimer. 7 * 2. Redistributions in binary form must reproduce the above copyright notice, 8 * this list of conditions and the following disclaimer in the documentation 9 * and/or other materials provided with the distribution. 10 * 3. The name of the author may not be used to endorse or promote products 11 * derived from this software without specific prior written permission. 12 * 13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 14 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 15 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 16 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 17 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 18 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 19 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 20 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 21 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 22 * OF SUCH DAMAGE. 23 * 24 * This file is part of the lwIP TCP/IP stack. 25 * 26 */ 27 28#ifndef LWIP_PPP_OPTS_H 29#define LWIP_PPP_OPTS_H 30 31#include "lwip/opt.h" 32 33/** 34 * PPP_SUPPORT==1: Enable PPP. 35 */ 36#ifndef PPP_SUPPORT 37#define PPP_SUPPORT 0 38#endif 39 40/** 41 * PPPOE_SUPPORT==1: Enable PPP Over Ethernet 42 */ 43#ifndef PPPOE_SUPPORT 44#define PPPOE_SUPPORT 0 45#endif 46 47/** 48 * PPPOL2TP_SUPPORT==1: Enable PPP Over L2TP 49 */ 50#ifndef PPPOL2TP_SUPPORT 51#define PPPOL2TP_SUPPORT 0 52#endif 53 54/** 55 * PPPOL2TP_AUTH_SUPPORT==1: Enable PPP Over L2TP Auth (enable MD5 support) 56 */ 57#ifndef PPPOL2TP_AUTH_SUPPORT 58#define PPPOL2TP_AUTH_SUPPORT PPPOL2TP_SUPPORT 59#endif 60 61/** 62 * PPPOS_SUPPORT==1: Enable PPP Over Serial 63 */ 64#ifndef PPPOS_SUPPORT 65#define PPPOS_SUPPORT PPP_SUPPORT 66#endif 67 68/** 69 * LWIP_PPP_API==1: Enable PPP API (in pppapi.c) 70 */ 71#ifndef LWIP_PPP_API 72#define LWIP_PPP_API (PPP_SUPPORT && (NO_SYS == 0)) 73#endif 74 75/** 76 * MEMP_NUM_PPP_PCB: the number of simultaneously active PPP 77 * connections (requires the PPP_SUPPORT option) 78 */ 79#ifndef MEMP_NUM_PPP_PCB 80#define MEMP_NUM_PPP_PCB 1 81#endif 82 83#if PPP_SUPPORT 84 85/** 86 * MEMP_NUM_PPPOS_INTERFACES: the number of concurrently active PPPoS 87 * interfaces (only used with PPPOS_SUPPORT==1) 88 */ 89#ifndef MEMP_NUM_PPPOS_INTERFACES 90#define MEMP_NUM_PPPOS_INTERFACES MEMP_NUM_PPP_PCB 91#endif 92 93/** 94 * MEMP_NUM_PPPOE_INTERFACES: the number of concurrently active PPPoE 95 * interfaces (only used with PPPOE_SUPPORT==1) 96 */ 97#ifndef MEMP_NUM_PPPOE_INTERFACES 98#define MEMP_NUM_PPPOE_INTERFACES 1 99#endif 100 101/** 102 * MEMP_NUM_PPPOL2TP_INTERFACES: the number of concurrently active PPPoL2TP 103 * interfaces (only used with PPPOL2TP_SUPPORT==1) 104 */ 105#ifndef MEMP_NUM_PPPOL2TP_INTERFACES 106#define MEMP_NUM_PPPOL2TP_INTERFACES 1 107#endif 108 109/** 110 * MEMP_NUM_PPP_API_MSG: Number of concurrent PPP API messages (in pppapi.c) 111 */ 112#ifndef MEMP_NUM_PPP_API_MSG 113#define MEMP_NUM_PPP_API_MSG 5 114#endif 115 116/** 117 * PPP_DEBUG: Enable debugging for PPP. 118 */ 119#ifndef PPP_DEBUG 120#define PPP_DEBUG LWIP_DBG_OFF 121#endif 122 123/** 124 * PPP_INPROC_IRQ_SAFE==1 call pppos_input() using tcpip_callback(). 125 * 126 * Please read the "PPPoS input path" chapter in the PPP documentation about this option. 127 */ 128#ifndef PPP_INPROC_IRQ_SAFE 129#define PPP_INPROC_IRQ_SAFE 0 130#endif 131 132/** 133 * PRINTPKT_SUPPORT==1: Enable PPP print packet support 134 * 135 * Mandatory for debugging, it displays exchanged packet content in debug trace. 136 */ 137#ifndef PRINTPKT_SUPPORT 138#define PRINTPKT_SUPPORT 0 139#endif 140 141/** 142 * PPP_IPV4_SUPPORT==1: Enable PPP IPv4 support 143 */ 144#ifndef PPP_IPV4_SUPPORT 145#define PPP_IPV4_SUPPORT (LWIP_IPV4) 146#endif 147 148/** 149 * PPP_IPV6_SUPPORT==1: Enable PPP IPv6 support 150 */ 151#ifndef PPP_IPV6_SUPPORT 152#define PPP_IPV6_SUPPORT (LWIP_IPV6) 153#endif 154 155/** 156 * PPP_NOTIFY_PHASE==1: Support PPP notify phase support 157 * 158 * PPP notify phase support allows you to set a callback which is 159 * called on change of the internal PPP state machine. 160 * 161 * This can be used for example to set a LED pattern depending on the 162 * current phase of the PPP session. 163 */ 164#ifndef PPP_NOTIFY_PHASE 165#define PPP_NOTIFY_PHASE 0 166#endif 167 168/** 169 * pbuf_type PPP is using for LCP, PAP, CHAP, EAP, CCP, IPCP and IP6CP packets. 170 * 171 * Memory allocated must be single buffered for PPP to works, it requires pbuf 172 * that are not going to be chained when allocated. This requires setting 173 * PBUF_POOL_BUFSIZE to at least 512 bytes, which is quite huge for small systems. 174 * 175 * Setting PPP_USE_PBUF_RAM to 1 makes PPP use memory from heap where continuous 176 * buffers are required, allowing you to use a smaller PBUF_POOL_BUFSIZE. 177 */ 178#ifndef PPP_USE_PBUF_RAM 179#define PPP_USE_PBUF_RAM 0 180#endif 181 182/** 183 * PPP_FCS_TABLE: Keep a 256*2 byte table to speed up FCS calculation for PPPoS 184 */ 185#ifndef PPP_FCS_TABLE 186#define PPP_FCS_TABLE 1 187#endif 188 189/** 190 * PAP_SUPPORT==1: Support PAP. 191 */ 192#ifndef PAP_SUPPORT 193#define PAP_SUPPORT 0 194#endif 195 196/** 197 * CHAP_SUPPORT==1: Support CHAP. 198 */ 199#ifndef CHAP_SUPPORT 200#define CHAP_SUPPORT 0 201#endif 202 203/** 204 * MSCHAP_SUPPORT==1: Support MSCHAP. 205 */ 206#ifndef MSCHAP_SUPPORT 207#define MSCHAP_SUPPORT 0 208#endif 209#if MSCHAP_SUPPORT 210/* MSCHAP requires CHAP support */ 211#undef CHAP_SUPPORT 212#define CHAP_SUPPORT 1 213#endif /* MSCHAP_SUPPORT */ 214 215/** 216 * EAP_SUPPORT==1: Support EAP. 217 */ 218#ifndef EAP_SUPPORT 219#define EAP_SUPPORT 0 220#endif 221 222/** 223 * CCP_SUPPORT==1: Support CCP. 224 */ 225#ifndef CCP_SUPPORT 226#define CCP_SUPPORT 0 227#endif 228 229/** 230 * MPPE_SUPPORT==1: Support MPPE. 231 */ 232#ifndef MPPE_SUPPORT 233#define MPPE_SUPPORT 0 234#endif 235#if MPPE_SUPPORT 236/* MPPE requires CCP support */ 237#undef CCP_SUPPORT 238#define CCP_SUPPORT 1 239/* MPPE requires MSCHAP support */ 240#undef MSCHAP_SUPPORT 241#define MSCHAP_SUPPORT 1 242/* MSCHAP requires CHAP support */ 243#undef CHAP_SUPPORT 244#define CHAP_SUPPORT 1 245#endif /* MPPE_SUPPORT */ 246 247/** 248 * CBCP_SUPPORT==1: Support CBCP. CURRENTLY NOT SUPPORTED! DO NOT SET! 249 */ 250#ifndef CBCP_SUPPORT 251#define CBCP_SUPPORT 0 252#endif 253 254/** 255 * ECP_SUPPORT==1: Support ECP. CURRENTLY NOT SUPPORTED! DO NOT SET! 256 */ 257#ifndef ECP_SUPPORT 258#define ECP_SUPPORT 0 259#endif 260 261/** 262 * DEMAND_SUPPORT==1: Support dial on demand. CURRENTLY NOT SUPPORTED! DO NOT SET! 263 */ 264#ifndef DEMAND_SUPPORT 265#define DEMAND_SUPPORT 0 266#endif 267 268/** 269 * LQR_SUPPORT==1: Support Link Quality Report. Do nothing except exchanging some LCP packets. 270 */ 271#ifndef LQR_SUPPORT 272#define LQR_SUPPORT 0 273#endif 274 275/** 276 * PPP_SERVER==1: Enable PPP server support (waiting for incoming PPP session). 277 * 278 * Currently only supported for PPPoS. 279 */ 280#ifndef PPP_SERVER 281#define PPP_SERVER 0 282#endif 283 284#if PPP_SERVER 285/* 286 * PPP_OUR_NAME: Our name for authentication purposes 287 */ 288#ifndef PPP_OUR_NAME 289#define PPP_OUR_NAME "lwIP" 290#endif 291#endif /* PPP_SERVER */ 292 293/** 294 * VJ_SUPPORT==1: Support VJ header compression. 295 */ 296#ifndef VJ_SUPPORT 297#define VJ_SUPPORT 1 298#endif 299/* VJ compression is only supported for TCP over IPv4 over PPPoS. */ 300#if !PPPOS_SUPPORT || !PPP_IPV4_SUPPORT || !LWIP_TCP 301#undef VJ_SUPPORT 302#define VJ_SUPPORT 0 303#endif /* !PPPOS_SUPPORT */ 304 305/** 306 * PPP_MD5_RANDM==1: Use MD5 for better randomness. 307 * Enabled by default if CHAP, EAP, or L2TP AUTH support is enabled. 308 */ 309#ifndef PPP_MD5_RANDM 310#define PPP_MD5_RANDM (CHAP_SUPPORT || EAP_SUPPORT || PPPOL2TP_AUTH_SUPPORT) 311#endif 312 313/** 314 * PolarSSL embedded library 315 * 316 * 317 * lwIP contains some files fetched from the latest BSD release of 318 * the PolarSSL project (PolarSSL 0.10.1-bsd) for ciphers and encryption 319 * methods we need for lwIP PPP support. 320 * 321 * The PolarSSL files were cleaned to contain only the necessary struct 322 * fields and functions needed for lwIP. 323 * 324 * The PolarSSL API was not changed at all, so if you are already using 325 * PolarSSL you can choose to skip the compilation of the included PolarSSL 326 * library into lwIP. 327 * 328 * If you are not using the embedded copy you must include external 329 * libraries into your arch/cc.h port file. 330 * 331 * Beware of the stack requirements which can be a lot larger if you are not 332 * using our cleaned PolarSSL library. 333 */ 334 335/** 336 * LWIP_USE_EXTERNAL_POLARSSL: Use external PolarSSL library 337 */ 338#ifndef LWIP_USE_EXTERNAL_POLARSSL 339#define LWIP_USE_EXTERNAL_POLARSSL 0 340#endif 341 342/** 343 * LWIP_USE_EXTERNAL_MBEDTLS: Use external mbed TLS library 344 */ 345#ifndef LWIP_USE_EXTERNAL_MBEDTLS 346#define LWIP_USE_EXTERNAL_MBEDTLS 0 347#endif 348 349/* 350 * PPP Timeouts 351 */ 352 353/** 354 * FSM_DEFTIMEOUT: Timeout time in seconds 355 */ 356#ifndef FSM_DEFTIMEOUT 357#define FSM_DEFTIMEOUT 6 358#endif 359 360/** 361 * FSM_DEFMAXTERMREQS: Maximum Terminate-Request transmissions 362 */ 363#ifndef FSM_DEFMAXTERMREQS 364#define FSM_DEFMAXTERMREQS 2 365#endif 366 367/** 368 * FSM_DEFMAXCONFREQS: Maximum Configure-Request transmissions 369 */ 370#ifndef FSM_DEFMAXCONFREQS 371#define FSM_DEFMAXCONFREQS 10 372#endif 373 374/** 375 * FSM_DEFMAXNAKLOOPS: Maximum number of nak loops 376 */ 377#ifndef FSM_DEFMAXNAKLOOPS 378#define FSM_DEFMAXNAKLOOPS 5 379#endif 380 381/** 382 * UPAP_DEFTIMEOUT: Timeout (seconds) for retransmitting req 383 */ 384#ifndef UPAP_DEFTIMEOUT 385#define UPAP_DEFTIMEOUT 6 386#endif 387 388/** 389 * UPAP_DEFTRANSMITS: Maximum number of auth-reqs to send 390 */ 391#ifndef UPAP_DEFTRANSMITS 392#define UPAP_DEFTRANSMITS 10 393#endif 394 395#if PPP_SERVER 396/** 397 * UPAP_DEFREQTIME: Time to wait for auth-req from peer 398 */ 399#ifndef UPAP_DEFREQTIME 400#define UPAP_DEFREQTIME 30 401#endif 402#endif /* PPP_SERVER */ 403 404/** 405 * CHAP_DEFTIMEOUT: Timeout (seconds) for retransmitting req 406 */ 407#ifndef CHAP_DEFTIMEOUT 408#define CHAP_DEFTIMEOUT 6 409#endif 410 411/** 412 * CHAP_DEFTRANSMITS: max # times to send challenge 413 */ 414#ifndef CHAP_DEFTRANSMITS 415#define CHAP_DEFTRANSMITS 10 416#endif 417 418#if PPP_SERVER 419/** 420 * CHAP_DEFRECHALLENGETIME: If this option is > 0, rechallenge the peer every n seconds 421 */ 422#ifndef CHAP_DEFRECHALLENGETIME 423#define CHAP_DEFRECHALLENGETIME 0 424#endif 425#endif /* PPP_SERVER */ 426 427/** 428 * EAP_DEFREQTIME: Time to wait for peer request 429 */ 430#ifndef EAP_DEFREQTIME 431#define EAP_DEFREQTIME 6 432#endif 433 434/** 435 * EAP_DEFALLOWREQ: max # times to accept requests 436 */ 437#ifndef EAP_DEFALLOWREQ 438#define EAP_DEFALLOWREQ 10 439#endif 440 441#if PPP_SERVER 442/** 443 * EAP_DEFTIMEOUT: Timeout (seconds) for rexmit 444 */ 445#ifndef EAP_DEFTIMEOUT 446#define EAP_DEFTIMEOUT 6 447#endif 448 449/** 450 * EAP_DEFTRANSMITS: max # times to transmit 451 */ 452#ifndef EAP_DEFTRANSMITS 453#define EAP_DEFTRANSMITS 10 454#endif 455#endif /* PPP_SERVER */ 456 457/** 458 * LCP_DEFLOOPBACKFAIL: Default number of times we receive our magic number from the peer 459 * before deciding the link is looped-back. 460 */ 461#ifndef LCP_DEFLOOPBACKFAIL 462#define LCP_DEFLOOPBACKFAIL 10 463#endif 464 465/** 466 * LCP_ECHOINTERVAL: Interval in seconds between keepalive echo requests, 0 to disable. 467 */ 468#ifndef LCP_ECHOINTERVAL 469#define LCP_ECHOINTERVAL 0 470#endif 471 472/** 473 * LCP_MAXECHOFAILS: Number of unanswered echo requests before failure. 474 */ 475#ifndef LCP_MAXECHOFAILS 476#define LCP_MAXECHOFAILS 3 477#endif 478 479/** 480 * PPP_MAXIDLEFLAG: Max Xmit idle time (in ms) before resend flag char. 481 */ 482#ifndef PPP_MAXIDLEFLAG 483#define PPP_MAXIDLEFLAG 100 484#endif 485 486/** 487 * PPP Packet sizes 488 */ 489 490/** 491 * PPP_MRU: Default MRU 492 */ 493#ifndef PPP_MRU 494#define PPP_MRU 1500 495#endif 496 497/** 498 * PPP_DEFMRU: Default MRU to try 499 */ 500#ifndef PPP_DEFMRU 501#define PPP_DEFMRU 1500 502#endif 503 504/** 505 * PPP_MAXMRU: Normally limit MRU to this (pppd default = 16384) 506 */ 507#ifndef PPP_MAXMRU 508#define PPP_MAXMRU 1500 509#endif 510 511/** 512 * PPP_MINMRU: No MRUs below this 513 */ 514#ifndef PPP_MINMRU 515#define PPP_MINMRU 128 516#endif 517 518/** 519 * PPPOL2TP_DEFMRU: Default MTU and MRU for L2TP 520 * Default = 1500 - PPPoE(6) - PPP Protocol(2) - IPv4 header(20) - UDP Header(8) 521 * - L2TP Header(6) - HDLC Header(2) - PPP Protocol(2) - MPPE Header(2) - PPP Protocol(2) 522 */ 523#if PPPOL2TP_SUPPORT 524#ifndef PPPOL2TP_DEFMRU 525#define PPPOL2TP_DEFMRU 1450 526#endif 527#endif /* PPPOL2TP_SUPPORT */ 528 529/** 530 * MAXNAMELEN: max length of hostname or name for auth 531 */ 532#ifndef MAXNAMELEN 533#define MAXNAMELEN 256 534#endif 535 536/** 537 * MAXSECRETLEN: max length of password or secret 538 */ 539#ifndef MAXSECRETLEN 540#define MAXSECRETLEN 256 541#endif 542 543/* ------------------------------------------------------------------------- */ 544 545/* 546 * Build triggers for embedded PolarSSL 547 */ 548#if !LWIP_USE_EXTERNAL_POLARSSL && !LWIP_USE_EXTERNAL_MBEDTLS 549 550/* CHAP, EAP, L2TP AUTH and MD5 Random require MD5 support */ 551#if CHAP_SUPPORT || EAP_SUPPORT || PPPOL2TP_AUTH_SUPPORT || PPP_MD5_RANDM 552#define LWIP_INCLUDED_POLARSSL_MD5 1 553#endif /* CHAP_SUPPORT || EAP_SUPPORT || PPPOL2TP_AUTH_SUPPORT || PPP_MD5_RANDM */ 554 555#if MSCHAP_SUPPORT 556 557/* MSCHAP require MD4 support */ 558#define LWIP_INCLUDED_POLARSSL_MD4 1 559/* MSCHAP require SHA1 support */ 560#define LWIP_INCLUDED_POLARSSL_SHA1 1 561/* MSCHAP require DES support */ 562#define LWIP_INCLUDED_POLARSSL_DES 1 563 564/* MS-CHAP support is required for MPPE */ 565#if MPPE_SUPPORT 566/* MPPE require ARC4 support */ 567#define LWIP_INCLUDED_POLARSSL_ARC4 1 568#endif /* MPPE_SUPPORT */ 569 570#endif /* MSCHAP_SUPPORT */ 571 572#endif /* !LWIP_USE_EXTERNAL_POLARSSL && !LWIP_USE_EXTERNAL_MBEDTLS */ 573 574/* Default value if unset */ 575#ifndef LWIP_INCLUDED_POLARSSL_MD4 576#define LWIP_INCLUDED_POLARSSL_MD4 0 577#endif /* LWIP_INCLUDED_POLARSSL_MD4 */ 578#ifndef LWIP_INCLUDED_POLARSSL_MD5 579#define LWIP_INCLUDED_POLARSSL_MD5 0 580#endif /* LWIP_INCLUDED_POLARSSL_MD5 */ 581#ifndef LWIP_INCLUDED_POLARSSL_SHA1 582#define LWIP_INCLUDED_POLARSSL_SHA1 0 583#endif /* LWIP_INCLUDED_POLARSSL_SHA1 */ 584#ifndef LWIP_INCLUDED_POLARSSL_DES 585#define LWIP_INCLUDED_POLARSSL_DES 0 586#endif /* LWIP_INCLUDED_POLARSSL_DES */ 587#ifndef LWIP_INCLUDED_POLARSSL_ARC4 588#define LWIP_INCLUDED_POLARSSL_ARC4 0 589#endif /* LWIP_INCLUDED_POLARSSL_ARC4 */ 590 591#endif /* PPP_SUPPORT */ 592 593#endif /* LWIP_PPP_OPTS_H */ 594