Каков правильный метод доступа к данным IP и TCP из пакета, поставленного в очередь в сетевом фильтре? - PullRequest
0 голосов
/ 24 января 2019

Я пишу код для приема TCP-подключений на любом порту (без открытия и прослушивания на всех портах), помещая пакеты SYN в пространство пользователя через nftables, затем привязывая сокет рандеву кпримите соединение, прежде чем принять пакет SYN.Похоже, это будет работать (хотя, если есть более простая альтернатива, пожалуйста, скажите мне!).

Но я не могу найти документы или примеры того, как получить доступ к различным полям пакета TCP / IP.Я использую libmnl, и моя программа основана на слегка измененных примерах / netfilter / nf-queue.c.Когда я получаю доступ и выгружаю PAYLOAD, он выглядит как пакет TCP, и я могу вытащить порт назначения путем peek в буфере (более или менее).Тем не менее, я хотел бы получить доступ к полям пакета надлежащим образом.

Есть ли документация, FAQ или пример кода, который может перейти от struct nlmsghdr * к элементу PAYLOAD к указателю пакета TCP, что позволит мне получить доступ к таким вещам, как sport, dport, флаги и т. д.?

...