Documentation

Documentation

Includes

netif/ppp/ppp_opts.h

#include "netif/ppp/ppp_opts.h"
#include "netif/ppp/ppp_opts.h"

ppp_settings.h

#include "ppp_settings.h"
#include "ppp_settings.h"

stdio.h

#include <stdio.h> /* formats */
#include  /* formats */

stdarg.h

#include <stdarg.h>
#include 

string.h

#include <string.h>
#include 

stdlib.h

#include <stdlib.h> /* strtol() */
#include  /* strtol() */

lwip/netif.h

#include "lwip/netif.h"
#include "lwip/netif.h"

lwip/def.h

#include "lwip/def.h"
#include "lwip/def.h"

lwip/timeouts.h

#include "lwip/timeouts.h"
#include "lwip/timeouts.h"

ppp.h

#include "ppp.h"
#include "ppp.h"

pppdebug.h

#include "pppdebug.h"
#include "pppdebug.h"

Macros

Marco LWIP_HDR_PPP_IMPL_H

#define LWIP_HDR_PPP_IMPL_H


      

Marco PPP_CTRL_PBUF_TYPE

#define PPP_CTRL_PBUF_TYPE      PBUF_RAM


      

Marco PPP_CTRL_PBUF_MAX_SIZE

#define PPP_CTRL_PBUF_MAX_SIZE  512


      

Marco PPP_CTRL_PBUF_TYPE

#define PPP_CTRL_PBUF_TYPE      PBUF_POOL


      

Marco PPP_CTRL_PBUF_MAX_SIZE

#define PPP_CTRL_PBUF_MAX_SIZE  PBUF_POOL_BUFSIZE


      

Marco PPP_ADDRESS(p)

#define PPP_ADDRESS(p) (((u_char *)(p))[0])
/*
 * The basic PPP frame.
 */

Marco PPP_CONTROL(p)

#define PPP_CONTROL(p) (((u_char *)(p))[1])


      

Marco PPP_PROTOCOL(p)

#define PPP_PROTOCOL(p) ((((u_char *)(p))[2] << 8) + ((u_char *)(p))[3])


      

Marco PPP_ALLSTATIONS

#define PPP_ALLSTATIONS 255 /* All-Stations broadcast address */
/*
 * Significant octet values.
 */

Marco PPP_UI

#define PPP_UI	3 /* Unnumbered Information */


      

Marco PPP_FLAG

#define PPP_FLAG 7e /* Flag Sequence */


      

Marco PPP_ESCAPE

#define PPP_ESCAPE 7d /* Asynchronous Control Escape */


      

Marco PPP_TRANS

#define PPP_TRANS 32 /* Asynchronous transparency modifier */


      

Marco PPP_IP

#define PPP_IP	33 /* Internet Protocol */
/*
 * Protocol field values.
 */

Marco PPP_AT

#define PPP_AT	41 /* AppleTalk Protocol */


      

Marco PPP_IPX

#define PPP_IPX	2b /* IPX protocol */


      

Marco PPP_VJC_COMP

#define PPP_VJC_COMP 2d /* VJ compressed TCP */


      

Marco PPP_VJC_UNCOMP

#define PPP_VJC_UNCOMP 47 /* VJ uncompressed TCP */


      

Marco PPP_IPV6

#define PPP_IPV6 87 /* Internet Protocol Version 6 */


      

Marco PPP_COMP

#define PPP_COMP 15d /* compressed packet */


      

Marco PPP_IPCP

#define PPP_IPCP 32801 /* IP Control Protocol */


      

Marco PPP_ATCP

#define PPP_ATCP 32809 /* AppleTalk Control Protocol */


      

Marco PPP_IPXCP

#define PPP_IPXCP 2050b /* IPX Control Protocol */


      

Marco PPP_IPV6CP

#define PPP_IPV6CP 32855 /* IPv6 Control Protocol */


      

Marco PPP_CCP

