57 #ifndef PPP_REMOTENAME 58 #define PPP_REMOTENAME 0 61 #ifndef PPP_IDLETIMELIMIT 62 #define PPP_IDLETIMELIMIT 0 65 #ifndef PPP_LCP_ADAPTIVE 66 #define PPP_LCP_ADAPTIVE 0 69 #ifndef PPP_MAXCONNECT 70 #define PPP_MAXCONNECT 0 73 #ifndef PPP_ALLOWED_ADDRS 74 #define PPP_ALLOWED_ADDRS 0 77 #ifndef PPP_PROTOCOLNAME 78 #define PPP_PROTOCOLNAME 0 81 #ifndef PPP_STATS_SUPPORT 82 #define PPP_STATS_SUPPORT 0 85 #ifndef DEFLATE_SUPPORT 86 #define DEFLATE_SUPPORT 0 89 #ifndef BSDCOMPRESS_SUPPORT 90 #define BSDCOMPRESS_SUPPORT 0 93 #ifndef PREDICTOR_SUPPORT 94 #define PREDICTOR_SUPPORT 0 110 #define PPP_PHASE_DEAD 0 111 #define PPP_PHASE_MASTER 1 112 #define PPP_PHASE_HOLDOFF 2 113 #define PPP_PHASE_INITIALIZE 3 114 #define PPP_PHASE_SERIALCONN 4 115 #define PPP_PHASE_DORMANT 5 116 #define PPP_PHASE_ESTABLISH 6 117 #define PPP_PHASE_AUTHENTICATE 7 118 #define PPP_PHASE_CALLBACK 8 119 #define PPP_PHASE_NETWORK 9 120 #define PPP_PHASE_RUNNING 10 121 #define PPP_PHASE_TERMINATE 11 122 #define PPP_PHASE_DISCONNECT 12 125 #define PPPERR_NONE 0 126 #define PPPERR_PARAM 1 127 #define PPPERR_OPEN 2 128 #define PPPERR_DEVICE 3 129 #define PPPERR_ALLOC 4 130 #define PPPERR_USER 5 131 #define PPPERR_CONNECT 6 132 #define PPPERR_AUTHFAIL 7 133 #define PPPERR_PROTOCOL 8 134 #define PPPERR_PEERDEAD 9 135 #define PPPERR_IDLETIMEOUT 10 136 #define PPPERR_CONNECTTIME 11 137 #define PPPERR_LOOPBACK 12 140 #define PPP_AUTH_SUPPORT (PAP_SUPPORT || CHAP_SUPPORT || EAP_SUPPORT) 152 typedef struct ppp_pcb_s ppp_pcb;
155 #ifndef __u_char_defined 156 typedef unsigned long u_long;
157 typedef unsigned int u_int;
158 typedef unsigned short u_short;
159 typedef unsigned char u_char;
180 #include "chap-new.h" 190 typedef void (*ppp_link_status_cb_fn)(ppp_pcb *pcb,
int err_code,
void *ctx);
195 typedef struct ppp_settings_s {
197 #if PPP_SERVER && PPP_AUTH_SUPPORT 198 unsigned int auth_required :1;
199 unsigned int null_login :1;
202 unsigned int explicit_remote :1;
205 unsigned int refuse_pap :1;
208 unsigned int refuse_chap :1;
211 unsigned int refuse_mschap :1;
212 unsigned int refuse_mschap_v2 :1;
215 unsigned int refuse_eap :1;
218 unsigned int usepeerdns :1;
220 unsigned int persist :1;
222 unsigned int hide_password :1;
224 unsigned int noremoteip :1;
225 unsigned int lax_recv :1;
226 unsigned int noendpoint :1;
228 unsigned int lcp_echo_adaptive :1;
231 unsigned int require_mppe :1;
232 unsigned int refuse_mppe_40 :1;
233 unsigned int refuse_mppe_128 :1;
234 unsigned int refuse_mppe_stateful :1;
239 #if PPP_IDLETIMELIMIT 240 u16_t idle_time_limit;
251 char remote_name[MAXNAMELEN + 1];
255 u8_t pap_timeout_time;
256 u8_t pap_max_transmits;
258 u8_t pap_req_timeout;
263 u8_t chap_timeout_time;
264 u8_t chap_max_transmits;
266 u8_t chap_rechallenge_time;
274 u8_t eap_timeout_time;
275 u8_t eap_max_transmits;
281 u8_t fsm_timeout_time;
282 u8_t fsm_max_conf_req_transmits;
283 u8_t fsm_max_term_transmits;
284 u8_t fsm_max_nak_loops;
286 u8_t lcp_loopbackfail;
288 u8_t lcp_echo_interval;
311 ppp_settings settings;
312 const struct link_callbacks *link_cb;
314 void (*link_status_cb)(ppp_pcb *pcb,
int err_code,
void *ctx);
316 void (*notify_phase_cb)(ppp_pcb *pcb, u8_t phase,
void *ctx);
325 unsigned int ask_for_local :1;
326 unsigned int ipcp_is_open :1;
327 unsigned int ipcp_is_up :1;
328 unsigned int if4_up :1;
330 unsigned int proxy_arp_set :1;
334 unsigned int ipv6cp_is_up :1;
335 unsigned int if6_up :1;
337 #if PPP_IPV4_SUPPORT && PPP_IPV6_SUPPORT 338 unsigned int ipcp_disabled :1;
339 unsigned int ipv6cp_disabled :1;
341 unsigned int lcp_echo_timer_running :1;
343 unsigned int vj_enabled :1;
346 unsigned int ccp_all_rejected :1;
349 unsigned int mppe_keys_set :1;
354 #if PPP_SERVER && defined(HAVE_MULTILINK) 355 char peer_authname[MAXNAMELEN + 1];
365 chap_client_state chap_client;
367 chap_server_state chap_server;
377 lcp_options lcp_wantoptions;
378 lcp_options lcp_gotoptions;
379 lcp_options lcp_allowoptions;
380 lcp_options lcp_hisoptions;
382 u8_t lcp_echos_pending;
383 u8_t lcp_echo_number;
389 struct vjcompress vj_comp;
394 ccp_options ccp_wantoptions;
395 ccp_options ccp_gotoptions;
396 ccp_options ccp_allowoptions;
397 ccp_options ccp_hisoptions;
399 u8_t ccp_receive_method;
400 u8_t ccp_transmit_method;
402 ppp_mppe_state mppe_comp;
403 ppp_mppe_state mppe_decomp;
409 ipcp_options ipcp_wantoptions;
410 ipcp_options ipcp_gotoptions;
411 ipcp_options ipcp_allowoptions;
412 ipcp_options ipcp_hisoptions;
417 ipv6cp_options ipv6cp_wantoptions;
418 ipv6cp_options ipv6cp_gotoptions;
419 ipv6cp_options ipv6cp_allowoptions;
420 ipv6cp_options ipv6cp_hisoptions;
457 #define PPPAUTHTYPE_NONE 0x00 458 #define PPPAUTHTYPE_PAP 0x01 459 #define PPPAUTHTYPE_CHAP 0x02 460 #define PPPAUTHTYPE_MSCHAP 0x04 461 #define PPPAUTHTYPE_MSCHAP_V2 0x08 462 #define PPPAUTHTYPE_EAP 0x10 463 #define PPPAUTHTYPE_ANY 0xff 464 void ppp_set_auth(ppp_pcb *pcb, u8_t authtype,
const char *user,
const char *passwd);
471 #define ppp_set_auth_required(ppp, boolval) (ppp->settings.auth_required = boolval) 481 #define ppp_set_ipcp_ouraddr(ppp, addr) do { ppp->ipcp_wantoptions.ouraddr = ip4_addr_get_u32(addr); \ 482 ppp->ask_for_local = ppp->ipcp_wantoptions.ouraddr != 0; } while(0) 483 #define ppp_set_ipcp_hisaddr(ppp, addr) (ppp->ipcp_wantoptions.hisaddr = ip4_addr_get_u32(addr)) 491 #define ppp_set_ipcp_dnsaddr(ppp, index, addr) (ppp->ipcp_allowoptions.dnsaddr[index] = ip4_addr_get_u32(addr)) 499 #define ppp_set_usepeerdns(ppp, boolval) (ppp->settings.usepeerdns = boolval) 505 #define PPP_MPPE_DISABLE 0x00 507 #define PPP_MPPE_ENABLE 0x01 509 #define PPP_MPPE_ALLOW_STATEFUL 0x02 511 #define PPP_MPPE_REFUSE_40 0x04 513 #define PPP_MPPE_REFUSE_128 0x08 519 void ppp_set_mppe(ppp_pcb *pcb, u8_t flags);
529 #define ppp_set_listen_time(ppp, intval) (ppp->settings.listen_time = intval) 537 #define ppp_set_passive(ppp, boolval) (ppp->lcp_wantoptions.passive = boolval) 545 #define ppp_set_silent(ppp, boolval) (ppp->lcp_wantoptions.silent = boolval) 553 #define ppp_set_neg_pcomp(ppp, boolval) (ppp->lcp_wantoptions.neg_pcompression = \ 554 ppp->lcp_allowoptions.neg_pcompression = boolval) 562 #define ppp_set_neg_accomp(ppp, boolval) (ppp->lcp_wantoptions.neg_accompression = \ 563 ppp->lcp_allowoptions.neg_accompression = boolval) 571 #define ppp_set_neg_asyncmap(ppp, boolval) (ppp->lcp_wantoptions.neg_asyncmap = \ 572 ppp->lcp_allowoptions.neg_asyncmap = boolval) 585 #define ppp_set_asyncmap(ppp, intval) (ppp->lcp_wantoptions.asyncmap = intval) 591 #define ppp_set_default(ppp) netif_set_default(ppp->netif) 600 typedef void (*ppp_notify_phase_cb_fn)(ppp_pcb *pcb, u8_t phase,
void *ctx);
601 void ppp_set_notify_phase_callback(ppp_pcb *pcb, ppp_notify_phase_cb_fn notify_phase_cb);
615 err_t ppp_connect(ppp_pcb *pcb, u16_t holdoff);
626 err_t ppp_listen(ppp_pcb *pcb);
640 err_t ppp_close(ppp_pcb *pcb, u8_t nocarrier);
652 err_t ppp_free(ppp_pcb *pcb);
660 #define PPPCTLG_UPSTATUS 0 666 #define PPPCTLG_ERRCODE 1 677 err_t ppp_ioctl(ppp_pcb *pcb, u8_t cmd,
void *arg);
680 #define ppp_netif(ppp) (ppp->netif) 683 #define ppp_set_netif_statuscallback(ppp, status_cb) \ 684 netif_set_status_callback(ppp->netif, status_cb); 687 #define ppp_set_netif_linkcallback(ppp, link_cb) \ 688 netif_set_link_callback(ppp->netif, link_cb);
IP address structure for passing IP addresses by value.