📄 irnet_irda.h
字号:
/* * IrNET protocol module : Synchronous PPP over an IrDA socket. * * Jean II - HPL `00 - <jt@hpl.hp.com> * * This file contains all definitions and declarations necessary for the * IRDA part of the IrNET module (dealing with IrTTP, IrIAS and co). * This file is a private header, so other modules don't want to know * what's in there... */#ifndef IRNET_IRDA_H#define IRNET_IRDA_H/***************************** INCLUDES *****************************//* Please add other headers in irnet.h */#include "irnet.h" /* Module global include *//************************ CONSTANTS & MACROS ************************//* * Name of the service (socket name) used by IrNET *//* IAS object name (or part of it) */#define IRNET_SERVICE_NAME "IrNetv1"/* IAS attribute */#define IRNET_IAS_VALUE "IrDA:TinyTP:LsapSel"/* LMP notify name for client (only for /proc/net/irda/irlmp) */#define IRNET_NOTIFY_NAME "IrNET socket"/* LMP notify name for server (only for /proc/net/irda/irlmp) */#define IRNET_NOTIFY_NAME_SERV "IrNET server"/****************************** TYPES ******************************//* * This is the main structure where we store all the data pertaining to * the IrNET server (listen for connection requests) and the root * of the IrNET socket list */typedef struct irnet_root{ irnet_socket s; /* To pretend we are a client... */ /* Generic stuff */ int magic; /* Paranoia */ int running; /* Are we operational ? */ /* Link list of all IrNET instances opened */ hashbin_t * list; spinlock_t spinlock; /* Serialize access to the list */ /* Note : the way hashbin has been designed is absolutely not * reentrant, beware... So, we blindly protect all with spinlock */ /* Handle for the hint bit advertised in IrLMP */ void * skey; /* Server socket part */ struct ias_object * ias_obj; /* Our service name + lsap in IAS */} irnet_root;/**************************** PROTOTYPES ****************************//* ----------------------- CONTROL CHANNEL ----------------------- */static void irnet_post_event(irnet_socket *, irnet_event, __u32, __u32, char *, __u16);/* ----------------------- IRDA SUBROUTINES ----------------------- */static inline int irnet_open_tsap(irnet_socket *);static inline __u8 irnet_ias_to_tsap(irnet_socket *, int, struct ias_value *);static inline int irnet_find_lsap_sel(irnet_socket *);static inline int irnet_connect_tsap(irnet_socket *);static inline int irnet_discover_next_daddr(irnet_socket *);static inline int irnet_discover_daddr_and_lsap_sel(irnet_socket *);static inline int irnet_dname_to_daddr(irnet_socket *);/* ------------------------ SERVER SOCKET ------------------------ */static inline int irnet_daddr_to_dname(irnet_socket *);static inline irnet_socket * irnet_find_socket(irnet_socket *);static inline int irnet_connect_socket(irnet_socket *, irnet_socket *, struct qos_info *, __u32, __u8);static inline void irnet_disconnect_server(irnet_socket *, struct sk_buff *);static inline int irnet_setup_server(void);static inline void irnet_destroy_server(void);/* ---------------------- IRDA-TTP CALLBACKS ---------------------- */static int irnet_data_indication(void *, /* instance */ void *, /* sap */ struct sk_buff *);static void irnet_disconnect_indication(void *, void *, LM_REASON, struct sk_buff *);static void irnet_connect_confirm(void *, void *, struct qos_info *, __u32, __u8, struct sk_buff *);static void irnet_flow_indication(void *, void *, LOCAL_FLOW);static void irnet_status_indication(void *, LINK_STATUS, LOCK_STATUS);static void irnet_connect_indication(void *, void *, struct qos_info *, __u32, __u8, struct sk_buff *);/* -------------------- IRDA-IAS/LMP CALLBACKS -------------------- */static void irnet_getvalue_confirm(int, __u16, struct ias_value *, void *);static void irnet_discovervalue_confirm(int, __u16, struct ias_value *, void *);#ifdef DISCOVERY_EVENTSstatic void irnet_discovery_indication(discinfo_t *, DISCOVERY_MODE, void *);static void irnet_expiry_indication(discinfo_t *, DISCOVERY_MODE, void *);#endif/* -------------------------- PROC ENTRY -------------------------- */#ifdef CONFIG_PROC_FSstatic int irnet_proc_read(char *, char **, off_t, int);#endif /* CONFIG_PROC_FS *//**************************** VARIABLES ****************************//* * The IrNET server. Listen to connection requests and co... */static struct irnet_root irnet_server;/* Control channel stuff (note : extern) */struct irnet_ctrl_channel irnet_events;/* The /proc/net/irda directory, defined elsewhere... */#ifdef CONFIG_PROC_FSextern struct proc_dir_entry *proc_irda;#endif /* CONFIG_PROC_FS */#endif /* IRNET_IRDA_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -