📄 wanrouter.h
字号:
/* data encoding options */#define WANOPT_NRZ 0#define WANOPT_NRZI 1#define WANOPT_FM0 2#define WANOPT_FM1 3/* link type options */#define WANOPT_POINTTOPOINT 0 /* RTS always active */#define WANOPT_MULTIDROP 1 /* RTS is active when transmitting *//* clocking options */#define WANOPT_EXTERNAL 0#define WANOPT_INTERNAL 1/* station options */#define WANOPT_DTE 0#define WANOPT_DCE 1#define WANOPT_CPE 0#define WANOPT_NODE 1#define WANOPT_SECONDARY 0#define WANOPT_PRIMARY 1/* connection options */#define WANOPT_PERMANENT 0 /* DTR always active */#define WANOPT_SWITCHED 1 /* use DTR to setup link (dial-up) */#define WANOPT_ONDEMAND 2 /* activate DTR only before sending *//* frame relay in-channel signalling */#define WANOPT_FR_ANSI 1 /* ANSI T1.617 Annex D */#define WANOPT_FR_Q933 2 /* ITU Q.933A */#define WANOPT_FR_LMI 3 /* LMI *//* PPP IP Mode Options */#define WANOPT_PPP_STATIC 0#define WANOPT_PPP_HOST 1#define WANOPT_PPP_PEER 2/* ASY Mode Options */#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/* CHDLC Protocol Options *//* DF Commmented out for now.#define WANOPT_CHDLC_NO_DCD IGNORE_DCD_FOR_LINK_STAT#define WANOPT_CHDLC_NO_CTS IGNORE_CTS_FOR_LINK_STAT#define WANOPT_CHDLC_NO_KEEPALIVE IGNORE_KPALV_FOR_LINK_STAT*//* Port options */#define WANOPT_PRI 0#define WANOPT_SEC 1/* read mode */#define WANOPT_INTR 0#define WANOPT_POLL 1#define WANOPT_TTY_SYNC 0#define WANOPT_TTY_ASYNC 1/*---------------------------------------------------------------------------- * WAN Link Status Info (for ROUTER_STAT IOCTL). */typedef struct wandev_stat{ unsigned state; /* link state */ unsigned ndev; /* number of configured interfaces */ /* link/interface configuration */ unsigned connection; /* permanent/switched/on-demand */ unsigned media_type; /* Frame relay/PPP/X.25/SDLC, etc. */ unsigned mtu; /* max. transmit unit for this device */ /* physical level statistics */ unsigned modem_status; /* modem status */ unsigned rx_frames; /* received frames count */ unsigned rx_overruns; /* receiver overrun error count */ unsigned rx_crc_err; /* receive CRC error count */ unsigned rx_aborts; /* received aborted frames count */ unsigned rx_bad_length; /* unexpetedly long/short frames count */ unsigned rx_dropped; /* frames discarded at device level */ unsigned tx_frames; /* transmitted frames count */ unsigned tx_underruns; /* aborted transmissions (underruns) count */ unsigned tx_timeouts; /* transmission timeouts */ unsigned tx_rejects; /* other transmit errors */ /* media level statistics */ unsigned rx_bad_format; /* frames with invalid format */ unsigned rx_bad_addr; /* frames with invalid media address */ unsigned tx_retries; /* frames re-transmitted */ unsigned reserved[16]; /* reserved for future use */} wandev_stat_t;/* 'state' defines */enum wan_states{ WAN_UNCONFIGURED, /* link/channel is not configured */ WAN_DISCONNECTED, /* link/channel is disconnected */ WAN_CONNECTING, /* connection is in progress */ WAN_CONNECTED, /* link/channel is operational */ WAN_LIMIT, /* for verification only */ WAN_DUALPORT, /* for Dual Port cards */ WAN_DISCONNECTING, WAN_FT1_READY /* FT1 Configurator Ready */};enum { WAN_LOCAL_IP, WAN_POINTOPOINT_IP, WAN_NETMASK_IP, WAN_BROADCAST_IP};/* 'modem_status' masks */#define WAN_MODEM_CTS 0x0001 /* CTS line active */#define WAN_MODEM_DCD 0x0002 /* DCD line active */#define WAN_MODEM_DTR 0x0010 /* DTR line active */#define WAN_MODEM_RTS 0x0020 /* RTS line active *//*---------------------------------------------------------------------------- * WAN interface (logical channel) configuration (for ROUTER_IFNEW IOCTL). */typedef struct wanif_conf{ unsigned magic; /* magic number */ unsigned config_id; /* configuration identifier */ char name[WAN_IFNAME_SZ+1]; /* interface name, ASCIIZ */ char addr[WAN_ADDRESS_SZ+1]; /* media address, ASCIIZ */ char usedby[USED_BY_FIELD]; /* used by API or WANPIPE */ unsigned idle_timeout; /* sec, before disconnecting */ unsigned hold_timeout; /* sec, before re-connecting */ unsigned cir; /* Committed Information Rate fwd,bwd*/ unsigned bc; /* Committed Burst Size fwd, bwd */ unsigned be; /* Excess Burst Size fwd, bwd */ unsigned char enable_IPX; /* Enable or Disable IPX */ unsigned char inarp; /* Send Inverse ARP requests Y/N */ unsigned inarp_interval; /* sec, between InARP requests */ unsigned long network_number; /* Network Number for IPX */ char mc; /* Multicast on or off */ char local_addr[WAN_ADDRESS_SZ+1];/* local media address, ASCIIZ */ unsigned char port; /* board port */ unsigned char protocol; /* prococol used in this channel (TCPOX25 or X25) */ char pap; /* PAP enabled or disabled */ char chap; /* CHAP enabled or disabled */ unsigned char userid[511]; /* List of User Id */ unsigned char passwd[511]; /* List of passwords */ unsigned char sysname[31]; /* Name of the system */ unsigned char ignore_dcd; /* Protocol options: */ unsigned char ignore_cts; /* Ignore these to determine */ unsigned char ignore_keepalive; /* link status (Yes or No) */ unsigned char hdlc_streaming; /* Hdlc streaming mode (Y/N) */ unsigned keepalive_tx_tmr; /* transmit keepalive timer */ unsigned keepalive_rx_tmr; /* receive keepalive timer */ unsigned keepalive_err_margin; /* keepalive_error_tolerance */ unsigned slarp_timer; /* SLARP request timer */ unsigned char ttl; /* Time To Live for UDP security */ char interface; /* RS-232/V.35, etc. */ char clocking; /* external/internal */ unsigned bps; /* data transfer rate */ unsigned mtu; /* maximum transmit unit size */ unsigned char if_down; /* brind down interface when disconnected */ unsigned char gateway; /* Is this interface a gateway */ unsigned char true_if_encoding; /* Set the dev->type to true board protocol */ unsigned char asy_data_trans; /* async API options */ unsigned char rts_hs_for_receive; /* async Protocol options */ 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; /* no transmit buffering (Y/N) */} wanif_conf_t;#ifdef __KERNEL__/****** Kernel Interface ****************************************************/#include <linux/fs.h> /* support for device drivers */#include <linux/proc_fs.h> /* proc filesystem pragmatics */#include <linux/netdevice.h> /* support for network drivers *//*---------------------------------------------------------------------------- * WAN device data space. */typedef struct wan_device{ unsigned magic; /* magic number */ char* name; /* -> WAN device name (ASCIIZ) */ void* private; /* -> driver private data */ unsigned config_id; /* Configuration ID */ /****** hardware configuration ******/ unsigned ioport; /* adapter I/O port base #1 */ char S514_cpu_no[1]; /* PCI CPU Number */ unsigned char S514_slot_no; /* PCI Slot Number */ unsigned long maddr; /* dual-port memory address */ unsigned msize; /* dual-port memory size */ int irq; /* interrupt request level */ int dma; /* DMA request level */ unsigned bps; /* data transfer rate */ unsigned mtu; /* max physical transmit unit size */ unsigned udp_port; /* UDP port for management */ unsigned char ttl; /* Time To Live for UDP security */ unsigned enable_tx_int; /* Transmit Interrupt enabled or not */ char interface; /* RS-232/V.35, etc. */ char clocking; /* external/internal */ char line_coding; /* NRZ/NRZI/FM0/FM1, etc. */ char station; /* DTE/DCE, primary/secondary, etc. */ char connection; /* permanent/switched/on-demand */ char signalling; /* Signalling RS232 or V35 */ char read_mode; /* read mode: Polling or interrupt */ char new_if_cnt; /* Number of interfaces per wanpipe */ char del_if_cnt; /* Number of times del_if() gets called */ unsigned char piggyback; /* Piggibacking a port */ unsigned hw_opt[4]; /* other hardware options */ /****** status and statistics *******/ char state; /* device state */ char api_status; /* device api status */#if defined(LINUX_2_1) || defined(LINUX_2_4) struct net_device_stats stats; /* interface statistics */#else struct enet_statistics stats; /* interface statistics */#endif unsigned reserved[16]; /* reserved for future use */ unsigned long critical; /* critical section flag */ spinlock_t lock; /* Support for SMP Locking */ /****** device management methods ***/ int (*setup) (struct wan_device *wandev, wandev_conf_t *conf); int (*shutdown) (struct wan_device *wandev); int (*update) (struct wan_device *wandev); int (*ioctl) (struct wan_device *wandev, unsigned cmd, unsigned long arg); int (*new_if) (struct wan_device *wandev, netdevice_t *dev, wanif_conf_t *conf); int (*del_if) (struct wan_device *wandev, netdevice_t *dev); /****** maintained by the router ****/ struct wan_device* next; /* -> next device */ netdevice_t* dev; /* list of network interfaces */ unsigned ndev; /* number of interfaces */#ifdef LINUX_2_4 struct proc_dir_entry *dent; /* proc filesystem entry */#else struct proc_dir_entry dent; /* proc filesystem entry */#endif} wan_device_t;/* Public functions available for device drivers */extern int register_wan_device(wan_device_t *wandev);extern int unregister_wan_device(char *name);unsigned short wanrouter_type_trans(struct sk_buff *skb, netdevice_t *dev);int wanrouter_encapsulate(struct sk_buff *skb, netdevice_t *dev,unsigned short type);/* Proc interface functions. These must not be called by the drivers! */extern int wanrouter_proc_init(void);extern void wanrouter_proc_cleanup(void);extern int wanrouter_proc_add(wan_device_t *wandev);extern int wanrouter_proc_delete(wan_device_t *wandev);extern int wanrouter_ioctl( struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg);extern void lock_adapter_irq(spinlock_t *lock, unsigned long *smp_flags);extern void unlock_adapter_irq(spinlock_t *lock, unsigned long *smp_flags);/* Public Data */extern wan_device_t *router_devlist; /* list of registered devices */#endif /* __KERNEL__ */#endif /* _ROUTER_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -