Пишу драйвер, максирующий аппаратуру под сетевую карту.
Работает это так:
1. В системе создается устройство /dev/tap0
2. На него завязывается модуль ethertap: "alias tap0 ethertap"
3. Драйвер открывает устройство /dev/tap0 и пишет/читает в него данные.
4. В route прописан маршрут к подсети 192.168.1.0 через tap0.
5. ifconfig'ом tap0 присовен адрес 192.168.1.1
Проблема: при попытке ping -с 1 192.168.1.2, в драйвер вместо ECHO-REQUEST-пакета от пинга, приходят 3 пакета вида (hex):
46 02 - особенности ethertap
ff ff ff ff ff ff - по идее - это МАС-адрес получателя
fe fd 00 00 00 - это мой МАС
08 - VERS & HLEN
06 - TOS - "межсетевое управление"
00 01 - длина
08 00 - ID фрагмента
06 04 - флаги и смещение фрагмента
00 - TTL
01 - протокол
fe fd - CRC заголовка
00 00 00 00 - адрес отправителя
с0 а8 01 01 - адрес получателя - 192.168.1.1 (это ж я!)
00 00 00 00 00 00 с0 a8 01 02 - типа данные
Что это за пакет такой и как на него реагировать?