MB 원시 IP 패킷 처리 지원
송신/수신 데이터 경로에서 원시 IP 패킷 프레임을 지원하는 MB 미니포트 드라이버는 다음 지침을 준수해야 합니다.
RAW IP 패킷 처리를 위한 NBL(Net buffer list) 플래그
IPv4 패킷의 경우:
NET_BUFFER_LIST 구조체의 NblFlags 멤버는 NDIS_NBL_FLAGS_IS_IPV4 설정해야 합니다.
NET_BUFFER_LIST 구조체의 NetBufferListFrameType 멤버는 네트워크 바이트 순서로 0x0800(Ethertype IPv4)로 설정해야 합니다.
IPv6 패킷의 경우:
NET_BUFFER_LIST 구조체의 NblFlags 멤버는 NDIS_NBL_FLAGS_IS_IPV6 설정해야 합니다.
NET_BUFFER_LIST 구조체의 NetBufferListFrameType 멤버는 네트워크 바이트 순서로 0x86dd(Ethertype IPv6)로 설정해야 합니다.
미니포트 드라이버는 NdisSetNblFlag 매크로를 사용하여 순 버퍼 목록에 플래그를 설정할 수 있습니다. 다음 줄에서는 순 버퍼 목록에서 IPv4 패킷 플래그를 설정하는 방법을 보여 줍니다.
NdisSetNblFlag(pNbl, NDIS_NBL_FLAGS_IS_IPV4);
미니포트 드라이버는 NET_BUFFER_LIST_INFO 사용하여 순 버퍼 목록에서 정보를 얻고 설정할 수 있습니다. 다음 줄에서는 IPV4 패킷에 대한 네트워크 버퍼 목록에서 NetBufferListFrameType OOB을 수정하는 방법을 보여 줍니다.
Value = ConvertToNetworkByteOrder(0x0800);
NET_BUFFER_LIST_INFO(pNbl, NetBufferListFrameType) = Value;
송신 경로 처리
MB 서비스는 네트워크를 통해 보낼 미니포트 드라이버에 목록을 전달하기 전에 NBL에서 이러한 플래그를 설정합니다. 미니포트 드라이버는 입력 NBL의 플래그를 확인할 수 있습니다.
수신 경로 처리
미니포트 드라이버는 수신된 패킷에 대해 NBL을 MB 서비스에 전달하기 전에 NBL에 플래그를 설정해야 합니다.
미니포트 드라이버가 드라이버 개발 단계에서 원시 IP 패킷 처리를 구현하지만 DHCP 서버 스푸핑을 사용하도록 설정된 경우(EnableDhcp = 1) 미니포트 드라이버는 다음을 확인해야 합니다.
미니포트 드라이버의 DHCP 응답에 설정된 하드웨어 주소와 길이는 NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 구조의 미니포트 드라이버에서 지정한 CurrentMacAddress 및 MacAddressLength 멤버의 값과 일치해야 합니다.
미니포트 드라이버에서 DHCP 응답의 트랜잭션 ID( xid 멤버)는 클라이언트의 DHCP 요청 메시지에 설정된 트랜잭션 ID와 정확히 일치해야 합니다.