Приветствую всех.
Мне нужно определить локальный IP-адрес TCP-соединения в tdi-фильтре.
Сейчас я подробнее изложу, что меня интересует.
Есть такая простенькая программка — TCP-сервер
//слушаем все интерфейсы INADDR_ANY
bind(...);
listen(...);
//ждем подключения клиента
int connSocket= (int)accept(...);
sockaddr_in sock = {0};
int sizeSock = sizeof(sockaddr_in );
getsockname(connSocket, (sockaddr*)&sock, &sizeSock);
OutputDebugString("\nlocal IP: "), OutputDebugString(inet_ntoa(sock.sin_addr)), OutputDebugString("\n");
После выполнения ф-ции bind (или точнее во время ее выполнения) в tdi-фильтр приходит IRP_MJ_CREATE (создание адресного объекта) из которого я выгребаю локальный IP-адрес, в нашем случае получается он равен нулю, т.к. tcp-сервер слушает все интерфейсы.
А вот после того как к Tcp-серверу подключился клиент, в debug view мы видем следующее:
local IP: 192.168.2.99
Вопрос, где в драйвере можно отловить данный локальный адрес? Т.е. какой из TDI-запросов следует обработать, чтобы его получить?