📄 wanpipe.h
字号:
#define WUM_SIGNATURE_L 0x50495046#define WUM_SIGNATURE_H 0x444E3845#define WUM_KILL 0x50#define WUM_EXEC 0x51#define WANPIPE 0x00#define API 0x01#define BRIDGE 0x02#define BRIDGE_NODE 0x03#ifdef __KERNEL__/****** Kernel Interface ****************************************************/#include <linux/sdladrv.h> /* SDLA support module API definitions */#include <linux/sdlasfm.h> /* SDLA firmware module definitions */#include <linux/workqueue.h>#include <linux/serial.h>#include <linux/serialP.h>#include <linux/serial_reg.h>#include <asm/serial.h>#include <linux/tty.h>#include <linux/tty_driver.h>#include <linux/tty_flip.h>/****** Data Structures *****************************************************//* Adapter Data Space. * This structure is needed because we handle multiple cards, otherwise * static data would do it. */typedef struct sdla{ char devname[WAN_DRVNAME_SZ+1]; /* card name */ sdlahw_t hw; /* hardware configuration */ struct wan_device wandev; /* WAN device data space */ unsigned open_cnt; /* number of open interfaces */ unsigned long state_tick; /* link state timestamp */ unsigned intr_mode; /* Type of Interrupt Mode */ char in_isr; /* interrupt-in-service flag */ char buff_int_mode_unbusy; /* flag for carrying out dev_tint */ char dlci_int_mode_unbusy; /* flag for carrying out dev_tint */ long configured; /* flag for previous configurations */ unsigned short irq_dis_if_send_count; /* Disabling irqs in if_send*/ unsigned short irq_dis_poll_count; /* Disabling irqs in poll routine*/ unsigned short force_enable_irq; char TracingEnabled; /* flag for enabling trace */ global_stats_t statistics; /* global statistics */ void* mbox; /* -> mailbox */ void* rxmb; /* -> receive mailbox */ void* flags; /* -> adapter status flags */ void (*isr)(struct sdla* card); /* interrupt service routine */ void (*poll)(struct sdla* card); /* polling routine */ int (*exec)(struct sdla* card, void* u_cmd, void* u_data); /* Used by the listen() system call */ /* Wanpipe Socket Interface */ int (*func) (struct sk_buff *, struct sock *); struct sock *sk; /* Shutdown function */ void (*disable_comm) (struct sdla *card); /* Secondary Port Device: Piggibacking */ struct sdla *next; /* TTY driver variables */ unsigned char tty_opt; struct tty_struct *tty; unsigned int tty_minor; unsigned int tty_open; unsigned char *tty_buf; unsigned char *tty_rx; struct work_struct tty_work; union { struct { /****** X.25 specific data **********/ u32 lo_pvc; u32 hi_pvc; u32 lo_svc; u32 hi_svc; struct net_device *svc_to_dev_map[MAX_X25_LCN]; struct net_device *pvc_to_dev_map[MAX_X25_LCN]; struct net_device *tx_dev; struct net_device *cmd_dev; u32 no_dev; volatile u8 *hdlc_buf_status; u32 tx_interrupts_pending; u16 timer_int_enabled; struct net_device *poll_device; atomic_t command_busy; u16 udp_pkt_lgth; u32 udp_type; u8 udp_pkt_src; u32 udp_lcn; struct net_device *udp_dev; s8 udp_pkt_data[MAX_LGTH_UDP_MGNT_PKT]; u8 LAPB_hdlc; /* Option to turn off X25 and run only LAPB */ u8 logging; /* Option to log call messages */ u8 oob_on_modem; /* Option to send modem status to the api */ u16 num_of_ch; /* Number of channels configured by the user */ struct work_struct x25_poll_work; struct timer_list x25_timer; } x; struct { /****** frame relay specific data ***/ void* rxmb_base; /* -> first Rx buffer */ void* rxmb_last; /* -> last Rx buffer */ unsigned rx_base; /* S508 receive buffer base */ unsigned rx_top; /* S508 receive buffer end */ unsigned short node_dlci[100]; unsigned short dlci_num; struct net_device *dlci_to_dev_map[991 + 1]; unsigned tx_interrupts_pending; unsigned short timer_int_enabled; unsigned short udp_pkt_lgth; int udp_type; char udp_pkt_src; unsigned udp_dlci; char udp_pkt_data[MAX_LGTH_UDP_MGNT_PKT]; void* trc_el_base; /* first trace element */ void* trc_el_last; /* last trace element */ void *curr_trc_el; /* current trace element */ unsigned short trc_bfr_space; /* trace buffer space */ unsigned char update_comms_stats; struct net_device *arp_dev; spinlock_t if_send_lock; } f; struct /****** PPP-specific data ***********/ { char if_name[WAN_IFNAME_SZ+1]; /* interface name */ void* txbuf; /* -> current Tx buffer */ void* txbuf_base; /* -> first Tx buffer */ void* txbuf_last; /* -> last Tx buffer */ void* rxbuf_base; /* -> first Rx buffer */ void* rxbuf_last; /* -> last Rx buffer */ unsigned rx_base; /* S508 receive buffer base */ unsigned rx_top; /* S508 receive buffer end */ char ip_mode; /* STATIC/HOST/PEER IP Mode */ char authenticator; /* Authenticator for PAP/CHAP */ unsigned char comm_enabled; /* Is comm enabled or not */ unsigned char peer_route; /* Process Peer Route */ unsigned long *txbuf_next; /* Next Tx buffer to use */ unsigned long *rxbuf_next; /* Next Rx buffer to use */ } p; struct /* Cisco HDLC-specific data */ { char if_name[WAN_IFNAME_SZ+1]; /* interface name */ unsigned char comm_port;/* Communication Port O or 1 */ unsigned char usedby; /* Used by WANPIPE or API */ void* rxmb; /* Receive mail box */ void* flags; /* flags */ void* tx_status; /* Tx status element */ void* rx_status; /* Rx status element */ void* txbuf; /* -> current Tx buffer */ void* txbuf_base; /* -> first Tx buffer */ void* txbuf_last; /* -> last Tx buffer */ void* rxbuf_base; /* -> first Rx buffer */ void* rxbuf_last; /* -> last Rx buffer */ unsigned rx_base; /* S508 receive buffer base */ unsigned rx_top; /* S508 receive buffer end */ unsigned char receive_only; /* high speed receivers */ unsigned short protocol_options; unsigned short kpalv_tx; /* Tx kpalv timer */ unsigned short kpalv_rx; /* Rx kpalv timer */ unsigned short kpalv_err; /* Error tolerance */ unsigned short slarp_timer; /* SLARP req timer */ unsigned state; /* state of the link */ unsigned char api_status; unsigned char update_call_count; unsigned short api_options; /* for async config */ unsigned char async_mode; unsigned short tx_bits_per_char; unsigned short rx_bits_per_char; unsigned short stop_bits; unsigned short parity; unsigned short break_timer; unsigned short inter_char_timer; unsigned short rx_complete_length; unsigned short xon_char; unsigned short xoff_char; unsigned char comm_enabled; /* Is comm enabled or not */ unsigned char backup; } c; struct { void* tx_status; /* Tx status element */ void* rx_status; /* Rx status element */ void* trace_status; /* Trace status element */ void* txbuf; /* -> current Tx buffer */ void* txbuf_base; /* -> first Tx buffer */ void* txbuf_last; /* -> last Tx buffer */ void* rxbuf_base; /* -> first Rx buffer */ void* rxbuf_last; /* -> last Rx buffer */ void* tracebuf; /* -> current Trace buffer */ void* tracebuf_base; /* -> current Trace buffer */ void* tracebuf_last; /* -> current Trace buffer */ unsigned rx_base; /* receive buffer base */ unsigned rx_end; /* receive buffer end */ unsigned trace_base; /* trace buffer base */ unsigned trace_end; /* trace buffer end */ } h; } u;} sdla_t;/****** Public Functions ****************************************************/void wanpipe_open (sdla_t* card); /* wpmain.c */void wanpipe_close (sdla_t* card); /* wpmain.c */void wanpipe_set_state (sdla_t* card, int state); /* wpmain.c */int wpx_init (sdla_t* card, wandev_conf_t* conf); /* wpx.c */int wpf_init (sdla_t* card, wandev_conf_t* conf); /* wpf.c */int wpp_init (sdla_t* card, wandev_conf_t* conf); /* wpp.c */int wpc_init (sdla_t* card, wandev_conf_t* conf); /* Cisco HDLC */int bsc_init (sdla_t* card, wandev_conf_t* conf); /* BSC streaming */int hdlc_init(sdla_t* card, wandev_conf_t* conf); /* HDLC support */int wpft1_init (sdla_t* card, wandev_conf_t* conf); /* FT1 Config support */int wsppp_init (sdla_t* card, wandev_conf_t* conf); /* Sync PPP on top of RAW CHDLC */extern sdla_t * wanpipe_find_card(char *);extern sdla_t * wanpipe_find_card_num (int);extern void wanpipe_queue_work (struct work_struct *);extern void wanpipe_mark_bh (void);extern void wakeup_sk_bh(struct net_device *dev);extern int change_dev_flags(struct net_device *dev, unsigned flags);extern unsigned long get_ip_address(struct net_device *dev, int option);extern void add_gateway(sdla_t *card, struct net_device *dev);#endif /* __KERNEL__ */#endif /* _WANPIPE_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -