Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
423 | giacomo | 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 | uint16_t type; |
||
32 | }; |
||
33 | |||
34 | struct hdr_ni { |
||
35 | uint8_t dsap; |
||
36 | uint8_t ssap; |
||
37 | uint16_t ctrl; |
||
38 | uint8_t orig[3]; |
||
39 | uint16_t type; |
||
40 | }; |
||
41 | |||
42 | struct ebt_802_3_hdr { |
||
43 | uint8_t daddr[6]; |
||
44 | uint8_t saddr[6]; |
||
45 | uint16_t len; |
||
46 | union { |
||
47 | struct hdr_ui ui; |
||
48 | struct hdr_ni ni; |
||
49 | } llc; |
||
50 | }; |
||
51 | |||
52 | struct ebt_802_3_info |
||
53 | { |
||
54 | uint8_t sap; |
||
55 | uint16_t type; |
||
56 | uint8_t bitmask; |
||
57 | uint8_t invflags; |
||
58 | }; |
||
59 | |||
60 | #endif |