lin
2025-07-30 fcd736bf35fd93b563e9bbf594f2aa7b62028cc9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*********************************************************************
 *                
 * Filename:      af_irda.h
 * Version:       1.0
 * Description:   IrDA sockets declarations
 * Status:        Stable
 * Author:        Dag Brattli <dagb@cs.uit.no>
 * Created at:    Tue Dec  9 21:13:12 1997
 * Modified at:   Fri Jan 28 13:16:32 2000
 * Modified by:   Dag Brattli <dagb@cs.uit.no>
 * 
 *     Copyright (c) 1998-2000 Dag Brattli, All Rights Reserved.
 *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
 *      
 *     This program is free software; you can redistribute it and/or 
 *     modify it under the terms of the GNU General Public License as 
 *     published by the Free Software Foundation; either version 2 of 
 *     the License, or (at your option) any later version.
 *  
 *     Neither Dag Brattli nor University of Tromsø admit liability nor
 *     provide warranty for any of this software. This material is 
 *     provided "AS-IS" and at no charge.
 *     
 ********************************************************************/
 
#ifndef AF_IRDA_H
#define AF_IRDA_H
 
#include <linux/irda.h>
#include <net/irda/irda.h>
#include <net/irda/iriap.h>        /* struct iriap_cb */
#include <net/irda/irias_object.h>    /* struct ias_value */
#include <net/irda/irlmp.h>        /* struct lsap_cb */
#include <net/irda/irttp.h>        /* struct tsap_cb */
#include <net/irda/discovery.h>        /* struct discovery_t */
#include <net/sock.h>
 
/* IrDA Socket */
struct irda_sock {
   /* struct sock has to be the first member of irda_sock */
   struct sock sk;
   __u32 saddr;          /* my local address */
   __u32 daddr;          /* peer address */
 
   struct lsap_cb *lsap; /* LSAP used by Ultra */
   __u8  pid;            /* Protocol IP (PID) used by Ultra */
 
   struct tsap_cb *tsap; /* TSAP used by this connection */
   __u8 dtsap_sel;       /* remote TSAP address */
   __u8 stsap_sel;       /* local TSAP address */
   
   __u32 max_sdu_size_rx;
   __u32 max_sdu_size_tx;
   __u32 max_data_size;
   __u8  max_header_size;
   struct qos_info qos_tx;
 
   __u16_host_order mask;           /* Hint bits mask */
   __u16_host_order hints;          /* Hint bits */
 
   void *ckey;           /* IrLMP client handle */
   void *skey;           /* IrLMP service handle */
 
   struct ias_object *ias_obj;   /* Our service name + lsap in IAS */
   struct iriap_cb *iriap;          /* Used to query remote IAS */
   struct ias_value *ias_result; /* Result of remote IAS query */
 
   hashbin_t *cachelog;        /* Result of discovery query */
   __u32 cachedaddr;    /* Result of selective discovery query */
 
   int nslots;           /* Number of slots to use for discovery */
 
   int errno;            /* status of the IAS query */
 
   wait_queue_head_t query_wait;    /* Wait for the answer to a query */
   struct timer_list watchdog;    /* Timeout for discovery */
 
   LOCAL_FLOW tx_flow;
   LOCAL_FLOW rx_flow;
};
 
static inline struct irda_sock *irda_sk(struct sock *sk)
{
   return (struct irda_sock *)sk;
}
 
#endif /* AF_IRDA_H */