123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- /*
- * 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_EVENTS
- static void
- irnet_discovery_indication(discinfo_t *,
- DISCOVERY_MODE,
- void *);
- static void
- irnet_expiry_indication(discinfo_t *,
- DISCOVERY_MODE,
- void *);
- #endif
- /**************************** 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_FS
- extern struct proc_dir_entry *proc_irda;
- #endif /* CONFIG_PROC_FS */
- #endif /* IRNET_IRDA_H */
|