Вы создали указатели на struct timeval
и struct pkthdr
, но на самом деле вы не выделили никакой памяти, на которую можно указать, поэтому вы вызываете неопределенное поведение, когда пытаетесь присвоить значение hdr->sec
и hdr->usec
Вы также передаете неправильный тип gettimeofday
, поскольку вы передаете struct timeval **
, а не struct timeval
.
Попробуйте вместо этого создать фактические структуры вместо указателей на них:
struct pkthdr hdr;
struct timeval tm;
gettimeofday(&tm, NULL);
hdr.sec = htonl(tm.tv_sec);
hdr.usec = htonl(tm.tv_usec);
Убедитесь, что данные в hdr.sec
и hdr.usec
действительно соответствуют вашим ожиданиям, поскольку это может быть неверно. У меня есть некоторые оговорки по поводу использования htonl
, так как это относится к 32-битным данным, в то время как ваш ожидаемый результат - 64 бит.