… | |
… | |
56 | { |
56 | { |
57 | len -= hdrsize; |
57 | len -= hdrsize; |
58 | memmove ((void *)&(*this)[0], (void *)&(*this)[hdrsize], len); |
58 | memmove ((void *)&(*this)[0], (void *)&(*this)[hdrsize], len); |
59 | } |
59 | } |
60 | |
60 | |
|
|
61 | u16 ipv4_hdr_len () const |
|
|
62 | { |
|
|
63 | return ((*this)[0] & 15) << 2; |
|
|
64 | } |
|
|
65 | |
61 | void set (const net_packet &pkt) |
66 | void set (const net_packet &pkt) |
62 | { |
67 | { |
63 | len = pkt.len; |
68 | len = pkt.len; |
64 | memcpy (&((*this)[0]), &(pkt[0]), len); |
69 | memcpy (&((*this)[0]), &(pkt[0]), len); |
65 | } |
70 | } |
… | |
… | |
95 | struct data_packet : net_packet |
100 | struct data_packet : net_packet |
96 | { |
101 | { |
97 | u8 data_[MAXSIZE]; |
102 | u8 data_[MAXSIZE]; |
98 | }; |
103 | }; |
99 | |
104 | |
100 | inline |
105 | inline |
101 | u8 &net_packet::operator[] (u16 offset) const |
106 | u8 &net_packet::operator[] (u16 offset) const |
102 | { |
107 | { |
103 | return ((data_packet *)this)->data_[offset]; |
108 | return ((data_packet *)this)->data_[offset]; |
104 | } |
109 | } |
105 | |
110 | |
106 | inline |
111 | inline |
107 | u8 *net_packet::at (u16 offset) const |
112 | u8 *net_packet::at (u16 offset) const |
108 | { |
113 | { |
109 | return &((*this)[offset]); |
114 | return &((*this)[offset]); |
110 | } |
115 | } |
111 | |
116 | |