1 /* 2 * ATM Lan Emulation Daemon driver interface 3 * 4 * Marko Kiiskila <mkiiskila@yahoo.com> 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 #include <linux/types.h> 15 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 /* 25 * From the total of MAX_LEC_ITF, last NUM_TR_DEVS are reserved for Token Ring. 26 * E.g. if MAX_LEC_ITF = 48 and NUM_TR_DEVS = 8, then lec0-lec39 are for 27 * Ethernet ELANs and lec40-lec47 are for Token Ring ELANS. 28 */ 29 #define NUM_TR_DEVS 8 30 31 typedef enum { 32 l_set_mac_addr, 33 l_del_mac_addr, 34 l_svc_setup, 35 l_addr_delete, 36 l_topology_change, 37 l_flush_complete, 38 l_arp_update, 39 l_narp_req, /* LANE2 mandates the use of this */ 40 l_config, 41 l_flush_tran_id, 42 l_set_lecid, 43 l_arp_xmt, 44 l_rdesc_arp_xmt, 45 l_associate_req, 46 l_should_bridge /* should we bridge this MAC? */ 47 } atmlec_msg_type; 48 49 #define ATMLEC_MSG_TYPE_MAX l_should_bridge 50 51 struct atmlec_config_msg { 52 unsigned int maximum_unknown_frame_count; 53 unsigned int max_unknown_frame_time; 54 unsigned short max_retry_count; 55 unsigned int aging_time; 56 unsigned int forward_delay_time; 57 unsigned int arp_response_time; 58 unsigned int flush_timeout; 59 unsigned int path_switching_delay; 60 unsigned int lane_version; /* LANE2: 1 for LANEv1, 2 for LANEv2 */ 61 int mtu; 62 int is_proxy; 63 }; 64 65 struct atmlec_msg { 66 atmlec_msg_type type; 67 int sizeoftlvs; /* LANE2: if != 0, tlvs follow */ 68 union { 69 struct { 70 unsigned char mac_addr[ETH_ALEN]; 71 unsigned char atm_addr[ATM_ESA_LEN]; 72 unsigned int flag; /* 73 * Topology_change flag, 74 * remoteflag, permanent flag, 75 * lecid, transaction id 76 */ 77 unsigned int targetless_le_arp; /* LANE2 */ 78 unsigned int no_source_le_narp; /* LANE2 */ 79 } normal; 80 struct atmlec_config_msg config; 81 struct { 82 __u16 lec_id; /* requestor lec_id */ 83 __u32 tran_id; /* transaction id */ 84 unsigned char mac_addr[ETH_ALEN]; /* dst mac addr */ 85 unsigned char atm_addr[ATM_ESA_LEN]; /* reqestor ATM addr */ 86 } proxy; /* 87 * For mapping LE_ARP requests to responses. Filled by 88 * zeppelin, returned by kernel. Used only when proxying 89 */ 90 } content; 91 } __ATM_API_ALIGN; 92 93 struct atmlec_ioc { 94 int dev_num; 95 unsigned char atm_addr[ATM_ESA_LEN]; 96 unsigned char receive; /* 1= receive vcc, 0 = send vcc */ 97 }; 98 #endif /* _ATMLEC_H_ */ 99