Zephyr API Documentation 4.4.0-rc1
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
PPP L2/driver Support Functions

Point-to-point (PPP) L2/driver support functions. More...

Data Structures

struct  ppp_api
 PPP L2 API. More...
struct  ppp_fsm
 Generic PPP Finite State Machine. More...
struct  lcp_options
 Link control protocol options. More...
struct  ipcp_options
 IPv4 control protocol options. More...
struct  ipv6cp_options
 IPv6 control protocol options. More...
struct  ppp_context
 PPP L2 context specific to certain network interface. More...

Macros

#define PPP_MRU   CONFIG_NET_PPP_MTU_MRU
 PPP maximum receive unit (MRU).
#define PPP_MTU   PPP_MRU
 PPP maximum transfer unit (MTU).
#define PPP_MAX_TERMINATE_REASON_LEN   32
 Max length of terminate description string.
#define PPP_INTERFACE_IDENTIFIER_LEN   8
 Length of network interface identifier.
#define LCP_NUM_MY_OPTIONS   1
#define NET_PPP_DEFAULT_ASYNC_MAP   (0xffffffffU)
 Default value for the PPP Asynchronous Control Character Map.
#define NET_EVENT_PPP_CARRIER_ON   (NET_PPP_EVENT | NET_EVENT_PPP_CMD_CARRIER_ON)
 Event emitted when PPP carrier is on.
#define NET_EVENT_PPP_CARRIER_OFF   (NET_PPP_EVENT | NET_EVENT_PPP_CMD_CARRIER_OFF)
 Event emitted when PPP carrier is off.
#define NET_EVENT_PPP_PHASE_RUNNING   (NET_PPP_EVENT | NET_EVENT_PPP_CMD_PHASE_RUNNING)
 Event emitted when PPP goes into running phase.
#define NET_EVENT_PPP_PHASE_DEAD   (NET_PPP_EVENT | NET_EVENT_PPP_CMD_PHASE_DEAD)
 Event emitted when PPP goes into dead phase.

Typedefs

typedef void(* net_ppp_lcp_echo_reply_cb_t) (void *user_data, size_t user_data_len)
 A callback function that can be called if a Echo-Reply needs to be received.

Enumerations

enum  ppp_protocol_type {
  PPP_IP = 0x0021 , PPP_IPV6 = 0x0057 , PPP_IPCP = 0x8021 , PPP_ECP = 0x8053 ,
  PPP_IPV6CP = 0x8057 , PPP_CCP = 0x80FD , PPP_LCP = 0xc021 , PPP_PAP = 0xc023 ,
  PPP_CHAP = 0xc223 , PPP_EAP = 0xc227
}
 PPP protocol types. More...
enum  ppp_phase {
  PPP_DEAD , PPP_ESTABLISH , PPP_AUTH , PPP_NETWORK ,
  PPP_RUNNING , PPP_TERMINATE
}
 PPP phases. More...
enum  lcp_option_type {
  LCP_OPTION_RESERVED = 0 , LCP_OPTION_MRU = 1 , LCP_OPTION_ASYNC_CTRL_CHAR_MAP = 2 , LCP_OPTION_AUTH_PROTO = 3 ,
  LCP_OPTION_QUALITY_PROTO = 4 , LCP_OPTION_MAGIC_NUMBER = 5 , LCP_OPTION_PROTO_COMPRESS = 7 , LCP_OPTION_ADDR_CTRL_COMPRESS = 8
}
 LCP option types from RFC 1661 ch. More...
enum  ipcp_option_type {
  IPCP_OPTION_RESERVED = 0 , IPCP_OPTION_IP_ADDRESSES = 1 , IPCP_OPTION_IP_COMP_PROTO = 2 , IPCP_OPTION_IP_ADDRESS = 3 ,
  IPCP_OPTION_DNS1 = 129 , IPCP_OPTION_NBNS1 = 130 , IPCP_OPTION_DNS2 = 131 , IPCP_OPTION_NBNS2 = 132
}
 IPCP option types from RFC 1332. More...
enum  ipv6cp_option_type { IPV6CP_OPTION_RESERVED = 0 , IPV6CP_OPTION_INTERFACE_IDENTIFIER = 1 }
 IPV6CP option types from RFC 5072. More...

Functions

void net_ppp_init (struct net_if *iface)
 Initialize PPP L2 stack for a given interface.
uint32_t ppp_peer_async_control_character_map (struct net_if *iface)
 Retrieve the PPP peers Asynchronous Control Character Map.
static void ppp_mgmt_raise_carrier_on_event (struct net_if *iface)
 Raise CARRIER_ON event when PPP is connected.
static void ppp_mgmt_raise_carrier_off_event (struct net_if *iface)
 Raise CARRIER_OFF event when PPP is disconnected.
static void ppp_mgmt_raise_phase_running_event (struct net_if *iface)
 Raise PHASE_RUNNING event when PPP reaching RUNNING phase.
static void ppp_mgmt_raise_phase_dead_event (struct net_if *iface)
 Raise PHASE_DEAD event when PPP reaching DEAD phase.
static int net_ppp_ping (int idx, int32_t timeout)
 Send PPP Echo-Request to peer.
static struct ppp_contextnet_ppp_context_get (int idx)
 Get PPP context information.

Detailed Description

Point-to-point (PPP) L2/driver support functions.

Since
2.0
Version
0.8.0

Macro Definition Documentation

◆ LCP_NUM_MY_OPTIONS

#define LCP_NUM_MY_OPTIONS   1

#include <zephyr/net/ppp.h>

◆ NET_EVENT_PPP_CARRIER_OFF

#define NET_EVENT_PPP_CARRIER_OFF   (NET_PPP_EVENT | NET_EVENT_PPP_CMD_CARRIER_OFF)

#include <zephyr/net/ppp.h>

Event emitted when PPP carrier is off.

◆ NET_EVENT_PPP_CARRIER_ON

#define NET_EVENT_PPP_CARRIER_ON   (NET_PPP_EVENT | NET_EVENT_PPP_CMD_CARRIER_ON)

#include <zephyr/net/ppp.h>

Event emitted when PPP carrier is on.

◆ NET_EVENT_PPP_PHASE_DEAD

#define NET_EVENT_PPP_PHASE_DEAD   (NET_PPP_EVENT | NET_EVENT_PPP_CMD_PHASE_DEAD)

#include <zephyr/net/ppp.h>

Event emitted when PPP goes into dead phase.

◆ NET_EVENT_PPP_PHASE_RUNNING

#define NET_EVENT_PPP_PHASE_RUNNING   (NET_PPP_EVENT | NET_EVENT_PPP_CMD_PHASE_RUNNING)

#include <zephyr/net/ppp.h>

Event emitted when PPP goes into running phase.

◆ NET_PPP_DEFAULT_ASYNC_MAP

#define NET_PPP_DEFAULT_ASYNC_MAP   (0xffffffffU)

#include <zephyr/net/ppp.h>

Default value for the PPP Asynchronous Control Character Map.

◆ PPP_INTERFACE_IDENTIFIER_LEN

#define PPP_INTERFACE_IDENTIFIER_LEN   8

#include <zephyr/net/ppp.h>

Length of network interface identifier.

◆ PPP_MAX_TERMINATE_REASON_LEN

#define PPP_MAX_TERMINATE_REASON_LEN   32

#include <zephyr/net/ppp.h>

Max length of terminate description string.

◆ PPP_MRU

#define PPP_MRU   CONFIG_NET_PPP_MTU_MRU

#include <zephyr/net/ppp.h>

PPP maximum receive unit (MRU).

◆ PPP_MTU

#define PPP_MTU   PPP_MRU

#include <zephyr/net/ppp.h>

PPP maximum transfer unit (MTU).

Typedef Documentation

◆ net_ppp_lcp_echo_reply_cb_t

typedef void(* net_ppp_lcp_echo_reply_cb_t) (void *user_data, size_t user_data_len)

#include <zephyr/net/ppp.h>

A callback function that can be called if a Echo-Reply needs to be received.

Parameters
user_dataUser settable data that is passed to the callback function.
user_data_lenLength of the user data.

Enumeration Type Documentation

◆ ipcp_option_type

#include <zephyr/net/ppp.h>

IPCP option types from RFC 1332.

Enumerator
IPCP_OPTION_RESERVED 

Reserved IPCP option value (do not use).

IPCP_OPTION_IP_ADDRESSES 

IP Addresses.

IPCP_OPTION_IP_COMP_PROTO 

IP Compression Protocol.

IPCP_OPTION_IP_ADDRESS 

IP Address.

IPCP_OPTION_DNS1 

Primary DNS Server Address.

IPCP_OPTION_NBNS1 

Primary NBNS Server Address.

IPCP_OPTION_DNS2 

Secondary DNS Server Address.

IPCP_OPTION_NBNS2 

Secondary NBNS Server Address.

◆ ipv6cp_option_type

#include <zephyr/net/ppp.h>

IPV6CP option types from RFC 5072.

Enumerator
IPV6CP_OPTION_RESERVED 

Reserved IPV6CP option value (do not use).

IPV6CP_OPTION_INTERFACE_IDENTIFIER 

