2008/3/28 Manuel Alejandro Cerón Estrada <[EMAIL PROTECTED]>:
> Hola a todos.
>
>  Tengo un equipo con varias interfaces de red y varias direcciones IP.
>  Necesito una forma de saber desde un programa, cuál de todas las
>  direcciones IP es aquella que concuerda con una determinada red, por
>  ejemplo 192.168.0.25.0/24. También necesito que esto funcione tanto en
>  Linux como en windows.
>
>  La solución que tengo hasta el momento es hacer un script que abra
>  ifconfig en linux e ipconfig en windows, examine las lineas y me diga
>  cual es la dirección que necesito. Pero me parece que esta es una
>  solución machetera.

En C también se puede. Por acá copié un código que encontré en un foro
(ahí está el enlace).

http://svn.arhuaco.org/svn/src/junk/trunk/network/ip-and-mac.c

En /usr/include/net/if.h está la estructura ifreq. Esta puede servir.

struct ifreq
  {
# define IFHWADDRLEN    6
# define IFNAMSIZ       IF_NAMESIZE
    union
      {
        char ifrn_name[IFNAMSIZ];       /* Interface name, e.g. "en0".  */
      } ifr_ifrn;

    union
      {
        struct sockaddr ifru_addr;
        struct sockaddr ifru_dstaddr;
        struct sockaddr ifru_broadaddr;
        struct sockaddr ifru_netmask;
        struct sockaddr ifru_hwaddr;
        short int ifru_flags;
        int ifru_ivalue;
        int ifru_mtu;
        struct ifmap ifru_map;
        char ifru_slave[IFNAMSIZ];      /* Just fits the size */
        char ifru_newname[IFNAMSIZ];
        __caddr_t ifru_data;
      } ifr_ifru;
  };

Atte,
N.-

-- 
http://arhuaco.org

_______________________________________________
Lista de correo de Colibri 
Colibri@listas.el-directorio.org
http://listas.el-directorio.org/cgi-bin/mailman/listinfo/colibri

El Directorio, el sitio del Software Libre  en Colombia:
http://www.el-directorio.org

Responder a