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