тип сетевого фильтра skb-> sk - PullRequest
       21

тип сетевого фильтра skb-> sk

0 голосов
/ 04 февраля 2019

Я пытаюсь написать функцию NF_INET_LOCAL_OUT netfilter.Одним из аргументов функции является sk_buff* skb - буфер сокета, и эта структура имеет sk, который должен быть сокетом, из которого исходит этот буфер.
Оказывается, однако, что в пакете syn-ack, skb->sk - это не фактический struct sock, а struct request_sock, который вместо этого представляет собой «мини-сокет», созданный для сервера запроса соединения.
struct request_sock имеет элемент sk, который указывает на оригиналслушающий сокет, но дело в том, что функция netfilter не знает, является ли skb->sk действительным struct sock или struct request_sock.Функция netfilter, которую я пишу, должна знать адрес этого исходного сокета прослушивания.
Единственный способ, которым я мог бы подумать, это конкретно проверить, является ли это пакет syn-ack, а затем привести skb->sk к * 1016.* но это кажется действительно хрупким.

...