📄 ppp.h
字号:
/** Copyright (c) 1998-2001 by NETsilicon Inc.** This software is copyrighted by and is the sole property of* NETsilicon. All rights, title, ownership, or other interests* in the software remain the property of NETsilicon. This* software may only be used in accordance with the corresponding* license agreement. Any unauthorized use, duplication, transmission,* distribution, or disclosure of this software is expressly forbidden.** This Copyright notice may not be removed or modified without prior* written consent of NETsilicon.** NETsilicon, reserves the right to modify this software* without notice.** NETsilicon* 411 Waverley Oaks Road USA 781.647.1234* Suite 227 http://www.netsilicon.com* Waltham, MA 02452 AmericaSales@netsilicon.com*************************************************************************** $Name: Fusion 6.52 Fusion 6.51 $* $Date: 2001/12/11 15:47:11 $* $Source: M:/psisrc/ppp/incl/rcs/ppp.h $* $Revision: 1.42 $************************************************************************** File Description: PPP definition and routine declarations* *************************************************************************/#ifndef _PPP_#define _PPP_#include "m.h"#include "vjcomp.h"#include "slppp.h"#include "netdev.h"#include "pppconst.h"#include "pppapi.h"/* PPP Admin State (per interface) */#define PPP_ADMINS_CLOSED 0#define PPP_ADMINS_OPEN 1/* PPP Finite State Machine States */#define PS_INIT 0#define PS_START 1#define PS_CLOSE 2#define PS_STOP 3#define PS_2CLOSE 4#define PS_2STOP 5#define PS_REQXMT 6#define PS_ACKREC 7#define PS_ACKXMT 8#define PS_OPEN 9#define PS_INVALID 255/* PPP Finite State Machine Events */#define PE_UP 0#define PE_DOWN 1#define PE_OPEN 2#define PE_CLOSE 3#define PE_TON 4#define PE_TOZ 5#define PE_RCRGOOD 6#define PE_RCRBAD 7#define PE_RCA 8#define PE_RCN 9#define PE_RTR 10#define PE_RTA 11#define PE_RUC 12#define PE_RXJGOOD 13#define PE_RXJBAD 14#define PE_RXR 15/* ppp Rq codes */#define LCP_CFGREQ 1#define LCP_CFGACK 2#define LCP_CFGNAK 3#define LCP_CFGREJ 4#define LCP_TERREQ 5#define LCP_TERACK 6#define LCP_CODREJ 7#define LCP_PROREJ 8#define LCP_ECHREQ 9#define LCP_ECHREP 10#define LCP_DISCRD 11#define LCP_CFGMXR 1#define LCP_CFGASY 2#define LCP_CFGAUT 3#define LCP_CFGQUA 4#define LCP_CFGMAG 5#define LCP_CFGPRO 7#define LCP_CFGADD 8#define IPCP_CFGREQ 1#define IPCP_CFGACK 2#define IPCP_CFGNAK 3#define IPCP_CFGREJ 4#define IPCP_TERREQ 5#define IPCP_TERACK 6#define IPCP_CODREJ 7#define IPCP_VANJAC 0x002d#define IPCP_CFGCMP 2#define IPCP_CFGIPA 3#define IPCP_PRI_DNS 129#define IPCP_PRI_NBNS 130#define IPCP_SEC_DNS 131#define IPCP_SEC_NBNS 132#define PAP_AUTREQ 1#define PAP_AUTACK 2#define PAP_AUTNAK 3#define CHAP_CHALLENGE 1#define CHAP_RESPONSE 2#define CHAP_SUCCESS 3#define CHAP_FAILURE 4#define ALG_MD5 0x5enum ppp_layers { PPP_LCPLAYER, PPP_IPCPLAYER, PPP_PAP_PEER_AUTH_LAYER, PPP_CHAP_PEER_AUTH_LAYER,#ifdef PPP_AUTH_SERVER PPP_PAP_AUTH_PEER_LAYER, PPP_CHAP_AUTH_PEER_LAYER,#endif NUM_PPP_LAYERS};#define LCP_PASSAUT 0xc023#define LCP_CHALHS 0xc223#define PPP_IPTYPE 0x0021#define PPP_CTCPTYPE 0x002d#define PPP_UTCPTYPE 0x002f#define PPP_IPCPTYPE 0x8021#define PPP_LCPTYPE 0xc021#define PPP_PAPTYPE 0xc023#define PPP_CHAPTYPE 0xc223#define PPP_TERMTIMER 0x00000100#define PPP_CONFTIMER 0x00000200#define PPP_CFG_RETRY_TO#define MAX_LCP_RETRY 10#define MAX_IPCP_RETRY 10#define MAX_TERM_RETRY 2#ifndef CHAP_DEF_CHALL_INT#define CHAP_DEF_CHALL_INT 180 /* Rechallenge every 180 secs by default */#endif#define PPP_MAX_DATA 4096#define PPP_HDR_SIZE 4#define PPP_ADDRLEN 1#define PPP_TX_SIZE PPP_MAX_DATA#define PPP_RX_SIZE PPP_TX_SIZE#define PPP_RAW 0#define PPP_RQ_MAX 8/* Control characters used in ppp_onechar_input() */#define PPP_ESC 0x7d /* Control Escape RFC 1662 p.8 */#define PPP_FLAG 0x7e /* Flag Sequence RFC 1662 p.5 *//* pppsession.ppp_inflag */#define PPP_ESC_FLG 0x01 /* The previous octet was PPP_ESC so we'll need to escape the next character */#define PPP_INIT_DONE 0x02 /* pppsession is initialized */#define PPP_RESET 0x04 /* re-initializing psp session *//* These structures are packed */typedef u8 PPPH; /* PPP header structure */#define PPPH_PPP_ADDRESS 0 /* 1 byte */#define PPPH_PPP_CONTROL (PPPH_PPP_ADDRESS+1) /* 1 byte */#define PPPH_PPP_PROTOCOL (PPPH_PPP_CONTROL+1) /* 2 bytes */#define SIZEOF_PPPH (PPPH_PPP_PROTOCOL+2)typedef u8 LCPH; /* LCP header structure */#define LCPH_LCP_CODE 0 /* 1 byte */#define LCPH_LCP_ID (LCPH_LCP_CODE+1) /* 1 byte */#define LCPH_LCP_LEN (LCPH_LCP_ID+1) /* 2 bytes */#define SIZEOF_LCPH (LCPH_LCP_LEN+2)typedef u8 IPCPH; /* IPCP header structure */#define IPCPH_IPCP_CODE 0 /* 1 byte */#define IPCPH_IPCP_ID (IPCPH_IPCP_CODE+1) /* 1 byte */#define IPCPH_IPCP_LEN (IPCPH_IPCP_ID+1) /* 2 bytes */#define SIZEOF_IPCPH (IPCPH_IPCP_LEN+2)typedef u8 PAPH; /* PAP header structure */#define PAPH_PAP_CODE 0 /* 1 byte */#define PAPH_PAP_ID (PAPH_PAP_CODE+1) /* 1 byte */#define PAPH_PAP_LEN (PAPH_PAP_ID+1) /* 2 bytes */#define SIZEOF_PAPH (PAPH_PAP_LEN+2)typedef u8 CHAPH; /* CHAP header structure */#define CHAPH_CHAP_CODE 0 /* 1 byte */#define CHAPH_CHAP_ID (CHAPH_CHAP_CODE+1) /* 1 byte */#define CHAPH_CHAP_LEN (CHAPH_CHAP_ID+1) /* 2 bytes */#define CHAPH_CHAP_VLEN (CHAPH_CHAP_LEN+2) /* 1 byte */#define CHAPH_CHAP_VALUE (CHAPH_CHAP_VLEN+1) /* Not known in advance */#define SIZEOF_CHAPH (CHAPH_CHAP_VLEN+1) /* Does not include the value itself */typedef struct { u32 asynctl; u32 magic; u16 maxmru; u16 authpro; u16 qualpro; u8 pfc; u8 acc;} lcpconfig;typedef struct { u32 ipaddrs; u32 pri_dnsaddr; /* Primary DNS server */ u32 pri_nbnsaddr; /* Primary NBNS (WINS) server */ u32 sec_dnsaddr; /* Secondary DNS server */ u32 sec_nbnsaddr; /* Secondary NBNS (WINS) server */ u16 comprot; u8 maxslot; u8 comslot; } ipcpconfig;typedef struct { u8 terminate; u8 configure; u8 failure; } pppretries;#define PPP_MAX_EVENTS 10 /* Max events we can queue for a PPP FSM */typedef struct { u8 next_state; u8 actions[8]; u8 does_free; /* == 1, the (action)() frees memory */} ppp_tran;#define NOP '\xff'typedef struct { u8 event; u8 layer; m *mp;}PPP_event;/* Each protocol layer has a function to return the PPP transition from its state table.*/typedef ppp_tran* (*ppp_get_transition_function)(int state, int event);/*** Authentication related stuff ***//* Note: peer_auth_x refers to the peer authenticating us, and auth_peer_x refers to us authenticating the peer.*//* PAP authentication intial state */#define PPP_AUTH_STATE_INIT 0 /* PAP FSM Events */#define PAPE_LCP_UP_PEER_AUTH 0 /* LCP is up. Peer authenticating us */#define PAPE_LCP_DOWN 1 /* LCP is down */#define PAPE_TON 2 /* Timeout non-zero */#define PAPE_TOZ 3 /* Timeout zero */#define PAPE_RCA 4 /* Received auth success from peer - we're in */#define PAPE_RCN 5 /* Received auth fail - we failed */#ifdef PPP_AUTH_SERVER#define PAPE_LCP_UP_AUTH_PEER 6 /* LCP is up. Authenticating Peer */#define PAPE_RCR 7 /* Received authentication request from peer */#define PAPE_RAA 8 /* Received authentication sucess from authenticator such as RADIUS or from local database of users/secrets. */#define PAPE_RAN 9 /* Received authentication fail from authenticator such as RADIUS or from local database of users/secrets. */#endif/* PAP States */#define PAPS_INIT PPP_AUTH_STATE_INIT#define PAPS_ACK_EXPECTED 1 /* Expecting an auth ack from peer (authenticating us) */#define PAPS_AUTH_SUCCESS 2 /* We were successfully authenticated by peer or we authenticated peer successfully. Used for both cases. */#ifdef PPP_AUTH_SERVER#define PAPS_REQ_EXPECTED 3 /* Expecting an auth request from peer */#define PAPS_AUTH_EXPECTED 4 /* Respecting an authenticator (RADIUS, local, etc.) to tell us if the user is OK to let in. */#endif#define PAPS_INVALID 255 /* Should generate a warning or assert *//** CHAP FSM Events **//* Common CHAP FSM Events (common to both directions) */#define CHAPE_LCP_UP 0 /* LCP is up. Authenticating Peer */#define CHAPE_LCP_DOWN 1 /* LCP is down */#define CHAPE_TON 2 /* Timeout non-zero */#define CHAPE_TOZ 3 /* Timeout zero *//* Additional CHAP events for peer authenticating us */#define CHAPE_RCH CHAPE_TOZ + 1 /* Received CHAP challenge from peer */#define CHAPE_RAP CHAPE_RCH + 1 /* Received Auth Pass */#define CHAPE_RAF CHAPE_RAP + 1 /* Received Auth Fail - we failed *//* Additional CHAP events for us authenticating the peer */#define CHAPE_RSP CHAPE_TOZ + 1 /* Received CHAP response from peer */#define CHAPE_PAT CHAPE_RSP + 1 /* Pass authentication of peer. Peer has successfully been authenticated. */#define CHAPE_FAT CHAPE_PAT + 1 /* Fail authentication of peer. Peer has failed being authenticated. *//* CHAP States - peer authenticates us */#define CHAPS_PEER_AUTH_INIT PPP_AUTH_STATE_INIT#define CHAPS_CHALL_EXPECTED 1 /* We are waiting for peer's challenge */#define CHAPS_RESP_SENT 2 /* We sent a response to a challenge and are waiting for authentication success or failure.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -