[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#564158: [libmlpcap-ocaml-dev] Invalid payload in callback function when reading a trace with pcap_loop



Johan Mazel a écrit :
> The size of pcap_payload is always -1. This means that we can never access to the data inside the packet.

Actually, pcap_payload embeds a pointer outside the ML heap (ML block
with unaligned_tag). I guess it is the libpcap receive buffer. As such,
it is not marshallable nor usable with regular string functions.
However, unsafe_* variants work fine (see pcap_loop.ml example for
example). If you want to use it as a regular string, you'll have to
unsafe_blit the contents into another OCaml string yourself.

I fond this quite inelegant at first. But it allows to use pcap_payload
as a bitstring without any string copy from libpcap buffer, with turned
out to be interesting, especially in a highly sollicitated application.


Best regards,

-- 
Stéphane




Reply to: