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 */ 54 struct 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) 68 struct 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 */ 81 struct 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 */ 99 struct br2684_filter { 100 __be32 prefix; /* network byte order */ 101 __be32 netmask; /* 0 = disable filter */ 102 }; 103 104 struct br2684_filter_set { 105 struct br2684_if_spec ifspec; 106 struct br2684_filter filter; 107 }; 108 109 enum 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