Nut/OS  5.0.5
API Reference
PPP

PPP Driver. More...

Collaboration diagram for PPP:

Data Structures

struct  _PPPDCB
 PPP interface structure. More...

Defines

#define PPP_PFC   0x01
#define PPP_ACFC   0x02
#define LCP_DEFOPT_ASYNCMAP   0x000A0000UL
#define LCP_OPEN   1
#define LCP_CLOSE   2
#define LCP_LOWERUP   3
#define LCP_LOWERDOWN   4

Typedefs

typedef struct _PPPDCB PPPDCB
 PPP interface type.

Functions

void NutPppInput (NUTDEVICE *dev, NETBUF *nb)
 Handle incoming PPP frames.
int NutPppOutput (NUTDEVICE *dev, uint16_t type, uint8_t *ha, NETBUF *nb)
 Send PPP frame.
void NutPppSm (void *arg)
 PPP state machine timeout thread.
int NutPppInitStateMachine (NUTDEVICE *dev)
 Initialize the PPP state machine.
void LcpOpen (NUTDEVICE *dev)
 Trigger LCP open event.
void LcpClose (NUTDEVICE *dev)
 Trigger LCP close event.
void LcpLowerUp (NUTDEVICE *dev)
 Trigger LCP lower up event.
void LcpLowerDown (NUTDEVICE *dev)
 Trigger LCP lower down event.
void IpcpOpen (NUTDEVICE *dev)
 Trigger IPCP open event.
void IpcpClose (NUTDEVICE *dev)
 Trigger IPCP close event.
void IpcpLowerUp (NUTDEVICE *dev)
void IpcpLowerDown (NUTDEVICE *dev)

Variables

NUTDEVICE devPpp
 Device information structure.
uint32_t new_magic = 0x12345678
IFNET ifn_ppp
 Network interface information structure.
NUTDEVICE devPpp
 Device information structure.

Detailed Description

PPP Driver.


Define Documentation

#define PPP_PFC   0x01
#define PPP_ACFC   0x02
#define LCP_DEFOPT_ASYNCMAP   0x000A0000UL

Referenced by LcpTxConfReq().

#define LCP_OPEN   1
#define LCP_CLOSE   2
#define LCP_LOWERUP   3

Referenced by AhdlcRx().

#define LCP_LOWERDOWN   4

Referenced by AhdlcRx().


Typedef Documentation

typedef struct _PPPDCB PPPDCB

PPP interface type.


Function Documentation

void NutPppInput ( NUTDEVICE dev,
NETBUF nb 
)

Handle incoming PPP frames.

Splits the PPP frame into the data link and the network part. Then the frame is routed to the proper handler, based on the type field in the header.

Note:
This routine is called by the device driver on incoming PPP frames. Applications typically do not call this function.
Parameters:
devIdentifies the device that received the frame.
nbPointer to a network buffer structure containing the PPP frame.

References __ppp_trf, __ppp_trs, ppp_header::address, AHDLC_ALLSTATIONS, _NUTDEVICE::dev_dcb, fputs(), LcpTxProtRej(), _NETBUF::nb_dl, _NETBUF::nb_nw, ntohs, NUTDEBUG, NutDumpPpp(), NutIpcpInput(), NutIpInput(), NutLcpInput(), NutNetBufFree(), NutPapInput(), NutSleep(), PAPCS_OPEN, PPP_CHAP, PPP_IP, PPP_IPCP, PPP_LCP, PPP_LQR, PPP_PAP, PPPS_OPENED, ppp_header::prot_type, _NBDATA::sz, and _NBDATA::vp.

Here is the call graph for this function:

int NutPppOutput ( NUTDEVICE dev,
uint16_t  type,
uint8_t ha,
NETBUF nb 
)

Send PPP frame.

Send a PPP frame of a given type using the specified device.

Parameters:
devIdentifies the network device to use.
typeType of this frame.
haHardware address of the destination, ignored with PPP.
nbNetwork buffer structure containing the packet to be sent. The structure must have been allocated by a previous call NutNetBufAlloc() and will be freed if this function returns with an error.
Returns:
0 on success, -1 in case of any errors.

