/****************************************************************************
 ****************************************************************************
 ***
 ***   This header was automatically generated from a Linux kernel header
 ***   of the same name, to make information necessary for userspace to
 ***   call into the kernel available to libc.  It contains only constants,
 ***   structures, and macros generated from the original header, and thus,
 ***   contains no copyrightable information.
 ***
 ****************************************************************************
 ****************************************************************************/
#ifndef _ROUTER_H
#define _ROUTER_H

#define ROUTER_NAME "wanrouter"
#define ROUTER_VERSION 1
#define ROUTER_RELEASE 1
#define ROUTER_IOCTL 'W'
#define ROUTER_MAGIC 0x524D4157L

enum router_ioctls
{
 ROUTER_SETUP = ROUTER_IOCTL<<8,
 ROUTER_DOWN,
 ROUTER_STAT,
 ROUTER_IFNEW,
 ROUTER_IFDEL,
 ROUTER_IFSTAT,
 ROUTER_USER = (ROUTER_IOCTL<<8)+16,
 ROUTER_USER_MAX = (ROUTER_IOCTL<<8)+31
};

#define PROC_DATA_PORT_0 0x8000
#define PROC_DATA_PORT_1 0x8001

#define NLPID_IP 0xCC
#define NLPID_SNAP 0x80
#define NLPID_CLNP 0x81
#define NLPID_ESIS 0x82
#define NLPID_ISIS 0x83
#define NLPID_Q933 0x08

#define WAN_IFNAME_SZ 15
#define WAN_DRVNAME_SZ 15
#define WAN_ADDRESS_SZ 31
#define USED_BY_FIELD 8

#define UDP_PTPIPE_TYPE 0x01
#define UDP_FPIPE_TYPE 0x02
#define UDP_CPIPE_TYPE 0x03
#define UDP_DRVSTATS_TYPE 0x04
#define UDP_INVALID_TYPE 0x05

#define CMD_OK 0
#define CMD_TIMEOUT 0xFF

#define UDP_PKT_FRM_STACK 0x00
#define UDP_PKT_FRM_NETWORK 0x01

#define MAX_INTR_TEST_COUNTER 100

#define CRITICAL_IN_ISR 0xA1
#define CRITICAL_INTR_HANDLED 0xB1

typedef struct wan_x25_conf
{
 unsigned lo_pvc;
 unsigned hi_pvc;
 unsigned lo_svc;
 unsigned hi_svc;
 unsigned hdlc_window;
 unsigned pkt_window;
 unsigned t1;
 unsigned t2;
 unsigned t4;
 unsigned n2;
 unsigned t10_t20;
 unsigned t11_t21;
 unsigned t12_t22;
 unsigned t13_t23;
 unsigned t16_t26;
 unsigned t28;
 unsigned r10_r20;
 unsigned r12_r22;
 unsigned r13_r23;
 unsigned ccitt_compat;
 unsigned x25_conf_opt;
 unsigned char LAPB_hdlc_only;
 unsigned char logging;
 unsigned char oob_on_modem;
} wan_x25_conf_t;

typedef struct wan_fr_conf
{
 unsigned signalling;
 unsigned t391;
 unsigned t392;
 unsigned n391;
 unsigned n392;
 unsigned n393;
 unsigned dlci_num;
 unsigned dlci[100];
} wan_fr_conf_t;

typedef struct wan_ppp_conf
{
 unsigned restart_tmr;
 unsigned auth_rsrt_tmr;
 unsigned auth_wait_tmr;
 unsigned mdm_fail_tmr;
 unsigned dtr_drop_tmr;
 unsigned connect_tmout;
 unsigned conf_retry;
 unsigned term_retry;
 unsigned fail_retry;
 unsigned auth_retry;
 unsigned auth_options;
 unsigned ip_options;
 char authenticator;
 char ip_mode;
} wan_ppp_conf_t;

typedef struct wan_chdlc_conf
{
 unsigned char ignore_dcd;
 unsigned char ignore_cts;
 unsigned char ignore_keepalive;
 unsigned char hdlc_streaming;
 unsigned char receive_only;
 unsigned keepalive_tx_tmr;
 unsigned keepalive_rx_tmr;
 unsigned keepalive_err_margin;
 unsigned slarp_timer;
} wan_chdlc_conf_t;

typedef struct wandev_conf
{
 unsigned magic;
 unsigned config_id;

 unsigned ioport;
 unsigned long maddr;
 unsigned msize;
 int irq;
 int dma;
 char S514_CPU_no[1];
 unsigned PCI_slot_no;
 char auto_pci_cfg;
 char comm_port;
 unsigned bps;
 unsigned mtu;
 unsigned udp_port;
 unsigned char ttl;
 unsigned char ft1;
 char interface;
 char clocking;
 char line_coding;
 char station;
 char connection;
 char read_mode;
 char receive_only;
 char tty;
 unsigned tty_major;
 unsigned tty_minor;
 unsigned tty_mode;
 char backup;
 unsigned hw_opt[4];
 unsigned reserved[4];

 unsigned data_size;
 void* data;
 union
 {
 wan_x25_conf_t x25;
 wan_ppp_conf_t ppp;
 wan_fr_conf_t fr;
 wan_chdlc_conf_t chdlc;
 } u;
} wandev_conf_t;

