Newsgroup: it.comp.os.linux.development
Titolo: Indirizzo scheda rete

Devo assolutamente ottenere con una procedura in C o al limite con
un comando di sistema operativo (cioč eseguibile da console) l'indirizzo
della scheda di rete. (conosco la stessa procedura su macchine Hp-UX
ma le chiamate a sistema non corrispondono e non mi sembra possibile
seguire la stessa via). Se qualcuno conosce come fare mi eviterebbe
ricerche e studi inutili.
Grazie mille.
Paolo



 della scheda di rete. (conosco la stessa procedura su macchine Hp-UX
ifconfig?
Ciao
 David
-- 
<d.santinoli presso mi. flashnet. it>

ricerche e studi inutili.
ifconfig eth0 | grep HWaddr | sed -e "s/.* //g"
Leonardo
".signature": bad command or file name

Grazie a tutti per l'aiuto, in effetti mi serviva l'ethernet address
(indirizzo fisico) e
non l'IP address.
Comunque ifconfig non basta, perchč funziona solo da superutente, devo
per forza usare il codice con ioctl().
Se qualcuno sa dove recuperare il sorgente di ifconfig sarei a posto, oppure
se qualcuno ha un pezzo di codice che fa la cosa richiesta sarebbe l'ideale.
Non č che ricercarli da me sarebbe una cosa inutile, anzi, ma č che
contemporaneamente
avrei altre 5 o 6 cose da fare e questa non č la piů urgente.
Grazie per l'aiuto.
Paolo

se qualcuno ha un pezzo di codice che fa la cosa richiesta sarebbe l'ideale.
forse il codice seguente ti puo' aiutare:
per gli include giusti vedere le man pages...
int main(...)
{
   ...
   if((sd=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)))<0)
   {
      perror("socket");
      return -1;
   }
   if(rileva_mac("eth0", mac_ethernet, sd)<0)
   {
      perror("rileva mac ethernet");
      return -1;
   }
   close(sd);
	...
}
int rileva_mac(char *device, unsigned char *mac_address, int sd)
{
   struct ifreq ifr;
   strncpy(ifr.ifr_name, device, sizeof(ifr.ifr_name));
   if(ioctl(sd, SIOCGIFHWADDR, &ifr)<0)
   {
      perror("SIOCGIFHWADDR");
      return -1;
   }
   memcpy(mac_address, ifr.ifr_hwaddr.sa_data, ETH_ALEN);
   return 1;
}
Saluti.
-- 
Giampaolo Fresi Roglia
Proud Member Of Linux Gihad
http://media.dsi.unimi.it/~linux

   if((sd=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)))<0)
chiedo scusa  perche' la chiamata  qui sopra  non la puo'  fare l'utente
normale, comunque questa  andrebbe sostituita da una  normale chiamata a
socket quindi:
if((sd=socket(PF_INET, SOCK_STREAM, 0))<0)
...


 per forza usare il codice con ioctl().
Davvero?
P.S. Ma sei il fratello del calciatore? (scherzo)
-- 
  /Kinkie
Se sulla scatola c'e` scritto "Per windows 95 e superiori", dovrebbe
funzionare sotto Linux, vero?

 per forza usare il codice con ioctl().
ifconfig funziona perfettamente anche da utente normale, solo che non e' nel
path
Prova con /sbin/ifconfig
C'e' anche l'indirizzo HW
Ciao
LG
 -- 
**************************************************************************
Leandro Gelasi
V Year Computer Science Engineering at Siena University
email : 
gela...@lucy.ing.unisi.it
Gilles Villeneuve will live forever
**************************************************************************

Ok, ho commesso un "errore di sbaglio" riguardo a ifconfig da superutente.
No, sono il fratello del cabarettista e comico ....
Grazie per il codice, lo proverň appena ho tempo.
Saluti a tutti
Paolo