1 /* 2 * 3 * ATM Lan Emulation Daemon vs. driver interface 4 * 5 * mkiiskila@yahoo.com 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 /* 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 /* From the total of MAX_LEC_ITF, last NUM_TR_DEVS are reserved for Token Ring. 25 * E.g. if MAX_LEC_ITF = 48 and NUM_TR_DEVS = 8, then lec0-lec39 are for 26 * Ethernet ELANs and lec40-lec47 are for Token Ring ELANS. 27 */ 28 #define NUM_TR_DEVS 8 29 30 typedef 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, /* LANE2 mandates the use of this */ 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 /* should we bridge this MAC? */ 41 } atmlec_msg_type; 42 43 #define ATMLEC_MSG_TYPE_MAX l_should_bridge 44 45 struct 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; /* LANE2: 1 for LANEv1, 2 for LANEv2 */ 55 int mtu; 56 int is_proxy; 57 }; 58 59 struct atmlec_msg { 60 atmlec_msg_type type; 61 int sizeoftlvs; /* LANE2: if != 0, tlvs follow */ 62 union { 63 struct { 64 unsigned char mac_addr[ETH_ALEN]; 65 unsigned char atm_addr[ATM_ESA_LEN]; 66 unsigned int flag;/* Topology_change flag, 67 remoteflag, permanent flag, 68 lecid, transaction id */ 69 unsigned int targetless_le_arp; /* LANE2 */ 70 unsigned int no_source_le_narp; /* LANE2 */ 71 } normal; 72 struct atmlec_config_msg config; 73 struct { 74 uint16_t lec_id; /* requestor lec_id */ 75 uint32_t tran_id; /* transaction id */ 76 unsigned char mac_addr[ETH_ALEN]; /* dst mac addr */ 77 unsigned char atm_addr[ATM_ESA_LEN]; /* reqestor ATM addr */ 78 } proxy; 79 /* For mapping LE_ARP requests to responses. Filled by */ 80 } content; /* zeppelin, returned by kernel. Used only when proxying */ 81 } __ATM_API_ALIGN; 82 83 struct atmlec_ioc { 84 int dev_num; 85 unsigned char atm_addr[ATM_ESA_LEN]; 86 unsigned char receive; /* 1= receive vcc, 0 = send vcc */ 87 }; 88 #endif /* _ATMLEC_H_ */ 89