#define PPP_CCP	2063d /* Compression Control Protocol */


      

Marco PPP_ECP

#define PPP_ECP	32851 /* Encryption Control Protocol */


      

Marco PPP_LCP

#define PPP_LCP	0xc021 /* Link Control Protocol */


      

Marco PPP_PAP

#define PPP_PAP	0xc023 /* Password Authentication Protocol */


      

Marco PPP_LQR

#define PPP_LQR	0xc025 /* Link Quality Report protocol */


      

Marco PPP_CHAP

#define PPP_CHAP 0xc223 /* Cryptographic Handshake Auth. Protocol */


      

Marco PPP_CBCP

#define PPP_CBCP 0xc029 /* Callback Control Protocol */


      

Marco PPP_EAP

#define PPP_EAP	0xc227 /* Extensible Authentication Protocol */


      

Marco EPD_NULL

#define EPD_NULL 0 /* null discriminator, no data */
/* values for epdisc.class */

Marco EPD_LOCAL

#define EPD_LOCAL 1


      

Marco EPD_IP

#define EPD_IP	2


      

Marco EPD_MAC

#define EPD_MAC	3


      

Marco EPD_MAGIC

#define EPD_MAGIC 4


      

Marco EPD_PHONENUM

#define EPD_PHONENUM 5


      

Marco PPP_OCTETS_DIRECTION_SUM

#define PPP_OCTETS_DIRECTION_SUM       0


      

Marco PPP_OCTETS_DIRECTION_IN

#define PPP_OCTETS_DIRECTION_IN        1


      

Marco PPP_OCTETS_DIRECTION_OUT

#define PPP_OCTETS_DIRECTION_OUT       2


      

Marco PPP_OCTETS_DIRECTION_MAXOVERAL

#define PPP_OCTETS_DIRECTION_MAXOVERAL 3


      

Marco PPP_OCTETS_DIRECTION_MAXSESSION

#define PPP_OCTETS_DIRECTION_MAXSESSION 4
/* same as previos, but little different on RADIUS side */

Marco PPP_DATAINPUT

#define PPP_DATAINPUT 0
/* Data input may be used by CCP and ECP, remove this entry
 * from struct protent to save some flash
 */

Marco PAP_WITHPEER

#define PAP_WITHPEER 1


      

Marco PAP_PEER

#define PAP_PEER 2


      

Marco CHAP_WITHPEER

#define CHAP_WITHPEER 4


      

Marco CHAP_PEER

#define CHAP_PEER 8


      

Marco EAP_WITHPEER

#define EAP_WITHPEER 16


      

Marco EAP_PEER

#define EAP_PEER 32


      

Marco CHAP_MD5_WITHPEER

#define CHAP_MD5_WITHPEER 64


      

Marco CHAP_MD5_PEER

#define CHAP_MD5_PEER	128


      

Marco CHAP_MS_SHIFT

#define CHAP_MS_SHIFT	8 /* LSB position for MS auths */


      

Marco CHAP_MS_WITHPEER

#define CHAP_MS_WITHPEER 256


      

Marco CHAP_MS_PEER

#define CHAP_MS_PEER	512


      

Marco CHAP_MS2_WITHPEER

#define CHAP_MS2_WITHPEER 1024


      

Marco CHAP_MS2_PEER

#define CHAP_MS2_PEER	2048


      

Marco CHAP_MDTYPE_SUPPORTED

#define CHAP_MDTYPE_SUPPORTED (MDTYPE_MICROSOFT_V2 | MDTYPE_MICROSOFT | MDTYPE_MD5)


      

Marco CHAP_MDTYPE_SUPPORTED

#define CHAP_MDTYPE_SUPPORTED (MDTYPE_MD5)


      

Marco CHAP_MDTYPE_SUPPORTED

#define CHAP_MDTYPE_SUPPORTED (MDTYPE_NONE)


      

Marco GETCHAR(c, cp)

