130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _LINUX_ATMBR2684_H 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _LINUX_ATMBR2684_H 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/atm.h> 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/if.h> /* For IFNAMSIZ */ 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Type of media we're bridging (ethernet, token ring, etc) Currently only 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * ethernet is supported 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_MEDIA_ETHERNET (0) /* 802.3 */ 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_MEDIA_802_4 (1) /* 802.4 */ 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_MEDIA_TR (2) /* 802.5 - token ring */ 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_MEDIA_FDDI (3) 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_MEDIA_802_6 (4) /* 802.6 */ 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* used only at device creation: */ 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_FLAG_ROUTED (1<<16) /* payload is routed, not bridged */ 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Is there FCS inbound on this VC? This currently isn't supported. 2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_FCSIN_NO (0) 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_FCSIN_IGNORE (1) 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_FCSIN_VERIFY (2) 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Is there FCS outbound on this VC? This currently isn't supported. 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_FCSOUT_NO (0) 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_FCSOUT_SENDZERO (1) 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_FCSOUT_GENERATE (2) 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Does this VC include LLC encapsulation? 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_ENCAPS_VC (0) /* VC-mux */ 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_ENCAPS_LLC (1) 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_ENCAPS_AUTODETECT (2) /* Unsuported */ 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Is this VC bridged or routed? 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_PAYLOAD_ROUTED (0) 4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_PAYLOAD_BRIDGED (1) 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This is for the ATM_NEWBACKENDIF call - these are like socket families: 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * the first element of the structure is the backend number and the rest 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * is per-backend specific 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 5430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct atm_newif_br2684 { 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng atm_backend_t backend_num; /* ATM_BACKEND_BR2684 */ 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int media; /* BR2684_MEDIA_*, flags in upper bits */ 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char ifname[IFNAMSIZ]; 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int mtu; 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This structure is used to specify a br2684 interface - either by a 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * positive integer (returned by ATM_NEWBACKENDIF) or the interfaces name 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_FIND_BYNOTHING (0) 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_FIND_BYNUM (1) 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_FIND_BYIFNAME (2) 6830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct br2684_if_spec { 6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int method; /* BR2684_FIND_* */ 7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng union { 7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char ifname[IFNAMSIZ]; 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int devnum; 7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng } spec; 7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This is for the ATM_SETBACKEND call - these are like socket families: 7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * the first element of the structure is the backend number and the rest 7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * is per-backend specific 8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 8130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct atm_backend_br2684 { 8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng atm_backend_t backend_num; /* ATM_BACKEND_BR2684 */ 8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct br2684_if_spec ifspec; 8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int fcs_in; /* BR2684_FCSIN_* */ 8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int fcs_out; /* BR2684_FCSOUT_* */ 8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int fcs_auto; /* 1: fcs_{in,out} disabled if no FCS rx'ed */ 8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int encaps; /* BR2684_ENCAPS_* */ 8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int has_vpiid; /* 1: use vpn_id - Unsupported */ 8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 vpn_id[7]; 9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int send_padding; /* unsupported */ 9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int min_size; /* we will pad smaller packets than this */ 9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 9330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 9530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * The BR2684_SETFILT ioctl is an experimental mechanism for folks 9630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * terminating a large number of IP-only vcc's. When netfilter allows 9730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * efficient per-if in/out filters, this support will be removed 9830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 9930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct br2684_filter { 10030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be32 prefix; /* network byte order */ 10130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be32 netmask; /* 0 = disable filter */ 10230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 10330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 10430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct br2684_filter_set { 10530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct br2684_if_spec ifspec; 10630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct br2684_filter filter; 10730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 10830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 10930692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum br2684_payload { 11030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng p_routed = BR2684_PAYLOAD_ROUTED, 11130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng p_bridged = BR2684_PAYLOAD_BRIDGED, 11230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 11330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define BR2684_SETFILT _IOW( 'a', ATMIOC_BACKEND + 0, \ 11530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct br2684_filter_set) 11630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _LINUX_ATMBR2684_H */ 118