#linux #network-programming #linux-kernel
#linux #сетевое программирование #linux-ядро
Вопрос:
Я хотел бы включить временную метку полученных сетевых пакетов. Я обнаружил, что функция net_enable_timestamp() должна выполнять это для меня, но я не могу найти ее ни в CentOS, ни в ArchLinux. Но когда я выполняю:
# cat /proc/kallsyms | grep net_enable_timestamp
c126a330 T net_enable_timestamp
В исходном коде ядра из kernel.org он находится в linux / netdevice.h, но не в обоих дистрибутивах, упомянутых выше. Возможно ли это выполнить? Как?
Ответ №1:
Что плохого в включении SO_TIMESTAMP в сокете и доступе к временной метке последнего сообщения через вспомогательные данные?
В качестве альтернативы вы можете вызвать ioctl(socket, SIOCGSTAMP), как описано в socket(7)
Редактировать: глядя на исходный код ядра, кажется, что net_enable_timestamp() на самом деле вызывается косвенно, когда вы выполняете setsockopt(sock, SO_TIMESTAMP …
Итак, мой ответ отвечает на ваш вопрос 🙂
Комментарии:
1. да! вы правы! Я не знаю, почему я пропустил файлы .c, копаясь в исходном коде ядра и пытаясь решить свою проблему.