#define GETCHAR(c, cp) { \
 (c) = *(cp)++; \
}
/*
 * Inline versions of get/put char/short/long.
 * Pointer is advanced; we assume that both arguments
 * are lvalues and will already be in registers.
 * cp MUST be u_char *.
 */

Marco PUTCHAR(c, cp)

#define PUTCHAR(c, cp) { \
 *(cp)++ = (u_char) (c); \
}


      

Marco GETSHORT(s, cp)

#define GETSHORT(s, cp) { \
 (s) = *(cp)++ << 8; \
 (s) |= *(cp)++; \
}


      

Marco PUTSHORT(s, cp)

#define PUTSHORT(s, cp) { \
 *(cp)++ = (u_char) ((s) >> 8); \
 *(cp)++ = (u_char) (s); \
}


      

Marco GETLONG(l, cp)

#define GETLONG(l, cp) { \
 (l) = *(cp)++ << 8; \
 (l) |= *(cp)++; (l) <<= 8; \
 (l) |= *(cp)++; (l) <<= 8; \
 (l) |= *(cp)++; \
}


      

Marco PUTLONG(l, cp)

#define PUTLONG(l, cp) { \
 *(cp)++ = (u_char) ((l) >> 24); \
 *(cp)++ = (u_char) ((l) >> 16); \
 *(cp)++ = (u_char) ((l) >> 8); \
 *(cp)++ = (u_char) (l); \
}


      

Marco INCPTR(n, cp)

#define INCPTR(n, cp) ((cp) += (n))


      

Marco DECPTR(n, cp)

#define DECPTR(n, cp) ((cp) -= (n))


      

Marco TIMEOUT(f, a, t)

#define TIMEOUT(f, a, t)       do { sys_untimeout((f), (a)); sys_timeout((t)*1000, (f), (a)); } while(0)
/*
 * System dependent definitions for user-level 4.3BSD UNIX implementation.
 */

Marco TIMEOUTMS(f, a, t)

#define TIMEOUTMS(f, a, t)     do { sys_untimeout((f), (a)); sys_timeout((t), (f), (a)); } while(0)


      

Marco UNTIMEOUT(f, a)

#define UNTIMEOUT(f, a)        sys_untimeout((f), (a))


      

Marco BZERO(s, n)

#define BZERO(s, n)	memset(s, 0, n)


      

Marco BCMP(s1, s2, l)

#define BCMP(s1, s2, l)	memcmp(s1, s2, l)


      

Marco PRINTMSG(m, l)

#define PRINTMSG(m, l)	{ ppp_info("Remote message: %0.*v", l, m); }


      

Marco MAKEHEADER(p, t)

#define MAKEHEADER(p, t) { \
   PUTCHAR(PPP_ALLSTATIONS, p); \
   PUTCHAR(PPP_UI, p); \
   PUTSHORT(t, p); }
/*
 * MAKEHEADER - Add Header fields to a packet.
 */

Marco mp_bundle_terminated()

#define mp_bundle_terminated() /* nothing */


      

Marco mp_exit_bundle()

#define mp_exit_bundle() /* nothing */


      
      
#define doing_multilink	0


      
      
#define multilink_master 0

      

Functions

Func ppp_init

int ppp_init(void);
/* initialize the PPP subsystem */

Func ppp_new

ppp_pcb *ppp_new(struct netif *pppif, const struct link_callbacks *callbacks, void *link_ctx_cb,
                ppp_link_status_cb_fn link_status_cb, void *ctx_cb);
/* Create a new PPP control block */

Func ppp_start

void ppp_start(ppp_pcb *pcb);
/* Initiate LCP open request */
void ppp_link_failed(ppp_pcb *pcb);
/* Called when link failed to setup */
void ppp_link_end(ppp_pcb *pcb);
/* Called when link is normally down (i.e. it was asked to end) */

Func ppp_input

void ppp_input(ppp_pcb *pcb, struct pbuf *pb);
/* function called to process input packet */

