130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _UAPI__LINUX_BRIDGE_EBT_802_3_H 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _UAPI__LINUX_BRIDGE_EBT_802_3_H 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 5e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl#include <linux/if_ether.h> 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define EBT_802_3_SAP 0x01 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define EBT_802_3_TYPE 0x02 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define EBT_802_3_MATCH "802_3" 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * If frame has DSAP/SSAP value 0xaa you must check the SNAP type 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * to discover what kind of packet we're carrying. 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CHECK_TYPE 0xaa 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Control field may be one or two bytes. If the first byte has 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * the value 0x03 then the entire length is one byte, otherwise it is two. 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * One byte controls are used in Unnumbered Information frames. 2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Two byte controls are used in Numbered Information frames. 2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IS_UI 0x03 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define EBT_802_3_MASK (EBT_802_3_SAP | EBT_802_3_TYPE | EBT_802_3) 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* ui has one byte ctrl, ni has two */ 2930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct hdr_ui { 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 dsap; 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 ssap; 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 ctrl; 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 orig[3]; 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be16 type; 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct hdr_ni { 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 dsap; 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 ssap; 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be16 ctrl; 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 orig[3]; 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be16 type; 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ebt_802_3_hdr { 46e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __u8 daddr[ETH_ALEN]; 47e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl __u8 saddr[ETH_ALEN]; 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be16 len; 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng union { 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct hdr_ui ui; 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct hdr_ni ni; 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng } llc; 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 5630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ebt_802_3_info { 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sap; 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be16 type; 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 bitmask; 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 invflags; 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _UAPI__LINUX_BRIDGE_EBT_802_3_H */ 64