93 lines · c
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */2/*3 * ATM Lan Emulation Daemon driver interface4 *5 * Marko Kiiskila <mkiiskila@yahoo.com>6 */7 8#ifndef _ATMLEC_H_9#define _ATMLEC_H_10 11#include <linux/atmapi.h>12#include <linux/atmioc.h>13#include <linux/atm.h>14#include <linux/if_ether.h>15#include <linux/types.h>16 17/* ATM lec daemon control socket */18#define ATMLEC_CTRL _IO('a', ATMIOC_LANE)19#define ATMLEC_DATA _IO('a', ATMIOC_LANE+1)20#define ATMLEC_MCAST _IO('a', ATMIOC_LANE+2)21 22/* Maximum number of LEC interfaces (tweakable) */23#define MAX_LEC_ITF 4824 25typedef enum {26 l_set_mac_addr,27 l_del_mac_addr,28 l_svc_setup,29 l_addr_delete,30 l_topology_change,31 l_flush_complete,32 l_arp_update,33 l_narp_req, /* LANE2 mandates the use of this */34 l_config,35 l_flush_tran_id,36 l_set_lecid,37 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_bridge44 45struct 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 59struct 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; /*67 * Topology_change flag,68 * remoteflag, permanent flag,69 * lecid, transaction id70 */71 unsigned int targetless_le_arp; /* LANE2 */72 unsigned int no_source_le_narp; /* LANE2 */73 } normal;74 struct atmlec_config_msg config;75 struct {76 __u16 lec_id; /* requestor lec_id */77 __u32 tran_id; /* transaction id */78 unsigned char mac_addr[ETH_ALEN]; /* dst mac addr */79 unsigned char atm_addr[ATM_ESA_LEN]; /* reqestor ATM addr */80 } proxy; /*81 * For mapping LE_ARP requests to responses. Filled by82 * zeppelin, returned by kernel. Used only when proxying83 */84 } content;85} __ATM_API_ALIGN;86 87struct atmlec_ioc {88 int dev_num;89 unsigned char atm_addr[ATM_ESA_LEN];90 unsigned char receive; /* 1= receive vcc, 0 = send vcc */91};92#endif /* _ATMLEC_H_ */93