Func ppp_write

err_t ppp_write(ppp_pcb *pcb, struct pbuf *p);
/* function called by all PPP subsystems to send packets */
void ppp_link_terminated(ppp_pcb *pcb);
/* functions called by auth.c link_terminated() */

Func new_phase

void new_phase(ppp_pcb *pcb, int p);


      

Func ppp_send_config

int ppp_send_config(ppp_pcb *pcb, int mtu, u32_t accm, int pcomp, int accomp);


      

Func ppp_recv_config

int ppp_recv_config(ppp_pcb *pcb, int mru, u32_t accm, int pcomp, int accomp);


      

Func sifaddr

int sifaddr(ppp_pcb *pcb, u32_t our_adr, u32_t his_adr, u32_t netmask);


      

Func cifaddr

int cifaddr(ppp_pcb *pcb, u32_t our_adr, u32_t his_adr);


      

Func sifproxyarp

int sifproxyarp(ppp_pcb *pcb, u32_t his_adr);


      

Func cifproxyarp

int cifproxyarp(ppp_pcb *pcb, u32_t his_adr);


      

Func sdns

int sdns(ppp_pcb *pcb, u32_t ns1, u32_t ns2);


      

Func cdns

int cdns(ppp_pcb *pcb, u32_t ns1, u32_t ns2);


      

Func sifvjcomp

int sifvjcomp(ppp_pcb *pcb, int vjcomp, int cidcomp, int maxcid);


      

Func sifup

int sifup(ppp_pcb *pcb);


      

Func sifdown

int sifdown (ppp_pcb *pcb);


      

Func get_mask

u32_t get_mask(u32_t addr);


      

Func sif6addr

int sif6addr(ppp_pcb *pcb, eui64_t our_eui64, eui64_t his_eui64);


      

Func cif6addr

int cif6addr(ppp_pcb *pcb, eui64_t our_eui64, eui64_t his_eui64);


      

Func sif6up

int sif6up(ppp_pcb *pcb);


      

Func sif6down

int sif6down (ppp_pcb *pcb);


      

Func sifnpmode

int sifnpmode(ppp_pcb *pcb, int proto, enum NPmode mode);


      

Func netif_set_mtu

void netif_set_mtu(ppp_pcb *pcb, int mtu);


      

Func netif_get_mtu

int netif_get_mtu(ppp_pcb *pcb);


      

Func ccp_test

int ccp_test(ppp_pcb *pcb, u_char *opt_ptr, int opt_len, int for_transmit);


      

Func ccp_set

void ccp_set(ppp_pcb *pcb, u8_t isopen, u8_t isup, u8_t receive_method, u8_t transmit_method);


      

Func ccp_reset_comp

void ccp_reset_comp(ppp_pcb *pcb);


      

Func ccp_reset_decomp

void ccp_reset_decomp(ppp_pcb *pcb);


      

Func ccp_fatal_error

int ccp_fatal_error(ppp_pcb *pcb);


      

Func get_idle_time

int get_idle_time(ppp_pcb *pcb, struct ppp_idle *ip);


      

Func get_loop_output

int get_loop_output(void);


      
      
void print_link_stats(void);


      
      
void reset_link_stats(int u);
/* Print stats, if available */
void update_link_stats(int u);
/* Reset (init) stats when link goes up */
void link_required(ppp_pcb *pcb);
/* Procedures exported from auth.c */
void link_terminated(ppp_pcb *pcb);
/* we are starting to use the link */
void link_down(ppp_pcb *pcb);
/* we are finished with the link */

Func upper_layers_down

void upper_layers_down(ppp_pcb *pcb);
/* the LCP layer has left the Opened state */
void link_established(ppp_pcb *pcb);
/* take all NCPs down */

Func start_networks

void start_networks(ppp_pcb *pcb);
/* the link is up; authenticate now */

Func continue_networks

