aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/linux-headers/linux/atmlec.h
blob: 0d33df576c25e310085ce7d56e8bceafa89143f8 (plain) (blame)
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
88
89
90
91
92
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 
/* 
 * ATM Lan Emulation Daemon driver interface 
 * 
 * Marko Kiiskila <mkiiskila@yahoo.com> 
 */ 
 
#ifndef _ATMLEC_H_ 
#define _ATMLEC_H_ 
 
#include <linux/atmapi.h> 
#include <linux/atmioc.h> 
#include <linux/atm.h> 
#include <linux/if_ether.h> 
#include <linux/types.h> 
 
/* ATM lec daemon control socket */ 
#define ATMLEC_CTRL	_IO('a', ATMIOC_LANE) 
#define ATMLEC_DATA	_IO('a', ATMIOC_LANE+1) 
#define ATMLEC_MCAST	_IO('a', ATMIOC_LANE+2) 
 
/* Maximum number of LEC interfaces (tweakable) */ 
#define MAX_LEC_ITF 48 
 
typedef enum { 
	l_set_mac_addr, 
	l_del_mac_addr, 
	l_svc_setup, 
	l_addr_delete, 
	l_topology_change, 
	l_flush_complete, 
	l_arp_update, 
	l_narp_req,		/* LANE2 mandates the use of this */ 
	l_config, 
	l_flush_tran_id, 
	l_set_lecid, 
	l_arp_xmt, 
	l_rdesc_arp_xmt, 
	l_associate_req, 
	l_should_bridge		/* should we bridge this MAC? */ 
} atmlec_msg_type; 
 
#define ATMLEC_MSG_TYPE_MAX l_should_bridge 
 
struct atmlec_config_msg { 
	unsigned int maximum_unknown_frame_count; 
	unsigned int max_unknown_frame_time; 
	unsigned short max_retry_count; 
	unsigned int aging_time; 
	unsigned int forward_delay_time; 
	unsigned int arp_response_time; 
	unsigned int flush_timeout; 
	unsigned int path_switching_delay; 
	unsigned int lane_version;	/* LANE2: 1 for LANEv1, 2 for LANEv2 */ 
	int mtu; 
	int is_proxy; 
}; 
 
struct atmlec_msg { 
	atmlec_msg_type type; 
	int sizeoftlvs;		/* LANE2: if != 0, tlvs follow */ 
	union { 
		struct { 
			unsigned char mac_addr[ETH_ALEN]; 
			unsigned char atm_addr[ATM_ESA_LEN]; 
			unsigned int flag;	/* 
						 * Topology_change flag, 
						 * remoteflag, permanent flag, 
						 * lecid, transaction id 
						 */ 
			unsigned int targetless_le_arp;	/* LANE2 */ 
			unsigned int no_source_le_narp;	/* LANE2 */ 
		} normal; 
		struct atmlec_config_msg config; 
		struct { 
			__u16 lec_id;				/* requestor lec_id  */ 
			__u32 tran_id;				/* transaction id    */ 
			unsigned char mac_addr[ETH_ALEN];	/* dst mac addr      */ 
			unsigned char atm_addr[ATM_ESA_LEN];	/* reqestor ATM addr */ 
		} proxy;	/* 
				 * For mapping LE_ARP requests to responses. Filled by 
				 * zeppelin, returned by kernel. Used only when proxying 
				 */ 
	} content; 
} __ATM_API_ALIGN; 
 
struct atmlec_ioc { 
	int dev_num; 
	unsigned char atm_addr[ATM_ESA_LEN]; 
	unsigned char receive;	/* 1= receive vcc, 0 = send vcc */ 
}; 
#endif /* _ATMLEC_H_ */