Я сделал модуль, который передает, но я не знаю, является ли пакет, который я передаю, пакетом ping или нет. Код показан ниже:модуль сетевого устройства, эквивалентный ping
icmp.type = 8;
icmp.code = 0;
icmp.un.echo.sequence = i;
ip4.protocol = 1; //for icmp protocol
ip4.frag_off = 0;
ip4.daddr = in_aton(procfs_buffer);
ip4.saddr = in_aton(ifr->ifr_addr.sa_data);
len = sizeof(data);
skb = dev_alloc_skb(1500);
skb->dev = __dev_get_by_name(&init_net,"wlan0");
skb_reserve(skb,NET_IP_ALIGN); // header of 2 bytes; increments tail and
// data pointer
skb->data = skb_put(skb,sizeof(len)); // increments all pointer or adds data
memcpy(data,skb->data,len);
skb->transport_header =skb_push(skb,sizeof(icmp));
memset(skb->transport_header,0,sizeof(struct icmphdr));
memcpy(skb->transport_header,&icmp,sizeof(struct icmphdr));
skb->network_header=skb_push(skb,sizeof(ip4));
memset(skb->network_header,0,sizeof(struct iphdr));
memcpy(skb->network_header,&ip4,sizeof(struct iphdr));
// printk("i::%d\n",i);
// skb->mac_header = skb_push(skb,6*sizeof(0xFF));
// memset(skb->mac_header,0xFF,6*sizeof(0xFF));
dev_queue_xmit(skb);
kfree(skb);
Как узнать, что это пакет ping, который я создаю и передаю? Далее я хочу получить пакет ping в ответ на мой пакет ping, который я передал. Я хотел бы использовать napi, но не помню никаких других предложений.
пожалуйста прочитал тему: режим приема Näpi here я мог нт понять, что делать по ссылке выше .....
Вы создали модуль ядра, но вы не знаете, что оно делает ... ? – Carpetsmoker
@Carpetsmoker Я знаю, что он делает (на данный момент его единственная передача), но я не уверен, передает ли его пакет ping или нет, и не знает, как получить пакеты и проверить, являются ли они ответом ping с другой стороны – karan421