1
2
3
4
5
6
7
8
9#ifndef _ATMLEC_H_
10#define _ATMLEC_H_
11
12#include <linux/atmapi.h>
13#include <linux/atmioc.h>
14#include <linux/atm.h>
15#include <linux/if_ether.h>
16
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
22#define MAX_LEC_ITF 48
23
24
25
26
27
28#define NUM_TR_DEVS 8
29
30typedef enum {
31 l_set_mac_addr, l_del_mac_addr,
32 l_svc_setup,
33 l_addr_delete, l_topology_change,
34 l_flush_complete, l_arp_update,
35 l_narp_req,
36 l_config, l_flush_tran_id,
37 l_set_lecid, l_arp_xmt,
38 l_rdesc_arp_xmt,
39 l_associate_req,
40 l_should_bridge
41} atmlec_msg_type;
42
43#define ATMLEC_MSG_TYPE_MAX l_should_bridge
44
45struct atmlec_config_msg {
46 unsigned int maximum_unknown_frame_count;
47 unsigned int max_unknown_frame_time;
48 unsigned short max_retry_count;
49 unsigned int aging_time;
50 unsigned int forward_delay_time;
51 unsigned int arp_response_time;
52 unsigned int flush_timeout;
53 unsigned int path_switching_delay;
54 unsigned int lane_version;
55 int mtu;
56 int is_proxy;
57};
58
59struct atmlec_msg {
60 atmlec_msg_type type;
61 int sizeoftlvs;
62 union {
63 struct {
64 unsigned char mac_addr[ETH_ALEN];
65 unsigned char atm_addr[ATM_ESA_LEN];
66 unsigned int flag;
67
68
69 unsigned int targetless_le_arp;
70 unsigned int no_source_le_narp;
71 } normal;
72 struct atmlec_config_msg config;
73 struct {
74 uint16_t lec_id;
75 uint32_t tran_id;
76 unsigned char mac_addr[ETH_ALEN];
77 unsigned char atm_addr[ATM_ESA_LEN];
78 } proxy;
79
80 } content;
81} __ATM_API_ALIGN;
82
83struct atmlec_ioc {
84 int dev_num;
85 unsigned char atm_addr[ATM_ESA_LEN];
86 unsigned char receive;
87};
88#endif
89