130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * ATM Lan Emulation Daemon driver interface 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Marko Kiiskila <mkiiskila@yahoo.com> 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _ATMLEC_H_ 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _ATMLEC_H_ 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/atmapi.h> 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/atmioc.h> 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/atm.h> 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/if_ether.h> 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* ATM lec daemon control socket */ 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ATMLEC_CTRL _IO('a', ATMIOC_LANE) 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ATMLEC_DATA _IO('a', ATMIOC_LANE+1) 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ATMLEC_MCAST _IO('a', ATMIOC_LANE+2) 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Maximum number of LEC interfaces (tweakable) */ 2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MAX_LEC_ITF 48 2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2430692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum { 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng l_set_mac_addr, 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng l_del_mac_addr, 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng l_svc_setup, 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng l_addr_delete, 2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng l_topology_change, 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng l_flush_complete, 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng l_arp_update, 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng l_narp_req, /* LANE2 mandates the use of this */ 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng l_config, 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng l_flush_tran_id, 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng l_set_lecid, 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng l_arp_xmt, 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng l_rdesc_arp_xmt, 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng l_associate_req, 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng l_should_bridge /* should we bridge this MAC? */ 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} atmlec_msg_type; 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ATMLEC_MSG_TYPE_MAX l_should_bridge 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct atmlec_config_msg { 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int maximum_unknown_frame_count; 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int max_unknown_frame_time; 4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned short max_retry_count; 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int aging_time; 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int forward_delay_time; 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int arp_response_time; 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int flush_timeout; 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int path_switching_delay; 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int lane_version; /* LANE2: 1 for LANEv1, 2 for LANEv2 */ 5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int mtu; 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int is_proxy; 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 5830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct atmlec_msg { 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng atmlec_msg_type type; 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int sizeoftlvs; /* LANE2: if != 0, tlvs follow */ 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng union { 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct { 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char mac_addr[ETH_ALEN]; 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char atm_addr[ATM_ESA_LEN]; 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int flag; /* 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Topology_change flag, 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * remoteflag, permanent flag, 6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * lecid, transaction id 6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int targetless_le_arp; /* LANE2 */ 7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int no_source_le_narp; /* LANE2 */ 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng } normal; 7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct atmlec_config_msg config; 7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct { 7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 lec_id; /* requestor lec_id */ 7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 tran_id; /* transaction id */ 7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char mac_addr[ETH_ALEN]; /* dst mac addr */ 7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char atm_addr[ATM_ESA_LEN]; /* reqestor ATM addr */ 7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng } proxy; /* 8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * For mapping LE_ARP requests to responses. Filled by 8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * zeppelin, returned by kernel. Used only when proxying 8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng } content; 8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __ATM_API_ALIGN; 8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct atmlec_ioc { 8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int dev_num; 8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char atm_addr[ATM_ESA_LEN]; 8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char receive; /* 1= receive vcc, 0 = send vcc */ 9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _ATMLEC_H_ */ 92