1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux << 2 /* 1 /* 3 * ATM Lan Emulation Daemon driver interface 2 * ATM Lan Emulation Daemon driver interface 4 * 3 * 5 * Marko Kiiskila <mkiiskila@yahoo.com> 4 * Marko Kiiskila <mkiiskila@yahoo.com> 6 */ 5 */ 7 6 8 #ifndef _ATMLEC_H_ 7 #ifndef _ATMLEC_H_ 9 #define _ATMLEC_H_ 8 #define _ATMLEC_H_ 10 9 11 #include <linux/atmapi.h> 10 #include <linux/atmapi.h> 12 #include <linux/atmioc.h> 11 #include <linux/atmioc.h> 13 #include <linux/atm.h> 12 #include <linux/atm.h> 14 #include <linux/if_ether.h> 13 #include <linux/if_ether.h> 15 #include <linux/types.h> 14 #include <linux/types.h> 16 15 17 /* ATM lec daemon control socket */ 16 /* ATM lec daemon control socket */ 18 #define ATMLEC_CTRL _IO('a', ATMIOC_LANE) 17 #define ATMLEC_CTRL _IO('a', ATMIOC_LANE) 19 #define ATMLEC_DATA _IO('a', ATMIOC_LANE+1 18 #define ATMLEC_DATA _IO('a', ATMIOC_LANE+1) 20 #define ATMLEC_MCAST _IO('a', ATMIOC_LANE+2 19 #define ATMLEC_MCAST _IO('a', ATMIOC_LANE+2) 21 20 22 /* Maximum number of LEC interfaces (tweakable 21 /* Maximum number of LEC interfaces (tweakable) */ 23 #define MAX_LEC_ITF 48 22 #define MAX_LEC_ITF 48 24 23 25 typedef enum { 24 typedef enum { 26 l_set_mac_addr, 25 l_set_mac_addr, 27 l_del_mac_addr, 26 l_del_mac_addr, 28 l_svc_setup, 27 l_svc_setup, 29 l_addr_delete, 28 l_addr_delete, 30 l_topology_change, 29 l_topology_change, 31 l_flush_complete, 30 l_flush_complete, 32 l_arp_update, 31 l_arp_update, 33 l_narp_req, /* LANE2 manda 32 l_narp_req, /* LANE2 mandates the use of this */ 34 l_config, 33 l_config, 35 l_flush_tran_id, 34 l_flush_tran_id, 36 l_set_lecid, 35 l_set_lecid, 37 l_arp_xmt, 36 l_arp_xmt, 38 l_rdesc_arp_xmt, 37 l_rdesc_arp_xmt, 39 l_associate_req, 38 l_associate_req, 40 l_should_bridge /* should we b 39 l_should_bridge /* should we bridge this MAC? */ 41 } atmlec_msg_type; 40 } atmlec_msg_type; 42 41 43 #define ATMLEC_MSG_TYPE_MAX l_should_bridge 42 #define ATMLEC_MSG_TYPE_MAX l_should_bridge 44 43 45 struct atmlec_config_msg { 44 struct atmlec_config_msg { 46 unsigned int maximum_unknown_frame_cou 45 unsigned int maximum_unknown_frame_count; 47 unsigned int max_unknown_frame_time; 46 unsigned int max_unknown_frame_time; 48 unsigned short max_retry_count; 47 unsigned short max_retry_count; 49 unsigned int aging_time; 48 unsigned int aging_time; 50 unsigned int forward_delay_time; 49 unsigned int forward_delay_time; 51 unsigned int arp_response_time; 50 unsigned int arp_response_time; 52 unsigned int flush_timeout; 51 unsigned int flush_timeout; 53 unsigned int path_switching_delay; 52 unsigned int path_switching_delay; 54 unsigned int lane_version; /* LAN 53 unsigned int lane_version; /* LANE2: 1 for LANEv1, 2 for LANEv2 */ 55 int mtu; 54 int mtu; 56 int is_proxy; 55 int is_proxy; 57 }; 56 }; 58 57 59 struct atmlec_msg { 58 struct atmlec_msg { 60 atmlec_msg_type type; 59 atmlec_msg_type type; 61 int sizeoftlvs; /* LANE2: if ! 60 int sizeoftlvs; /* LANE2: if != 0, tlvs follow */ 62 union { 61 union { 63 struct { 62 struct { 64 unsigned char mac_addr 63 unsigned char mac_addr[ETH_ALEN]; 65 unsigned char atm_addr 64 unsigned char atm_addr[ATM_ESA_LEN]; 66 unsigned int flag; 65 unsigned int flag; /* 67 66 * Topology_change flag, 68 67 * remoteflag, permanent flag, 69 68 * lecid, transaction id 70 69 */ 71 unsigned int targetles 70 unsigned int targetless_le_arp; /* LANE2 */ 72 unsigned int no_source 71 unsigned int no_source_le_narp; /* LANE2 */ 73 } normal; 72 } normal; 74 struct atmlec_config_msg confi 73 struct atmlec_config_msg config; 75 struct { 74 struct { 76 __u16 lec_id; 75 __u16 lec_id; /* requestor lec_id */ 77 __u32 tran_id; 76 __u32 tran_id; /* transaction id */ 78 unsigned char mac_addr 77 unsigned char mac_addr[ETH_ALEN]; /* dst mac addr */ 79 unsigned char atm_addr 78 unsigned char atm_addr[ATM_ESA_LEN]; /* reqestor ATM addr */ 80 } proxy; /* 79 } proxy; /* 81 * For mapping 80 * For mapping LE_ARP requests to responses. Filled by 82 * zeppelin, r 81 * zeppelin, returned by kernel. Used only when proxying 83 */ 82 */ 84 } content; 83 } content; 85 } __ATM_API_ALIGN; 84 } __ATM_API_ALIGN; 86 85 87 struct atmlec_ioc { 86 struct atmlec_ioc { 88 int dev_num; 87 int dev_num; 89 unsigned char atm_addr[ATM_ESA_LEN]; 88 unsigned char atm_addr[ATM_ESA_LEN]; 90 unsigned char receive; /* 1= receive 89 unsigned char receive; /* 1= receive vcc, 0 = send vcc */ 91 }; 90 }; 92 #endif /* _ATMLEC_H_ */ 91 #endif /* _ATMLEC_H_ */ 93 92
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.