… | |
… | |
20 | #define VPE_DEVICE_H__ |
20 | #define VPE_DEVICE_H__ |
21 | |
21 | |
22 | #include "config.h" |
22 | #include "config.h" |
23 | |
23 | |
24 | #include <cstdlib> |
24 | #include <cstdlib> |
|
|
25 | #include <cstring> |
25 | |
26 | |
26 | #include <net/if.h> |
27 | #include <net/if.h> |
27 | |
28 | |
28 | #include "gettext.h" |
29 | #include "gettext.h" |
29 | |
30 | |
… | |
… | |
31 | |
32 | |
32 | struct net_packet { |
33 | struct net_packet { |
33 | u32 len; // actually u16, but padding... |
34 | u32 len; // actually u16, but padding... |
34 | |
35 | |
35 | u8 &operator[] (u16 offset); |
36 | u8 &operator[] (u16 offset); |
|
|
37 | |
|
|
38 | void skip_hdr (u16 hdrsize) |
|
|
39 | { |
|
|
40 | memmove ((void *)&(*this)[0], (void *)&(*this)[hdrsize], len -= hdrsize); |
|
|
41 | } |
36 | |
42 | |
37 | bool is_arp () |
43 | bool is_arp () |
38 | { |
44 | { |
39 | return (*this)[12] == 0x08 && (*this)[13] == 0x06 // 0806 protocol |
45 | return (*this)[12] == 0x08 && (*this)[13] == 0x06 // 0806 protocol |
40 | && (*this)[14] == 0x00 && (*this)[15] == 0x01 // 0001 hw_format |
46 | && (*this)[14] == 0x00 && (*this)[15] == 0x01 // 0001 hw_format |