1#ifndef _LINUX_ATMBR2684_H 2#define _LINUX_ATMBR2684_H 3 4#include <linux/types.h> 5#include <linux/atm.h> 6#include <linux/if.h> /* For IFNAMSIZ */ 7 8/* 9 * Type of media we're bridging (ethernet, token ring, etc) Currently only 10 * ethernet is supported 11 */ 12#define BR2684_MEDIA_ETHERNET (0) /* 802.3 */ 13#define BR2684_MEDIA_802_4 (1) /* 802.4 */ 14#define BR2684_MEDIA_TR (2) /* 802.5 - token ring */ 15#define BR2684_MEDIA_FDDI (3) 16#define BR2684_MEDIA_802_6 (4) /* 802.6 */ 17 18 /* used only at device creation: */ 19#define BR2684_FLAG_ROUTED (1<<16) /* payload is routed, not bridged */ 20 21/* 22 * Is there FCS inbound on this VC? This currently isn't supported. 23 */ 24#define BR2684_FCSIN_NO (0) 25#define BR2684_FCSIN_IGNORE (1) 26#define BR2684_FCSIN_VERIFY (2) 27 28/* 29 * Is there FCS outbound on this VC? This currently isn't supported. 30 */ 31#define BR2684_FCSOUT_NO (0) 32#define BR2684_FCSOUT_SENDZERO (1) 33#define BR2684_FCSOUT_GENERATE (2) 34 35/* 36 * Does this VC include LLC encapsulation? 37 */ 38#define BR2684_ENCAPS_VC (0) /* VC-mux */ 39#define BR2684_ENCAPS_LLC (1) 40#define BR2684_ENCAPS_AUTODETECT (2) /* Unsuported */ 41 42/* 43 * Is this VC bridged or routed? 44 */ 45 46#define BR2684_PAYLOAD_ROUTED (0) 47#define BR2684_PAYLOAD_BRIDGED (1) 48 49/* 50 * This is for the ATM_NEWBACKENDIF call - these are like socket families: 51 * the first element of the structure is the backend number and the rest 52 * is per-backend specific 53 */ 54struct atm_newif_br2684 { 55 atm_backend_t backend_num; /* ATM_BACKEND_BR2684 */ 56 int media; /* BR2684_MEDIA_*, flags in upper bits */ 57 char ifname[IFNAMSIZ]; 58 int mtu; 59}; 60 61/* 62 * This structure is used to specify a br2684 interface - either by a 63 * positive integer (returned by ATM_NEWBACKENDIF) or the interfaces name 64 */ 65#define BR2684_FIND_BYNOTHING (0) 66#define BR2684_FIND_BYNUM (1) 67#define BR2684_FIND_BYIFNAME (2) 68struct br2684_if_spec { 69 int method; /* BR2684_FIND_* */ 70 union { 71 char ifname[IFNAMSIZ]; 72 int devnum; 73 } spec; 74}; 75 76/* 77 * This is for the ATM_SETBACKEND call - these are like socket families: 78 * the first element of the structure is the backend number and the rest 79 * is per-backend specific 80 */ 81struct atm_backend_br2684 { 82 atm_backend_t backend_num; /* ATM_BACKEND_BR2684 */ 83 struct br2684_if_spec ifspec; 84 int fcs_in; /* BR2684_FCSIN_* */ 85 int fcs_out; /* BR2684_FCSOUT_* */ 86 int fcs_auto; /* 1: fcs_{in,out} disabled if no FCS rx'ed */ 87 int encaps; /* BR2684_ENCAPS_* */ 88 int has_vpiid; /* 1: use vpn_id - Unsupported */ 89 __u8 vpn_id[7]; 90 int send_padding; /* unsupported */ 91 int min_size; /* we will pad smaller packets than this */ 92}; 93 94/* 95 * The BR2684_SETFILT ioctl is an experimental mechanism for folks 96 * terminating a large number of IP-only vcc's. When netfilter allows 97 * efficient per-if in/out filters, this support will be removed 98 */ 99struct br2684_filter { 100 __be32 prefix; /* network byte order */ 101 __be32 netmask; /* 0 = disable filter */ 102}; 103 104struct br2684_filter_set { 105 struct br2684_if_spec ifspec; 106 struct br2684_filter filter; 107}; 108 109enum br2684_payload { 110 p_routed = BR2684_PAYLOAD_ROUTED, 111 p_bridged = BR2684_PAYLOAD_BRIDGED, 112}; 113 114#define BR2684_SETFILT _IOW( 'a', ATMIOC_BACKEND + 0, \ 115 struct br2684_filter_set) 116 117#endif /* _LINUX_ATMBR2684_H */ 118