1
2
3
4
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
15
16#define ATMLEC_CTRL _IO('a', ATMIOC_LANE)
17#define ATMLEC_DATA _IO('a', ATMIOC_LANE+1)
18#define ATMLEC_MCAST _IO('a', ATMIOC_LANE+2)
19
20
21#define MAX_LEC_ITF 48
22
23
24
25
26
27
28#define NUM_TR_DEVS 8
29
30typedef enum {
31 l_set_mac_addr,
32 l_del_mac_addr,
33 l_svc_setup,
34 l_addr_delete,
35 l_topology_change,
36 l_flush_complete,
37 l_arp_update,
38 l_narp_req,
39 l_config,
40 l_flush_tran_id,
41 l_set_lecid,
42 l_arp_xmt,
43 l_rdesc_arp_xmt,
44 l_associate_req,
45 l_should_bridge
46} atmlec_msg_type;
47
48#define ATMLEC_MSG_TYPE_MAX l_should_bridge
49
50struct atmlec_config_msg {
51 unsigned int maximum_unknown_frame_count;
52 unsigned int max_unknown_frame_time;
53 unsigned short max_retry_count;
54 unsigned int aging_time;
55 unsigned int forward_delay_time;
56 unsigned int arp_response_time;
57 unsigned int flush_timeout;
58 unsigned int path_switching_delay;
59 unsigned int lane_version;
60 int mtu;
61 int is_proxy;
62};
63
64struct atmlec_msg {
65 atmlec_msg_type type;
66 int sizeoftlvs;
67 union {
68 struct {
69 unsigned char mac_addr[ETH_ALEN];
70 unsigned char atm_addr[ATM_ESA_LEN];
71 unsigned int flag;
72
73
74
75
76 unsigned int targetless_le_arp;
77 unsigned int no_source_le_narp;
78 } normal;
79 struct atmlec_config_msg config;
80 struct {
81 uint16_t lec_id;
82 uint32_t tran_id;
83 unsigned char mac_addr[ETH_ALEN];
84 unsigned char atm_addr[ATM_ESA_LEN];
85 } proxy;
86
87
88
89 } content;
90} __ATM_API_ALIGN;
91
92struct atmlec_ioc {
93 int dev_num;
94 unsigned char atm_addr[ATM_ESA_LEN];
95 unsigned char receive;
96};
97#endif
98