#define WANCONFIG_X25 101
#define WANCONFIG_FR 102
#define WANCONFIG_PPP 103
#define WANCONFIG_CHDLC 104
#define WANCONFIG_BSC 105
#define WANCONFIG_HDLC 106
#define WANCONFIG_MPPP 107

#define WANOPT_OFF 0
#define WANOPT_ON 1
#define WANOPT_NO 0
#define WANOPT_YES 1

#define WANOPT_RS232 0
#define WANOPT_V35 1

#define WANOPT_NRZ 0
#define WANOPT_NRZI 1
#define WANOPT_FM0 2
#define WANOPT_FM1 3

#define WANOPT_POINTTOPOINT 0
#define WANOPT_MULTIDROP 1

#define WANOPT_EXTERNAL 0
#define WANOPT_INTERNAL 1

#define WANOPT_DTE 0
#define WANOPT_DCE 1
#define WANOPT_CPE 0
#define WANOPT_NODE 1
#define WANOPT_SECONDARY 0
#define WANOPT_PRIMARY 1

#define WANOPT_PERMANENT 0
#define WANOPT_SWITCHED 1
#define WANOPT_ONDEMAND 2

#define WANOPT_FR_ANSI 1
#define WANOPT_FR_Q933 2
#define WANOPT_FR_LMI 3

#define WANOPT_PPP_STATIC 0
#define WANOPT_PPP_HOST 1
#define WANOPT_PPP_PEER 2

#define WANOPT_ONE 1
#define WANOPT_TWO 2
#define WANOPT_ONE_AND_HALF 3

#define WANOPT_NONE 0
#define WANOPT_ODD 1
#define WANOPT_EVEN 2

#define WANOPT_PRI 0
#define WANOPT_SEC 1

#define WANOPT_INTR 0
#define WANOPT_POLL 1

#define WANOPT_TTY_SYNC 0
#define WANOPT_TTY_ASYNC 1

typedef struct wandev_stat
{
 unsigned state;
 unsigned ndev;

 unsigned connection;
 unsigned media_type;
 unsigned mtu;

 unsigned modem_status;
 unsigned rx_frames;
 unsigned rx_overruns;
 unsigned rx_crc_err;
 unsigned rx_aborts;
 unsigned rx_bad_length;
 unsigned rx_dropped;
 unsigned tx_frames;
 unsigned tx_underruns;
 unsigned tx_timeouts;
 unsigned tx_rejects;

 unsigned rx_bad_format;
 unsigned rx_bad_addr;
 unsigned tx_retries;
 unsigned reserved[16];
} wandev_stat_t;

enum wan_states
{
 WAN_UNCONFIGURED,
 WAN_DISCONNECTED,
 WAN_CONNECTING,
 WAN_CONNECTED,
 WAN_LIMIT,
 WAN_DUALPORT,
 WAN_DISCONNECTING,
 WAN_FT1_READY
};

enum {
 WAN_LOCAL_IP,
 WAN_POINTOPOINT_IP,
 WAN_NETMASK_IP,
 WAN_BROADCAST_IP
};

#define WAN_MODEM_CTS 0x0001
#define WAN_MODEM_DCD 0x0002
#define WAN_MODEM_DTR 0x0010
#define WAN_MODEM_RTS 0x0020

typedef struct wanif_conf
{
 unsigned magic;
 unsigned config_id;
 char name[WAN_IFNAME_SZ+1];
 char addr[WAN_ADDRESS_SZ+1];
 char usedby[USED_BY_FIELD];
 unsigned idle_timeout;
 unsigned hold_timeout;
 unsigned cir;
 unsigned bc;
 unsigned be;
 unsigned char enable_IPX;
 unsigned char inarp;
 unsigned inarp_interval;
 unsigned long network_number;
 char mc;
 char local_addr[WAN_ADDRESS_SZ+1];
 unsigned char port;
 unsigned char protocol;
 char pap;
 char chap;
 unsigned char userid[511];
 unsigned char passwd[511];
 unsigned char sysname[31];
 unsigned char ignore_dcd;
 unsigned char ignore_cts;
 unsigned char ignore_keepalive;
 unsigned char hdlc_streaming;
 unsigned keepalive_tx_tmr;
 unsigned keepalive_rx_tmr;
 unsigned keepalive_err_margin;
 unsigned slarp_timer;
 unsigned char ttl;
 char interface;
 char clocking;
 unsigned bps;
 unsigned mtu;
 unsigned char if_down;
 unsigned char gateway;
 unsigned char true_if_encoding;

 unsigned char asy_data_trans;
 unsigned char rts_hs_for_receive;
 unsigned char xon_xoff_hs_for_receive;
 unsigned char xon_xoff_hs_for_transmit;
 unsigned char dcd_hs_for_transmit;
 unsigned char cts_hs_for_transmit;
 unsigned char async_mode;
 unsigned tx_bits_per_char;
 unsigned rx_bits_per_char;
 unsigned stop_bits;
 unsigned char parity;
 unsigned break_timer;
 unsigned inter_char_timer;
 unsigned rx_complete_length;
 unsigned xon_char;
 unsigned xoff_char;
 unsigned char receive_only;
} wanif_conf_t;

#endif
