Home | History | Annotate | Download | only in netfilter_bridge
      1 #ifndef __LINUX_BRIDGE_EBT_802_3_H
      2 #define __LINUX_BRIDGE_EBT_802_3_H
      3 
      4 #define EBT_802_3_SAP 0x01
      5 #define EBT_802_3_TYPE 0x02
      6 
      7 #define EBT_802_3_MATCH "802_3"
      8 
      9 /*
     10  * If frame has DSAP/SSAP value 0xaa you must check the SNAP type
     11  * to discover what kind of packet we're carrying.
     12  */
     13 #define CHECK_TYPE 0xaa
     14 
     15 /*
     16  * Control field may be one or two bytes.  If the first byte has
     17  * the value 0x03 then the entire length is one byte, otherwise it is two.
     18  * One byte controls are used in Unnumbered Information frames.
     19  * Two byte controls are used in Numbered Information frames.
     20  */
     21 #define IS_UI 0x03
     22 
     23 #define EBT_802_3_MASK (EBT_802_3_SAP | EBT_802_3_TYPE | EBT_802_3)
     24 
     25 /* ui has one byte ctrl, ni has two */
     26 struct hdr_ui {
     27 	uint8_t dsap;
     28 	uint8_t ssap;
     29 	uint8_t ctrl;
     30 	uint8_t orig[3];
     31 	__be16 type;
     32 };
     33 
     34 struct hdr_ni {
     35 	uint8_t dsap;
     36 	uint8_t ssap;
     37 	__be16 ctrl;
     38 	uint8_t  orig[3];
     39 	__be16 type;
     40 };
     41 
     42 struct ebt_802_3_hdr {
     43 	uint8_t  daddr[6];
     44 	uint8_t  saddr[6];
     45 	__be16 len;
     46 	union {
     47 		struct hdr_ui ui;
     48 		struct hdr_ni ni;
     49 	} llc;
     50 };
     51 
     52 
     53 struct ebt_802_3_info
     54 {
     55 	uint8_t  sap;
     56 	__be16 type;
     57 	uint8_t  bitmask;
     58 	uint8_t  invflags;
     59 };
     60 
     61 #endif
     62