wanpipe/patches/kdrivers/include/wanpipe_sppp_iface.h

441 lines
16 KiB
C

/*
* These are the public elements of the Linux sppp module.
*/
#ifndef _WP_SPPP_IFACE_H
#define _WP_SPPP_IFACE_H
#ifdef WANLIP_DRIVER
enum sppp_ioctl_cmds {
SIOCG_SPPP_CONF,
SIOCS_SPPP_NEW_X25_CONF,
SIOCS_SPPP_DEL_X25_CONF,
SIOCG_SPPP_STATUS,
};
extern void *wp_register_chdlc_prot(void *,
char *,
void *,
wplip_prot_reg_t *);
extern void *wp_register_ppp_prot(void *,
char *,
void *,
wplip_prot_reg_t *);
extern int wp_unregister_sppp_prot(void *);
extern void *wp_register_sppp_chan(void *if_ptr,
void *prot_ptr,
char *devname,
void *cfg_ptr,
unsigned char type);
extern int wp_unregister_sppp_chan(void *chan_ptr);
extern int wp_sppp_open(void *sppp_ptr);
extern int wp_sppp_close(void *sppp_ptr);
extern int wp_sppp_rx(void *sppp_ptr, void *skb);
extern int wp_sppp_bh(void *sppp_ptr);
extern int wp_sppp_tx(void *sppp_ptr, void *skb, int type);
#if defined(__WINDOWS__)
extern void *wp_register_sppp_prot(void *, char *, void *, wplip_prot_reg_t *);
#endif
extern int wp_sppp_timer(void *sppp_ptr, unsigned int *period, unsigned int carrier_reliable);
extern int wp_sppp_pipemon(void *sppp, int cmd, int addr, unsigned char* data, unsigned int *len);
extern int wp_sppp_task(void *sppp_ptr);
#endif
/*=====================================================
* PPP Commands and Statistics
*====================================================*/
/* 'command' field defines */
#define PPP_READ_CODE_VERSION 0x10 /* configuration commands */
#define PPP_SET_CONFIG 0x05
#define PPP_READ_CONFIG 0x06
#define PPP_SET_INTR_FLAGS 0x20
#define PPP_READ_INTR_FLAGS 0x21
#define PPP_SET_INBOUND_AUTH 0x30
#define PPP_SET_OUTBOUND_AUTH 0x31
#define PPP_GET_CONNECTION_INFO 0x32
#define PPP_GET_LINK_STATUS 0x34
#define PPP_COMM_ENABLE 0x03 /* operational commands */
#define PPP_COMM_DISABLE 0x04
#define PPP_SEND_SIGN_FRAME 0x23
#define PPP_READ_SIGN_RESPONSE 0x24
#define PPP_DATALINE_MONITOR 0x33
#define PPP_READ_STATISTICS 0x07 /* statistics commands */
#define PPP_FLUSH_STATISTICS 0x08
#define PPP_READ_ERROR_STATS 0x09
#define PPP_FLUSH_ERROR_STATS 0x0A
#define PPP_READ_PACKET_STATS 0x12
#define PPP_FLUSH_PACKET_STATS 0x13
#define PPP_READ_LCP_STATS 0x14
#define PPP_FLUSH_LCP_STATS 0x15
#define PPP_READ_LPBK_STATS 0x16
#define PPP_FLUSH_LPBK_STATS 0x17
#define PPP_READ_IPCP_STATS 0x18
#define PPP_FLUSH_IPCP_STATS 0x19
#define PPP_READ_IPXCP_STATS 0x1A
#define PPP_FLUSH_IPXCP_STATS 0x1B
#define PPP_READ_PAP_STATS 0x1C
#define PPP_FLUSH_PAP_STATS 0x1D
#define PPP_READ_CHAP_STATS 0x1E
#define PPP_FLUSH_CHAP_STATS 0x1F
#define PPP_READ_AUTH 0x22
#define PPP_PAP 0xc023
#define PPP_CHAP 0xc223
#pragma pack(1)
/*----------------------------------------------------------------------------
* Packet Statistics (returned by the PPP_READ_PACKET_STATS command).
*/
typedef struct ppp_pkt_stats
{
unsigned short rx_bad_header ; /* 00: */
unsigned short rx_prot_unknwn ; /* 02: */
unsigned short rx_too_large ; /* 04: */
unsigned short rx_lcp ; /* 06: */
unsigned short tx_lcp ; /* 08: */
unsigned short rx_ipcp ; /* 0A: */
unsigned short tx_ipcp ; /* 0C: */
unsigned short rx_ipxcp ; /* 0E: */
unsigned short tx_ipxcp ; /* 10: */
unsigned short rx_pap ; /* 12: */
unsigned short tx_pap ; /* 14: */
unsigned short rx_chap ; /* 16: */
unsigned short tx_chap ; /* 18: */
unsigned short rx_lqr ; /* 1A: */
unsigned short tx_lqr ; /* 1C: */
unsigned short rx_ip ; /* 1E: */
unsigned short tx_ip ; /* 20: */
unsigned short rx_ipx ; /* 22: */
unsigned short tx_ipx ; /* 24: */
unsigned short rx_ipv6cp ; /* 26: */
unsigned short tx_ipv6cp ; /* 28: */
unsigned short rx_ipv6 ; /* 2A: */
unsigned short tx_ipv6 ; /* 2C: */
} ppp_pkt_stats_t;
/*----------------------------------------------------------------------------
* LCP Statistics (returned by the PPP_READ_LCP_STATS command).
*/
typedef struct ppp_lcp_stats
{
unsigned short rx_unknown ; /* 00: unknown LCP type */
unsigned short rx_conf_rqst ; /* 02: Configure-Request */
unsigned short rx_conf_ack ; /* 04: Configure-Ack */
unsigned short rx_conf_nak ; /* 06: Configure-Nak */
unsigned short rx_conf_rej ; /* 08: Configure-Reject */
unsigned short rx_term_rqst ; /* 0A: Terminate-Request */
unsigned short rx_term_ack ; /* 0C: Terminate-Ack */
unsigned short rx_code_rej ; /* 0E: Code-Reject */
unsigned short rx_proto_rej ; /* 10: Protocol-Reject */
unsigned short rx_echo_rqst ; /* 12: Echo-Request */
unsigned short rx_echo_reply ; /* 14: Echo-Reply */
unsigned short rx_disc_rqst ; /* 16: Discard-Request */
unsigned short tx_conf_rqst ; /* 18: Configure-Request */
unsigned short tx_conf_ack ; /* 1A: Configure-Ack */
unsigned short tx_conf_nak ; /* 1C: Configure-Nak */
unsigned short tx_conf_rej ; /* 1E: Configure-Reject */
unsigned short tx_term_rqst ; /* 20: Terminate-Request */
unsigned short tx_term_ack ; /* 22: Terminate-Ack */
unsigned short tx_code_rej ; /* 24: Code-Reject */
unsigned short tx_proto_rej ; /* 26: Protocol-Reject */
unsigned short tx_echo_rqst ; /* 28: Echo-Request */
unsigned short tx_echo_reply ; /* 2A: Echo-Reply */
unsigned short tx_disc_rqst ; /* 2E: Discard-Request */
unsigned short rx_too_large ; /* 30: packets too large */
unsigned short rx_ack_inval ; /* 32: invalid Conf-Ack */
unsigned short rx_rej_inval ; /* 34: invalid Conf-Reject */
unsigned short rx_rej_badid ; /* 36: Conf-Reject w/bad ID */
} ppp_lcp_stats_t;
/*----------------------------------------------------------------------------
* Loopback Error Statistics (returned by the PPP_READ_LPBK_STATS command).
*/
typedef struct ppp_lpbk_stats
{
unsigned short conf_magic ; /* 00: */
unsigned short loc_echo_rqst ; /* 02: */
unsigned short rem_echo_rqst ; /* 04: */
unsigned short loc_echo_reply ; /* 06: */
unsigned short rem_echo_reply ; /* 08: */
unsigned short loc_disc_rqst ; /* 0A: */
unsigned short rem_disc_rqst ; /* 0C: */
unsigned short echo_tx_collsn ; /* 0E: */
unsigned short echo_rx_collsn ; /* 10: */
} ppp_lpbk_stats_t;
/*----------------------------------------------------------------------------
* Protocol Statistics (returned by the PPP_READ_IPCP_STATS and
* PPP_READ_IPXCP_STATS commands).
*/
typedef struct ppp_prot_stats
{
unsigned short rx_unknown ; /* 00: unknown type */
unsigned short rx_conf_rqst ; /* 02: Configure-Request */
unsigned short rx_conf_ack ; /* 04: Configure-Ack */
unsigned short rx_conf_nak ; /* 06: Configure-Nak */
unsigned short rx_conf_rej ; /* 08: Configure-Reject */
unsigned short rx_term_rqst ; /* 0A: Terminate-Request */
unsigned short rx_term_ack ; /* 0C: Terminate-Ack */
unsigned short rx_code_rej ; /* 0E: Code-Reject */
unsigned short reserved ; /* 10: */
unsigned short tx_conf_rqst ; /* 12: Configure-Request */
unsigned short tx_conf_ack ; /* 14: Configure-Ack */
unsigned short tx_conf_nak ; /* 16: Configure-Nak */
unsigned short tx_conf_rej ; /* 18: Configure-Reject */
unsigned short tx_term_rqst ; /* 1A: Terminate-Request */
unsigned short tx_term_ack ; /* 1C: Terminate-Ack */
unsigned short tx_code_rej ; /* 1E: Code-Reject */
unsigned short rx_too_large ; /* 20: packets too large */
unsigned short rx_ack_inval ; /* 22: invalid Conf-Ack */
unsigned short rx_rej_inval ; /* 24: invalid Conf-Reject */
unsigned short rx_rej_badid ; /* 26: Conf-Reject w/bad ID */
} ppp_prot_stats_t;
/*----------------------------------------------------------------------------
* PAP Statistics (returned by the PPP_READ_PAP_STATS command).
*/
typedef struct ppp_pap_stats
{
unsigned short rx_unknown ; /* 00: unknown type */
unsigned short rx_auth_rqst ; /* 02: Authenticate-Request */
unsigned short rx_auth_ack ; /* 04: Authenticate-Ack */
unsigned short rx_auth_nak ; /* 06: Authenticate-Nak */
unsigned short reserved ; /* 08: */
unsigned short tx_auth_rqst ; /* 0A: Authenticate-Request */
unsigned short tx_auth_ack ; /* 0C: Authenticate-Ack */
unsigned short tx_auth_nak ; /* 0E: Authenticate-Nak */
unsigned short rx_too_large ; /* 10: packets too large */
unsigned short rx_bad_peerid ; /* 12: invalid peer ID */
unsigned short rx_bad_passwd ; /* 14: invalid password */
} ppp_pap_stats_t;
/*----------------------------------------------------------------------------
* CHAP Statistics (returned by the PPP_READ_CHAP_STATS command).
*/
typedef struct ppp_chap_stats
{
unsigned short rx_unknown ; /* 00: unknown type */
unsigned short rx_challenge ; /* 02: Authenticate-Request */
unsigned short rx_response ; /* 04: Authenticate-Ack */
unsigned short rx_success ; /* 06: Authenticate-Nak */
unsigned short rx_failure ; /* 08: Authenticate-Nak */
unsigned short reserved ; /* 0A: */
unsigned short tx_challenge ; /* 0C: Authenticate-Request */
unsigned short tx_response ; /* 0E: Authenticate-Ack */
unsigned short tx_success ; /* 10: Authenticate-Nak */
unsigned short tx_failure ; /* 12: Authenticate-Nak */
unsigned short rx_too_large ; /* 14: packets too large */
unsigned short rx_bad_peerid ; /* 16: invalid peer ID */
unsigned short rx_bad_passwd ; /* 18: invalid password */
unsigned short rx_bad_md5 ; /* 1A: invalid MD5 format */
unsigned short rx_bad_resp ; /* 1C: invalid response */
} ppp_chap_stats_t;
/*----------------------------------------------------------------------------
* Connection Information (returned by the PPP_GET_CONNECTION_INFO command).
*/
typedef struct ppp_conn_info
{
unsigned short remote_mru ; /* 00: */
unsigned char ip_options ; /* 02: */
unsigned char ip_local[4] ; /* 03: */
unsigned char ip_remote[4] ; /* 07: */
unsigned char ipx_options ; /* 0B: */
unsigned char ipx_network[4] ; /* 0C: */
unsigned char ipx_local[6] ; /* 10: */
unsigned char ipx_remote[6] ; /* 16: */
unsigned char ipx_router[48] ; /* 1C: */
unsigned char auth_status ; /* 4C: */
#if defined(__WINDOWS__)/* zero-sized array does not comply to ANSI 'C' standard! */
unsigned char peer_id[1] ; /* 4D: */
#else
unsigned char peer_id[0] ; /* 4D: */
#endif
} ppp_conn_info_t;
typedef struct s_auth {
unsigned short proto; /* authentication protocol to use */
unsigned short flags;
unsigned char name[64]; /* system identification name */
unsigned char secret[16]; /* secret password */
unsigned char challenge[16]; /* random challenge */
unsigned short authenticated; /* 1 when authenticated, 0 when not*/
} s_auth_t;
#pragma pack()
/*=====================================================
* CHDLC Commands and Statistics
*====================================================*/
#define READ_CHDLC_OPERATIONAL_STATS 0x27
#define FLUSH_CHDLC_OPERATIONAL_STATS 0x28
#define READ_GLOBAL_CONFIGURATION 0x03
#define READ_CHDLC_CODE_VERSION 0x20
#define READ_CHDLC_CONFIGURATION 0x23
/* ----------------------------------------------------------------------------
* Constants for the READ_CHDLC_OPERATIONAL_STATS command
* --------------------------------------------------------------------------*/
#pragma pack(1)
/* the CHDLC operational statistics structure */
typedef struct {
/* Data frame transmission statistics */
unsigned int Data_frames_Tx_count ;
/* # of frames transmitted */
unsigned int Data_bytes_Tx_count ;
/* # of bytes transmitted */
unsigned int Data_Tx_throughput ;
/* transmit throughput */
unsigned int no_ms_for_Data_Tx_thruput_comp ;
/* millisecond time used for the Tx throughput computation */
unsigned int Tx_Data_discard_lgth_err_count ;
/* number of Data frames discarded (length error) */
unsigned int reserved_Data_frm_Tx_stat1 ;
/* reserved for later */
unsigned int reserved_Data_frm_Tx_stat2 ;
/* reserved for later */
unsigned int reserved_Data_frm_Tx_stat3 ;
/* reserved for later */
/* Data frame reception statistics */
unsigned int Data_frames_Rx_count ;
/* number of frames received */
unsigned int Data_bytes_Rx_count ;
/* number of bytes received */
unsigned int Data_Rx_throughput ;
/* receive throughput */
unsigned int no_ms_for_Data_Rx_thruput_comp ;
/* millisecond time used for the Rx throughput computation */
unsigned int Rx_Data_discard_short_count ;
/* received Data frames discarded (too short) */
unsigned int Rx_Data_discard_long_count ;
/* received Data frames discarded (too long) */
unsigned int Rx_Data_discard_inactive_count ;
/* received Data frames discarded (link inactive) */
unsigned int reserved_Data_frm_Rx_stat1 ;
/* reserved for later */
/* SLARP frame transmission/reception statistics */
/* number of SLARP Request frames transmitted */
unsigned int CHDLC_SLARP_REQ_Tx_count ;
/* number of SLARP Request frames received */
unsigned int CHDLC_SLARP_REQ_Rx_count ;
/* number of SLARP Reply frames transmitted */
unsigned int CHDLC_SLARP_REPLY_Tx_count ;
/* number of SLARP Reply frames received */
unsigned int CHDLC_SLARP_REPLY_Rx_count ;
/* number of SLARP keepalive frames transmitted */
unsigned int CHDLC_SLARP_KPALV_Tx_count ;
/* number of SLARP keepalive frames received */
unsigned int CHDLC_SLARP_KPALV_Rx_count ;
/* reserved for later */
unsigned int reserved_SLARP_stat1 ;
/* reserved for later */
unsigned int reserved_SLARP_stat2 ;
/* CDP frame transmission/reception statistics */
unsigned int CHDLC_CDP_Tx_count ;
/* number of CDP frames transmitted */
unsigned int CHDLC_CDP_Rx_count ;
/* number of CDP frames received */
unsigned int reserved_CDP_stat1 ;
/* reserved for later */
unsigned int reserved_CDP_stat2 ;
/* reserved for later */
unsigned int reserved_CDP_stat3 ;
/* reserved for later */
unsigned int reserved_CDP_stat4 ;
/* reserved for later */
unsigned int reserved_CDP_stat5 ;
/* reserved for later */
unsigned int reserved_CDP_stat6 ;
/* reserved for later */
/* Incomming frames with a format error statistics */
unsigned short Rx_frm_incomp_CHDLC_hdr_count ;
/* frames received of with incomplete Cisco HDLC header */
unsigned short Rx_frms_too_long_count ;
/* frames received of excessive length count */
unsigned short Rx_invalid_CHDLC_addr_count ;
/* frames received with an invalid CHDLC address count */
unsigned short Rx_invalid_CHDLC_ctrl_count ;
/* frames received with an invalid CHDLC control field count */
unsigned short Rx_invalid_CHDLC_type_count ;
/* frames received of an invalid CHDLC frame type count */
unsigned short Rx_SLARP_invalid_code_count ;
/* SLARP frame received with an invalid packet code */
unsigned short Rx_SLARP_Reply_bad_IP_addr ;
/* SLARP Reply received - bad IP address */
unsigned short Rx_SLARP_Reply_bad_netmask ;
/* SLARP Reply received - bad netmask */
unsigned int reserved_frm_format_err1 ;
/* reserved for later */
unsigned int reserved_frm_format_err2 ;
/* reserved for later */
unsigned int reserved_frm_format_err3 ;
/* reserved for later */
unsigned int reserved_frm_format_err4 ;
/* reserved for later */
/* CHDLC timeout/retry statistics */
unsigned short SLARP_Rx_keepalive_TO_count ;
/* timeout count for incomming SLARP frames */
unsigned short SLARP_Request_TO_count ;
/* timeout count for SLARP Request frames */
unsigned int To_retry_reserved_stat1 ;
/* reserved for later */
unsigned int To_retry_reserved_stat2 ;
/* reserved for later */
unsigned int To_retry_reserved_stat3 ;
/* reserved for later */
/* CHDLC link active/inactive and loopback statistics */
unsigned short link_active_count ;
/* number of times that the link went active */
unsigned short link_inactive_modem_count ;
/* number of times that the link went inactive (modem failure) */
unsigned short link_inactive_keepalive_count ;
/* number of times that the link went inactive (keepalive failure) */
unsigned short link_looped_count ;
/* link looped count */
unsigned int link_status_reserved_stat1 ;
/* reserved for later use */
unsigned int link_status_reserved_stat2 ;
/* reserved for later use */
/* miscellaneous statistics */
unsigned int reserved_misc_stat1 ;
/* reserved for later */
unsigned int reserved_misc_stat2 ;
/* reserved for later */
unsigned int reserved_misc_stat3 ;
/* reserved for later */
unsigned int reserved_misc_stat4 ;
/* reserved for later */
} CHDLC_OPERATIONAL_STATS_STRUCT, chdlc_stat_t;
#pragma pack()
#endif