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