Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
atmlec.h
Go to the documentation of this file.
1 /*
2  * ATM Lan Emulation Daemon driver interface
3  *
4  * Marko Kiiskila <[email protected]>
5  */
6 
7 #ifndef _ATMLEC_H_
8 #define _ATMLEC_H_
9 
10 #include <linux/atmapi.h>
11 #include <linux/atmioc.h>
12 #include <linux/atm.h>
13 #include <linux/if_ether.h>
14 #include <linux/types.h>
15 
16 /* ATM lec daemon control socket */
17 #define ATMLEC_CTRL _IO('a', ATMIOC_LANE)
18 #define ATMLEC_DATA _IO('a', ATMIOC_LANE+1)
19 #define ATMLEC_MCAST _IO('a', ATMIOC_LANE+2)
20 
21 /* Maximum number of LEC interfaces (tweakable) */
22 #define MAX_LEC_ITF 48
23 
24 typedef enum {
32  l_narp_req, /* LANE2 mandates the use of this */
39  l_should_bridge /* should we bridge this MAC? */
41 
42 #define ATMLEC_MSG_TYPE_MAX l_should_bridge
43 
46  unsigned int max_unknown_frame_time;
47  unsigned short max_retry_count;
48  unsigned int aging_time;
49  unsigned int forward_delay_time;
50  unsigned int arp_response_time;
51  unsigned int flush_timeout;
52  unsigned int path_switching_delay;
53  unsigned int lane_version; /* LANE2: 1 for LANEv1, 2 for LANEv2 */
54  int mtu;
55  int is_proxy;
56 };
57 
58 struct atmlec_msg {
60  int sizeoftlvs; /* LANE2: if != 0, tlvs follow */
61  union {
62  struct {
63  unsigned char mac_addr[ETH_ALEN];
64  unsigned char atm_addr[ATM_ESA_LEN];
65  unsigned int flag; /*
66  * Topology_change flag,
67  * remoteflag, permanent flag,
68  * lecid, transaction id
69  */
70  unsigned int targetless_le_arp; /* LANE2 */
71  unsigned int no_source_le_narp; /* LANE2 */
72  } normal;
74  struct {
75  __u16 lec_id; /* requestor lec_id */
76  __u32 tran_id; /* transaction id */
77  unsigned char mac_addr[ETH_ALEN]; /* dst mac addr */
78  unsigned char atm_addr[ATM_ESA_LEN]; /* reqestor ATM addr */
79  } proxy; /*
80  * For mapping LE_ARP requests to responses. Filled by
81  * zeppelin, returned by kernel. Used only when proxying
82  */
83  } content;
85 
86 struct atmlec_ioc {
87  int dev_num;
88  unsigned char atm_addr[ATM_ESA_LEN];
89  unsigned char receive; /* 1= receive vcc, 0 = send vcc */
90 };
91 #endif /* _ATMLEC_H_ */