📄 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 *****************************/#include <linux/config.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 */ __u32 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, char *);/* ----------------------- IRDA SUBROUTINES ----------------------- */static inline int irnet_open_tsap(irnet_socket *);static int irnet_find_lsap_sel(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 *);#ifdef DISCOVERY_EVENTSstatic void irnet_discovery_indication(discovery_t *, void *);static void irnet_expiry_indication(discovery_t *, 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 + -