Interface identifier.

◆ lcp_option_type

#include <zephyr/net/ppp.h>

LCP option types from RFC 1661 ch.

6

Enumerator
LCP_OPTION_RESERVED 

Reserved option value (do not use).

LCP_OPTION_MRU 

Maximum-Receive-Unit.

LCP_OPTION_ASYNC_CTRL_CHAR_MAP 

Async-Control-Character-Map.

LCP_OPTION_AUTH_PROTO 

Authentication-Protocol.

LCP_OPTION_QUALITY_PROTO 

Quality-Protocol.

LCP_OPTION_MAGIC_NUMBER 

Magic-Number.

LCP_OPTION_PROTO_COMPRESS 

Protocol-Field-Compression.

LCP_OPTION_ADDR_CTRL_COMPRESS 

Address-and-Control-Field-Compression.

◆ ppp_phase

enum ppp_phase

#include <zephyr/net/ppp.h>

PPP phases.

Enumerator
PPP_DEAD 

Physical-layer not ready.

PPP_ESTABLISH 

Link is being established.

PPP_AUTH 

Link authentication with peer.

PPP_NETWORK 

Network connection establishment.

PPP_RUNNING 

Network running.

PPP_TERMINATE 

Link termination.

◆ ppp_protocol_type

#include <zephyr/net/ppp.h>

PPP protocol types.

See https://www.iana.org/assignments/ppp-numbers/ppp-numbers.xhtml for details.

Enumerator
PPP_IP 

RFC 1332.

PPP_IPV6 

RFC 5072.

PPP_IPCP 

RFC 1332.

PPP_ECP 

RFC 1968.

PPP_IPV6CP 

RFC 5072.

PPP_CCP 

RFC 1962.

PPP_LCP 

RFC 1661.

PPP_PAP 

RFC 1334.

PPP_CHAP 

RFC 1334.

PPP_EAP 

RFC 2284.

Function Documentation

◆ net_ppp_context_get()

struct ppp_context * net_ppp_context_get ( int idx)
inlinestatic

#include <zephyr/net/ppp.h>

Get PPP context information.

This is only used by net-shell to print information about PPP.

Parameters
idxPPP network interface index
Returns
PPP context or NULL if idx is invalid.

◆ net_ppp_init()

void net_ppp_init ( struct net_if * iface)

#include <zephyr/net/ppp.h>

Initialize PPP L2 stack for a given interface.

Parameters
ifaceA valid pointer to a network interface

◆ net_ppp_ping()

int net_ppp_ping ( int idx,
int32_t timeout )
inlinestatic

#include <zephyr/net/ppp.h>

Send PPP Echo-Request to peer.

We expect to receive Echo-Reply back.

Parameters
idxPPP network interface index
timeoutAmount of time to wait Echo-Reply. The value is in milliseconds.
Returns
0 if Echo-Reply was received, < 0 if there is a timeout or network index is not a valid PPP network index.

◆ ppp_mgmt_raise_carrier_off_event()

void ppp_mgmt_raise_carrier_off_event ( struct net_if * iface)
inlinestatic

#include <zephyr/net/ppp.h>

Raise CARRIER_OFF event when PPP is disconnected.

Parameters
ifacePPP network interface.

◆ ppp_mgmt_raise_carrier_on_event()

void ppp_mgmt_raise_carrier_on_event ( struct net_if * iface)
inlinestatic

#include <zephyr/net/ppp.h>

Raise CARRIER_ON event when PPP is connected.

Parameters
ifacePPP network interface.

◆ ppp_mgmt_raise_phase_dead_event()

void ppp_mgmt_raise_phase_dead_event ( struct net_if * iface)
inlinestatic

#include <zephyr/net/ppp.h>

Raise PHASE_DEAD event when PPP reaching DEAD phase.

Parameters
ifacePPP network interface.

◆ ppp_mgmt_raise_phase_running_event()

void ppp_mgmt_raise_phase_running_event ( struct net_if * iface)
inlinestatic

#include <zephyr/net/ppp.h>

Raise PHASE_RUNNING event when PPP reaching RUNNING phase.

Parameters
ifacePPP network interface.

◆ ppp_peer_async_control_character_map()

uint32_t ppp_peer_async_control_character_map ( struct net_if * iface)

#include <zephyr/net/ppp.h>

Retrieve the PPP peers Asynchronous Control Character Map.

Before PPP LCP negotiation is complete, this function will return the default value of 0xffffffff. After LCP negotiation, this function will return the value that peer has provided.

Parameters
ifacePPP network interface.
Returns
uint32_t Current bitmask for the Asynchronous Control Character Map