References __ppp_trf, __ppp_trs, ppp_header::address, AHDLC_ALLSTATIONS, AHDLC_UI, ppp_header::control, _PPPDCB::dcb_fd, _NUTDEVICE::dev_dcb, _NUTDEVICE::dev_icb, fputs(), htons, ifnet::if_send, _NETBUF::nb_dl, NBAF_DATALINK, NutDumpPpp(), NutNetBufAlloc(), NutNetBufFree(), NutSleep(), ppp_header::prot_type, and _NBDATA::vp.

Referenced by NutIpcpOutput(), NutLcpOutput(), and NutPapOutput().

Here is the call graph for this function:

NutPppSm ( void *  arg)

PPP state machine timeout thread.

Handles timeouts for LCP and IPCP.

References _PPPDCB::dcb_auth_state, _PPPDCB::dcb_ipcp_state, _PPPDCB::dcb_lcp_state, _PPPDCB::dcb_reqid, _PPPDCB::dcb_retries, _NUTDEVICE::dev_dcb, IpcpTxConfReq(), LcpTxConfReq(), new_magic, NutIpcpOutput(), NutLcpOutput(), NutSleep(), PAPCS_AUTHREQ, PapTxAuthReq(), PPPS_ACKSENT, PPPS_CLOSED, PPPS_CLOSING, PPPS_REQSENT, PPPS_STOPPED, PPPS_STOPPING, and XCP_TERMREQ.

Referenced by NutPppInitStateMachine().

Here is the call graph for this function:

int NutPppInitStateMachine ( NUTDEVICE dev)

Initialize the PPP state machine.

Start the PPP timer thread, if not already running.

Parameters:
devPointer to the NUTDEVICE structure of the PPP device.
Returns:
0 on success, -1 otherwise.

References NUT_THREAD_PPPSMSTACK, NUT_THREAD_STACK_ADD, NUT_THREAD_STACK_MULT, NutPppSm(), and NutThreadCreate().

Here is the call graph for this function:

void LcpOpen ( NUTDEVICE dev)

Trigger LCP open event.

Enable the link to come up. Typically triggered by the upper layer, when it is enabled.

Parameters:
devPointer to the NUTDEVICE structure of the PPP device.

References __ppp_trf, __ppp_trs, _PPPDCB::dcb_lcp_state, _PPPDCB::dcb_reqid, _NUTDEVICE::dev_dcb, fputs(), LcpTxConfReq(), PPPS_CLOSED, PPPS_CLOSING, PPPS_INITIAL, PPPS_REQSENT, PPPS_STARTING, and PPPS_STOPPING.

Referenced by IpcpOpen().

Here is the call graph for this function:

void LcpClose ( NUTDEVICE dev)

Trigger LCP close event.

Disable the link.

Parameters:
devPointer to the NUTDEVICE structure of the PPP device.

References __ppp_trf, __ppp_trs, _PPPDCB::dcb_lcp_state, _PPPDCB::dcb_reqid, _NUTDEVICE::dev_dcb, fputs(), IpcpLowerDown(), NutLcpOutput(), PPPS_ACKRCVD, PPPS_ACKSENT, PPPS_CLOSED, PPPS_CLOSING, PPPS_INITIAL, PPPS_OPENED, PPPS_REQSENT, PPPS_STARTING, PPPS_STOPPED, PPPS_STOPPING, and XCP_TERMREQ.

Here is the call graph for this function:

void LcpLowerUp ( NUTDEVICE dev)

Trigger LCP lower up event.

Parameters:
devPointer to the NUTDEVICE structure of the PPP device.

References __ppp_trf, __ppp_trs, _PPPDCB::dcb_lcp_state, _PPPDCB::dcb_reqid, _NUTDEVICE::dev_dcb, fputs(), LcpTxConfReq(), PPPS_CLOSED, PPPS_INITIAL, PPPS_REQSENT, and PPPS_STARTING.

