6 #define FETHERFRAME_H 1
10 #include "../endian_conversion.h"
13 #include "../fframe.h"
14 #include "../caddress.h"
26 static const unsigned int ETH_ADDR_LEN = 6;
30 #define DEFAULT_ETHER_FRAME_SIZE 1518
36 uint8_t dl_dst[ETH_ADDR_LEN];
37 uint8_t dl_src[ETH_ADDR_LEN];
40 } __attribute__((packed));
44 uint8_t dl_dst[ETH_ADDR_LEN];
45 uint8_t dl_src[ETH_ADDR_LEN];
50 uint8_t dl_vendor_code[3];
53 }__attribute__((packed));
70 size_t len = DEFAULT_ETHER_FRAME_SIZE);
85 uint8_t *data,
size_t datalen);
125 is_llc_frame()
const;
143 validate(uint16_t total_len = 0)
const;
184 operator<< (std::ostream& os,
fetherframe const& frame) {
185 os << dynamic_cast<fframe const&>( frame );
191 os <<
rofl::indent(4) <<
"<dl-type:0x" << std::hex << (int)frame.get_dl_type() << std::dec <<
" >" << std::endl;
fetherframe(uint8_t *data, size_t datalen)
Definition: fetherframe.cc:9
cmacaddr get_dl_src() const
Definition: fetherframe.cc:182
virtual void validate(uint16_t total_len=0) const
Definition: fetherframe.cc:146
Definition: fetherframe.h:19
void set_dl_src(cmacaddr const &dl_src)
Definition: fetherframe.cc:163
Definition: caddress.h:152
virtual ~fetherframe()
Definition: fetherframe.cc:30
virtual size_t payloadlen() const
Definition: fetherframe.cc:126
void set_dl_type(uint16_t dl_type)
Definition: fetherframe.cc:217
virtual void initialize()
Definition: fetherframe.cc:46
virtual bool complete() const
Definition: fetherframe.cc:59
virtual uint8_t * payload() const
Definition: fetherframe.cc:107
virtual void payload_insert(uint8_t *data, size_t datalen)
Definition: fetherframe.cc:86
Definition: fetherframe.h:43
virtual size_t need_bytes() const
Definition: fetherframe.cc:73
virtual void reset(uint8_t *data, size_t datalen)
Definition: fetherframe.cc:37
void set_dl_dst(cmacaddr const &dl_dst)
Definition: fetherframe.cc:190
Definition: fetherframe.h:35
Definition: fetherframe.h:25
cmacaddr get_dl_dst() const
Definition: fetherframe.cc:209
uint16_t get_dl_type() const
Definition: fetherframe.cc:235