PDA

View Full Version : [C++] ARP protocol


Teo@Unix
15-03-2010, 08:09
Ciao,
secondo voi per usare il protocollo ARP, che devo usare?

dando un occhio ai sorgenti di linux, mi sembra sia parecchio lunga la cosa :D .
altrimenti usare qualche libreria?
Qualcuno ha una idea più chiara della mia di come fare?
Grazie.

Teo@Unix
15-03-2010, 20:09
....

allora, dovrebbe essere come per gli altri protocolli.
Ho iniziato a scrivere che è sempre un buon traguardo :) ...

questo è ad esempio un costruttore che inizializza una socket ARP, secondo voi come posso organizzare l'invio e la ricezione? ...

di default l'aggiornamento della cache è ogni tot minuti a seconda dell'os....

ARPsocket::ARPsocket()
{
//Inizialize struct sockaddr
memset(&addr,0,sizeof(sockaddr));
memcpy(addr.sa_data,default_interface,sizeof(addr.sa_data));

//Create ARP socket
fd = socket(PF_PACKET,SOCK_PACKET,htons(ETH_P_ARP));

//Bind to the ARP socket
bind(fd,&addr,sizeof(addr));

//Get my ethernet address
memset(&addr_device,0,sizeof(addr_device));
strncpy(addr_device.ifr_name,default_interface,sizeof(default_interface));
ioctl(fd,SIOCGIFHWADDR,&addr_device);
memcpy(&hwaddr,addr_device.ifr_hwaddr.sa_data,ETHER_ADDR_LEN);
}

l'invio lo faccio con sendto...
imposterei degli invii + timeout per la ricezione umh?
sono sulla retta via almeno?

Altra cosetta, per aggiornare la cache ARP che uso? Stò cercando la procedura in Co C++ ma non la trovo...