Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com Message-ID: <3949E975.90737477@performanse.fr> Date: Fri, 16 Jun 2000 10:46:45 +0200 From: Bertrand Bourdon X-Mailer: Mozilla 4.7C-SGI [en] (X11; I; IRIX 6.3 IP32) X-Accept-Language: en MIME-Version: 1.0 To: cygwin AT sourceware DOT cygnus DOT com, "Remi DOT Lehn AT irin DOT univ-nantes DOT fr" Subject: Pb with ioctl() Content-Type: multipart/alternative; boundary="------------EC0BDEEC9BEEFE505448F653" --------------EC0BDEEC9BEEFE505448F653 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit I have a problem for compiling this function : Errors : gpublic.c: In function `get_hwaddr': gpublic.c:943: `SIOCGIFHWADDR' undeclared (first use in this function) gpublic.c:943: (Each undeclared identifier is reported only once gpublic.c:943: for each function it appears in.) gpublic.c:956: structure has no member named `ifr_hwaddr' gpublic.c:957: structure has no member named `ifr_hwaddr' gpublic.c:958: structure has no member named `ifr_hwaddr' gpublic.c:959: structure has no member named `ifr_hwaddr' gpublic.c:960: structure has no member named `ifr_hwaddr' gpublic.c:961: structure has no member named `ifr_hwaddr' Source code : int get_hwaddr(char *interface, char hwaddr[]) { int sd; struct ifreq req; sd = socket(AF_INET,SOCK_DGRAM,IPPROTO_IP); if (sd == -1) { perror("socket()"); return -1; } sprintf(req.ifr_name,"%s",interface); if (ioctl(sd,SIOCGIFHWADDR,&req) == -1) { perror("ioctl():SIOCGIFHWADDR"); return -1; } /* sprintf(hwaddr,"%02x:%02x:%02x:%02x:%02x:%02x", (int)(req.ifr_hwaddr.sa_data[0] & 0xff), (int)(req.ifr_hwaddr.sa_data[1] & 0xff), (int)(req.ifr_hwaddr.sa_data[2] & 0xff), (int)(req.ifr_hwaddr.sa_data[3] & 0xff), (int)(req.ifr_hwaddr.sa_data[4] & 0xff), (int)(req.ifr_hwaddr.sa_data[5] & 0xff)); */ sprintf(hwaddr,"%d%d%d%d%d%d", (int)(req.ifr_hwaddr.sa_data[0] & 0xff), (int)(req.ifr_hwaddr.sa_data[1] & 0xff), (int)(req.ifr_hwaddr.sa_data[2] & 0xff), (int)(req.ifr_hwaddr.sa_data[3] & 0xff), (int)(req.ifr_hwaddr.sa_data[4] & 0xff), (int)(req.ifr_hwaddr.sa_data[5] & 0xff)); return 0; How can I make a good compilation ? -- Bertrand Bourdon - Chef de Projet Informatique PerformanSe S.A., l'évaluation des compétences et des comportements BP 703 - 44481 Carquefou Cedex - Tél. : 02 28 01 55 13 http://www.performanse.fr/ Mailto:bertrand DOT bourdon AT performanse DOT fr --------------EC0BDEEC9BEEFE505448F653 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit I have a problem for compiling this function :

Errors :
gpublic.c: In function `get_hwaddr':
gpublic.c:943: `SIOCGIFHWADDR' undeclared (first use in this function)
gpublic.c:943: (Each undeclared identifier is reported only once
gpublic.c:943: for each function it appears in.)
gpublic.c:956: structure has no member named `ifr_hwaddr'
gpublic.c:957: structure has no member named `ifr_hwaddr'
gpublic.c:958: structure has no member named `ifr_hwaddr'
gpublic.c:959: structure has no member named `ifr_hwaddr'
gpublic.c:960: structure has no member named `ifr_hwaddr'
gpublic.c:961: structure has no member named `ifr_hwaddr'
 

Source code :
int get_hwaddr(char *interface, char hwaddr[]) {

 int sd;

 struct ifreq req;
 sd = socket(AF_INET,SOCK_DGRAM,IPPROTO_IP);
 if (sd == -1) {
  perror("socket()");
  return -1;
 }
 sprintf(req.ifr_name,"%s",interface);
 if (ioctl(sd,SIOCGIFHWADDR,&req) == -1)  {
  perror("ioctl():SIOCGIFHWADDR");
  return -1;
 }
/*
 sprintf(hwaddr,"%02x:%02x:%02x:%02x:%02x:%02x",
(int)(req.ifr_hwaddr.sa_data[0] & 0xff),
(int)(req.ifr_hwaddr.sa_data[1] & 0xff),
(int)(req.ifr_hwaddr.sa_data[2] & 0xff),
(int)(req.ifr_hwaddr.sa_data[3] & 0xff),
(int)(req.ifr_hwaddr.sa_data[4] & 0xff),
(int)(req.ifr_hwaddr.sa_data[5] & 0xff)); */
  sprintf(hwaddr,"%d%d%d%d%d%d",
 (int)(req.ifr_hwaddr.sa_data[0] & 0xff),
 (int)(req.ifr_hwaddr.sa_data[1] & 0xff),
 (int)(req.ifr_hwaddr.sa_data[2] & 0xff),
 (int)(req.ifr_hwaddr.sa_data[3] & 0xff),
 (int)(req.ifr_hwaddr.sa_data[4] & 0xff),
 (int)(req.ifr_hwaddr.sa_data[5] & 0xff));
 return 0;
 

How can I make a good compilation ?

-- 
Bertrand Bourdon - Chef de Projet Informatique
PerformanSe S.A., l'évaluation des compétences et des comportements 
BP 703  - 44481 Carquefou Cedex - Tél. : 02 28 01 55 13 
http://www.performanse.fr/ Mailto:bertrand DOT bourdon AT performanse DOT fr
  --------------EC0BDEEC9BEEFE505448F653--