void continue_networks(ppp_pcb *pcb);
/* start all the network control protos */

Func auth_check_passwd

int auth_check_passwd(ppp_pcb *pcb, char *auser, int userlen, char *apasswd, int passwdlen, const char **msg, int *msglen);


      

Func auth_peer_fail

void auth_peer_fail(ppp_pcb *pcb, int protocol);
/* check the user name and passwd against configuration */

Func auth_peer_success

void auth_peer_success(ppp_pcb *pcb, int protocol, int prot_flavor, const char *name, int namelen);
/* peer failed to authenticate itself */

Func auth_withpeer_fail

void auth_withpeer_fail(ppp_pcb *pcb, int protocol);


      

Func auth_withpeer_success

void auth_withpeer_success(ppp_pcb *pcb, int protocol, int prot_flavor);
/* we failed to authenticate ourselves */

Func np_up

void np_up(ppp_pcb *pcb, int proto);


      

Func np_down

void np_down(ppp_pcb *pcb, int proto);
/* a network protocol has come up */

Func np_finished

void np_finished(ppp_pcb *pcb, int proto);
/* a network protocol has gone down */

Func get_secret

int get_secret(ppp_pcb *pcb, const char *client, const char *server, char *secret, int *secret_len, int am_server);


      

Func demand_conf

void demand_conf (void);


      

Func demand_block

void demand_block (void);
/* config interface(s) for demand-dial */

Func demand_unblock

void demand_unblock (void);
/* set all NPs to queue up packets */

Func demand_discard

void demand_discard (void);
/* set all NPs to pass packets */

Func demand_rexmit

void demand_rexmit (int, u32_t);
/* set all NPs to discard packets */

Func loop_chars

int loop_chars (unsigned char *, int);
/* retransmit saved frames for an NP*/

Func loop_frame

int loop_frame (unsigned char *, int);
/* process chars from loopback */

Func mp_check_options

void mp_check_options (void);


      

Func mp_join_bundle

int mp_join_bundle (void);
/* Check multilink-related options */

Func mp_exit_bundle

void mp_exit_bundle (void);
/* join our link to an appropriate bundle */

Func mp_bundle_terminated

void mp_bundle_terminated (void);
/* have disconnected our link from bundle */

Func str_to_epdisc

int str_to_epdisc (struct epdisc *, char *);
/* string from endpoint discrim. */

Func ppp_print_string

void ppp_print_string(const u_char *p, int len, void (*printer) (void *, const char *, ...), void *arg);
/* Procedures exported from utils.c. */

Func ppp_slprintf

int ppp_slprintf(char *buf, int buflen, const char *fmt, ...);
/* Format a string for output */

Func ppp_vslprintf

int ppp_vslprintf(char *buf, int buflen, const char *fmt, va_list args);
/* sprintf++ */

Func ppp_strlcpy

size_t ppp_strlcpy(char *dest, const char *src, size_t len);
/* vsprintf++ */

Func ppp_strlcat

size_t ppp_strlcat(char *dest, const char *src, size_t len);
/* safe strcpy */

Func ppp_dbglog

void ppp_dbglog(const char *fmt, ...);
/* safe strncpy */

Func ppp_info

void ppp_info(const char *fmt, ...);
/* log a debug message */

Func ppp_notice

void ppp_notice(const char *fmt, ...);
/* log an informational message */

Func ppp_warn

void ppp_warn(const char *fmt, ...);
/* log a notice-level message */

Func ppp_error

void ppp_error(const char *fmt, ...);
/* log a warning message */

Func ppp_fatal

void ppp_fatal(const char *fmt, ...);
/* log an error message */

Func ppp_dump_packet

void ppp_dump_packet(ppp_pcb *pcb, const char *tag, unsigned char *p, int len);

      

Vars

Variable char

char *epdisc_to_str (struct epdisc *);

      

Consts

Const

const char * protocol_name(int proto);

      

Types

Typedefs