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