Всем привет.
Ядро 2.4.20, встроенный линукс. В своем драйвере необходимо получить доступ к ARP заголовку, включая поля с MAC-адресами. Заглянул в include/linux/if_arp.h, но там в структуре arphdr как раз закоментарены эти поля (видимо потому, что размер аппаратных адресов может варьироваться в зависимости от технологии). Тогда попытался сделать так: определил в своем коде arp-вструктур:
struct arp_hdr
{
// все поля из include/linux/if_arp.h
// и добавляем нужное
unsigned char ar_sha[ETH_ALEN];
unsigned char ar_sip[4];
unsigned char ar_tha[ETH_ALEN];
unsigned char ar_tip[4];
}
int my_func(struct sk_buff *skb)
{
struct aro_hdr *arph;
arph = (struct arp_hdr *)skb->nh.raw;
// здесь распечатываю содержимое arp пакета, но получаю мусор.
}
Почему я получаю мусор и как правильно сделать то, что мне нужно?
Заранее спасибо!