On 2017-01-31 at 23:31:34 +0100, Vadim Kochan <vadi...@gmail.com> wrote: > Add pcap_get_tstamp(...) function to get packet's timestamp considering > different packet types & bytes order. > > Signed-off-by: Vadim Kochan <vadi...@gmail.com> > --- > pcap_io.h | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 53 insertions(+) > > diff --git a/pcap_io.h b/pcap_io.h > index 4e41362..7bf5fe6 100644 > --- a/pcap_io.h > +++ b/pcap_io.h > @@ -373,6 +373,59 @@ static inline void pcap_set_length(pcap_pkthdr_t *phdr, > enum pcap_type type, u32 > } > } > > +static inline void pcap_get_tstamp(pcap_pkthdr_t *phdr, enum pcap_type type, > + struct timeval *tv)
This should take a struct timespec in order to retain nanosecond precision. > +{ > + switch (type) { > + case DEFAULT: > + case DEFAULT_LL: > + tv->tv_sec = phdr->ppo.ts.tv_sec; > + tv->tv_usec = phdr->ppo.ts.tv_usec; > + break; > + > + case DEFAULT_SWAPPED: > + case DEFAULT_LL_SWAPPED: > + tv->tv_sec = ___constant_swab32(phdr->ppo.ts.tv_sec); > + tv->tv_usec = ___constant_swab32(phdr->ppo.ts.tv_usec); > + break; > + > + case NSEC: > + case NSEC_LL: > + tv->tv_sec = phdr->ppn.ts.tv_sec; > + tv->tv_usec = phdr->ppn.ts.tv_nsec / 1000; > + break; > + > + case NSEC_SWAPPED: > + case NSEC_LL_SWAPPED: > + tv->tv_sec = ___constant_swab32(phdr->ppn.ts.tv_sec); > + tv->tv_usec = ___constant_swab32(phdr->ppn.ts.tv_nsec) / 1000; > + break; > + > + case KUZNETZOV: > + tv->tv_sec = phdr->ppk.ts.tv_sec; > + tv->tv_usec = phdr->ppk.ts.tv_usec; > + break; > + > + case KUZNETZOV_SWAPPED: > + tv->tv_sec = ___constant_swab32(phdr->ppk.ts.tv_sec); > + tv->tv_usec = ___constant_swab32(phdr->ppk.ts.tv_usec); > + break; > + > + case BORKMANN: > + tv->tv_sec = phdr->ppb.ts.tv_sec; > + tv->tv_usec = phdr->ppb.ts.tv_nsec / 1000; > + break; > + > + case BORKMANN_SWAPPED: > + tv->tv_sec = ___constant_swab32(phdr->ppb.ts.tv_sec); > + tv->tv_usec = ___constant_swab32(phdr->ppb.ts.tv_nsec) / 1000; > + break; > + > + default: > + bug(); > + } > +} > + > static inline u32 pcap_get_hdr_length(pcap_pkthdr_t *phdr, enum pcap_type > type) > { > switch (type) { > -- > 2.11.0 > -- You received this message because you are subscribed to the Google Groups "netsniff-ng" group. To unsubscribe from this group and stop receiving emails from it, send an email to netsniff-ng+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.