📄 wanpipe.h
字号:
typedef struct pipe_mgmt_stat{ unsigned long UDP_PIPE_mgmt_kmalloc_err; unsigned long UDP_PIPE_mgmt_direction_err; unsigned long UDP_PIPE_mgmt_adptr_type_err; unsigned long UDP_PIPE_mgmt_adptr_cmnd_OK; unsigned long UDP_PIPE_mgmt_adptr_cmnd_timeout; unsigned long UDP_PIPE_mgmt_adptr_send_passed; unsigned long UDP_PIPE_mgmt_adptr_send_failed; unsigned long UDP_PIPE_mgmt_not_passed_to_stack; unsigned long UDP_PIPE_mgmt_passed_to_stack; unsigned long UDP_PIPE_mgmt_no_socket; unsigned long UDP_PIPE_mgmt_passed_to_adptr;} pipe_mgmt_stat_t;typedef struct { struct sk_buff *skb;} bh_data_t, cmd_data_t;#define MAX_LGTH_UDP_MGNT_PKT 2000 /* This is used for interrupt testing */#define INTR_TEST_MODE 0x02#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/tqueue.h>#ifdef LINUX_2_4 #include <linux/serial.h> #include <linux/serialP.h> #include <linux/serial_reg.h> #include <asm/serial.h>#endif#include <linux/tty.h>#include <linux/tty_driver.h>#include <linux/tty_flip.h>#define is_digit(ch) (((ch)>=(unsigned)'0'&&(ch)<=(unsigned)'9')?1:0)#define is_alpha(ch) ((((ch)>=(unsigned)'a'&&(ch)<=(unsigned)'z')||\ ((ch)>=(unsigned)'A'&&(ch)<=(unsigned)'Z'))?1:0)#define is_hex_digit(ch) ((((ch)>=(unsigned)'0'&&(ch)<=(unsigned)'9')||\ ((ch)>=(unsigned)'a'&&(ch)<=(unsigned)'f')||\ ((ch)>=(unsigned)'A'&&(ch)<=(unsigned)'F'))?1:0)/****** 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 */ wan_device_t 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 */ char 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 tq_struct tty_task_queue; union { struct { /****** X.25 specific data **********/ u32 lo_pvc; u32 hi_pvc; u32 lo_svc; u32 hi_svc; netdevice_t *svc_to_dev_map[MAX_X25_LCN]; netdevice_t *pvc_to_dev_map[MAX_X25_LCN]; netdevice_t *tx_dev; netdevice_t *cmd_dev; u32 no_dev; volatile u8 *hdlc_buf_status; u32 tx_interrupts_pending; u16 timer_int_enabled; netdevice_t *poll_device; atomic_t command_busy; u16 udp_pkt_lgth; u32 udp_type; u8 udp_pkt_src; u32 udp_lcn; netdevice_t * 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 tq_struct x25_poll_task; 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; netdevice_t *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; netdevice_t *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_tq (struct tq_struct *);extern void wanpipe_mark_bh (void);extern void wakeup_sk_bh (netdevice_t *);extern int change_dev_flags (netdevice_t *, unsigned); extern unsigned long get_ip_address (netdevice_t *dev, int option);extern void add_gateway(sdla_t *, netdevice_t *);#endif /* __KERNEL__ */#endif /* _WANPIPE_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -