Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: soyloqbuskas en 13 Octubre 2012, 10:58 am



Título: Interfaz de red activa en C
Publicado por: soyloqbuskas en 13 Octubre 2012, 10:58 am
¡Buenas a todos!

Estoy haciendo un programa en C para linux al cual le voy a pasar por parametro una interfaz de red (ej.: eth0) y quiero comprobar que dicha interfaz de red esta activa y lista para enviar o recibir datos....

¿Como hago esta comprobacion?

Gracias, un saludo.


Título: Re: Interfaz de red activa en C
Publicado por: soyloqbuskas en 14 Octubre 2012, 23:18 pm
Bueno, creo que ya he dado con la respuesta....

Código
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<sys/ioctl.h>
  4. #include<sys/types.h>
  5. #include<sys/socket.h>
  6. #include<unistd.h>
  7. #include <netinet/in.h>
  8. #include <arpa/inet.h>
  9. #include <net/if.h>
  10.  
  11. int main(int argc, char ** argv)
  12. {
  13.    int fd;
  14.    struct ifreq ifr;
  15.        int result=0;
  16.    char * iface ="";
  17.        iface= argv[1];
  18.  
  19.    fd = socket(AF_INET, SOCK_DGRAM, 0);
  20.  
  21.    ifr.ifr_addr.sa_family = AF_INET;
  22.  
  23.    strncpy(ifr.ifr_name , iface , IFNAMSIZ-1);
  24.  
  25.    if(ioctl(fd, SIOCGIFADDR, &ifr)==0){
  26.  
  27.             printf("Interfaz: %s -IP: %s\n" , iface , inet_ntoa(( (struct sockaddr_in *)&ifr.ifr_addr )->sin_addr) );
  28.    }
  29.    else printf("La interfaz no esta lista\n");
  30.    close(fd);
  31.    return 0;
  32. }
  33.  

Un saludo.