6 #define FARPV4FRAME_H 1
11 #include "../endian_conversion.h"
14 #include "../fframe.h"
15 #include "../caddress.h"
25 static const unsigned int ETH_ADDR_LEN = 6;
34 enum arpv4_opcodes_t {
35 ARPV4_OPCODE_REQUEST = 0x01,
36 ARPV4_OPCODE_REPLY = 0x02,
45 uint8_t dl_src[ETH_ADDR_LEN];
47 uint8_t dl_dst[ETH_ADDR_LEN];
49 } __attribute__((packed));
52 #define DEFAULT_ARPV4_FRAME_SIZE sizeof(struct arpv4_hdr_t)
69 size_t len = DEFAULT_ARPV4_FRAME_SIZE);
89 get_hw_addr_type()
const;
96 uint16_t prothwaddrtype);
102 get_prot_addr_type()
const;
115 get_hw_addr_size()
const;
121 set_prot_hw_addr_size(
128 get_prot_hw_addr_size()
const;
226 validate(uint16_t total_len = 0)
const;
263 operator<< (std::ostream& os,
farpv4frame const& frame) {
264 os << dynamic_cast<fframe const&>( frame );
265 os <<
indent(2) <<
"<farpv4frame ";
266 os <<
"opcode:" << (int)frame.get_opcode() <<
" ";
267 os <<
"hw-addr-type:" << (int)frame.get_hw_addr_type() <<
" ";
268 os <<
"hw-addr-size:" << (int)frame.get_hw_addr_size() <<
" ";
269 os <<
"prot-addr-type:" << (int)frame.get_prot_addr_type() <<
" ";
270 os <<
"prot-addr-size:" << (int)frame.get_prot_hw_addr_size() <<
" ";
271 os <<
"dl-dst:" << frame.get_dl_dst() <<
" ";
272 os <<
"dl-src:" << frame.get_dl_src() <<
" ";
273 os <<
"nw-dst:" << frame.get_nw_dst() <<
" ";
274 os <<
"nw-src:" << frame.get_nw_src() <<
" ";
275 os <<
">" << std::endl;
Definition: caddress.h:152
void set_nw_dst(uint32_t dst)
Definition: farpv4frame.cc:237
farpv4frame(uint8_t *_data, size_t _datalen)
Definition: farpv4frame.cc:9
virtual size_t need_bytes() const
Definition: farpv4frame.cc:57
virtual bool complete() const
Definition: farpv4frame.cc:46
Definition: farpv4frame.h:21
virtual ~farpv4frame()
Definition: farpv4frame.cc:30
void set_nw_src(uint32_t src)
Definition: farpv4frame.cc:213
Definition: farpv4frame.h:39
Definition: caddress.h:415
virtual size_t payloadlen() const
Definition: farpv4frame.cc:88
virtual void payload_insert(uint8_t *data, size_t datalen)
Definition: farpv4frame.cc:71
Definition: farpv4frame.h:20
virtual void initialize()
Definition: farpv4frame.cc:38
virtual uint8_t * payload() const
Definition: farpv4frame.cc:80
Definition: farpv4frame.h:24
virtual void validate(uint16_t total_len=0) const
Definition: farpv4frame.cc:96