1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use std::net::Ipv4Addr;
use L4Checksum;
impl <'p>L4Checksum for PayloadData<'p> {
fn checksum_ipv4(&mut self, _source: &Ipv4Addr, _destination: &Ipv4Addr) -> () {
}
}
pub struct PayloadData<'p> {
pub data: &'p mut[u8],
}
impl <'p>pnet_macros_support::packet::Packet for PayloadData<'p> {
fn packet(& self) -> & [u8] { &self.data[..] }
fn payload(& self) -> & [u8] { &self.data[..] }
}
#[macro_export]
macro_rules! payload {
($value:expr, $buf:expr) => {{
let buf_len = $buf.len();
let pdata = PayloadData {
data : &mut$buf[buf_len - $value.len()..],
};
for i in 0..$value.len() {
pdata.data[i] = $value[i];
}
(pdata, None as Option<&u16>)
}};
}