Как узнать ipv4 или ipv6 из буфера пакетов NDIS?

Я получаю пакеты из подпрограммы SendnetBufferList фильтра NDIS. Внутри этого я принимаю буфер после фильтрации этого буфера.

В случае NdisMedium802_3 средний, получая пакет с Ethernet-заголовок (Кадры Ethernet). Так что я могу легко анализировать ipv4 & ipv6 используя заголовок Ethernet.

PPF_ETHERNET_HEADER pEthHeader = (PPF_ETHERNET_HEADER) pBuffer;

filter.nEthProto = pEthHeader->nProto;

System::MCopyMemory(&filter.aSrcMac, &pEthHeader->aSrcMac,
sizeof(ETH_MAC_ADDRESS));

System::MCopyMemory(&filter.aDstMac, &pEthHeader->aDstMac,
sizeof(ETH_MAC_ADDRESS));

if (filter.nEthProto == ETH_PROTO_IPV4) {

PPF_IPV4_HEADER pIpHeader = (PPF_IPV4_HEADER) (pBuffer +
sizeof(PF_ETHERNET_HEADER));

/* IPV4 operations */

}

else if (filter.nEthProto == ETH_PROTO_IPV6)
{

PPF_IPV6_HEADER pIpHeader = (PPF_IPV6_HEADER) (pBuffer +
sizeof(PF_ETHERNET_HEADER));

/* IPV6 operations */
}

Это работает нормально. Далее я прилагаю NdisMediumWirelessWan / NdisMediumIP Средняя . Это отправка RAW IP кадры без заголовка Ethernet.

Мои вопросы, как я могу проверить NDIS буфер содержит ipv4 или же ipv6 без заголовка Ethernet ? а также как я могу установить MAC-адрес ?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]