Here is the call graph for this function:

void LcpLowerDown ( NUTDEVICE dev)

Trigger LCP lower down event.

Parameters:
devPointer to the NUTDEVICE structure of the PPP device.

References __ppp_trf, __ppp_trs, _PPPDCB::dcb_lcp_state, _NUTDEVICE::dev_dcb, fputs(), IpcpLowerDown(), PPPS_ACKRCVD, PPPS_ACKSENT, PPPS_CLOSED, PPPS_CLOSING, PPPS_INITIAL, PPPS_OPENED, PPPS_REQSENT, PPPS_STARTING, PPPS_STOPPED, and PPPS_STOPPING.

Here is the call graph for this function:

void IpcpOpen ( NUTDEVICE dev)

Trigger IPCP open event.

Link is allowed to come up.

Parameters:
devPointer to the NUTDEVICE structure of the PPP device.

References __ppp_trf, __ppp_trs, _PPPDCB::dcb_ipcp_state, _PPPDCB::dcb_reqid, _NUTDEVICE::dev_dcb, fputs(), IpcpTxConfReq(), LcpOpen(), PPPS_CLOSED, PPPS_CLOSING, PPPS_INITIAL, PPPS_REQSENT, PPPS_STARTING, and PPPS_STOPPING.

Here is the call graph for this function:

void IpcpClose ( NUTDEVICE dev)

Trigger IPCP close event.

Disable the link.

Cancel timeouts and either initiate close or possibly go directly to the PPPS_CLOSED state.

Parameters:
devPointer to the NUTDEVICE structure of the PPP device.

References __ppp_trf, __ppp_trs, _PPPDCB::dcb_ipcp_state, _PPPDCB::dcb_reqid, _PPPDCB::dcb_state_chg, _NUTDEVICE::dev_dcb, fputs(), NutEventPost(), NutIpcpOutput(), PPPS_ACKRCVD, PPPS_ACKSENT, PPPS_CLOSED, PPPS_CLOSING, PPPS_INITIAL, PPPS_OPENED, PPPS_REQSENT, PPPS_STARTING, PPPS_STOPPED, PPPS_STOPPING, and XCP_TERMREQ.

Here is the call graph for this function:

void IpcpLowerUp ( NUTDEVICE dev)

References __ppp_trf, __ppp_trs, _PPPDCB::dcb_ipcp_state, _PPPDCB::dcb_reqid, _NUTDEVICE::dev_dcb, fputs(), IpcpTxConfReq(), PPPS_CLOSED, PPPS_INITIAL, PPPS_REQSENT, and PPPS_STARTING.

Referenced by PapRxAuthAck().

Here is the call graph for this function:

void IpcpLowerDown ( NUTDEVICE dev)

Variable Documentation

Device information structure.

This is a virtual device driver has no underlying hardware and must not be registered. It will be initialized when the application calls NutNetIfConfig().

Examples:
pppc/pppc.c.
uint32_t new_magic = 0x12345678

Referenced by NutPppSm().

Initial value:
 {
    IFT_PPP,                    
    0,                          
    {0, 0, 0, 0, 0, 0}
    ,                           
    0,                          
    0,                          
    0,                          
    PPP_MRU,                    
    0,                          
    0,                          
    0,                          
    NutPppInput,                
    0,                          
    NutPppOutput,               
    NULL                        



}

Network interface information structure.

Initial value:
 {
    0,                          
    {'p', 'p', 'p', 0, 0, 0, 0, 0, 0}
    ,                           
    IFTYP_NET,                  
    0,                          
    0,                          
    &ifn_ppp,                   
    &dcb_ppp,                   
    NutPppInit,                 
    NutPppIOCtl,                
    NutPppRead,                 
    NutPppWrite,                

    NutPppWrite_P,              

    NutPppOpen,                 
    NutPppClose,                
    0                           
}

Device information structure.

This is a virtual device driver has no underlying hardware and must not be registered. It will be initialized when the application calls NutNetIfConfig().