🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #13050

Re: Como consultar la tabla de ruta

#13050
From: Jose A
Date: Sat, 21 Apr 2001 03:13
90 lines
3548 bytes
Hola

On Thu, 19 Apr 2001 16:28:25 -0400, Alfredo Naime <anaime@leon.ciens.ucv.ve>
wrote:
>Gracias por tu ayuda, el #pragma pack() me funciono perfectamente. No habia
>escrito antes por problemas de trabajo pero te agradezco todo tu interes y
>tu pronta respuesta.
>Un saludo a todos...
>Alfredo.
>P.D. Si alguien conoce como obtener la direccion IP y la direccion fisica
>(MAC) ethernet de la maquina local desde un programa en C/C++, le
>agradeceria la
>informacion.

Prueba esto:

------------------------ cortar aqui --------------------------------------

#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <net/ethernet.h>
#include <net/if_arp.h>
#include <netinet/in.h>
#include <string.h>
#include <stdio.h>

#define DIS "eth0"

int main (int argc, char *argv[]) {
    struct ifreq tarjeta;
    int s, optval;
    unsigned char ip[4];
    unsigned char hw[6];
    
    # Creamos el socket
    if ((s = socket (AF_INET, SOCK_PACKET, htons(ETH_P_ARP))) < 0) {
	perror ("socket");
	exit (1);
    }
    
    # Permitimos el envio de mensajes broadcast
    optval = 1;
    if (setsockopt (s, SOL_SOCKET, SO_BROADCAST, &optval, sizeof(optval)) < 0) {
	perror ("setsockopt");
	exit (1);
    }

    # Obtenemos la MAC
    strcpy (tarjeta.ifr_name, DIS);
    # Para los valores SIOC#######, consultar el "/usr/include/bits/ioctls.h"
    if (ioctl(s, SIOCGIFHWADDR, &tarjeta) < 0) {
	perror ("ioctl");
	exit (1);
    }
            
    # La copiamos
    bcopy (&tarjeta.ifr_hwaddr.sa_data, &hw, 6);
    printf ("MAC: %X:%X:%X:%X:%X:%X\n", hw[0], hw[1], hw[2], hw[3], hw[4], hw[5]);
    
    # Ahora obtenemos la ip y....
    if (ioctl (s, SIOCGIFADDR, &tarjeta) < 0) {
	perror ("ioctl");
	exit (1);
    }
    # la copiamos
    bcopy (&tarjeta.ifr_addr.sa_data[2], &ip, 4);
    printf ("IP: %d.%d.%d.%d\n", ip[0], ip[1], ip[2], ip[3]);        
    
    # y recordando nuestra buena educaci�n cerramos el socket ;)
    close (s);
}

------------------------ cortar aqui --------------------------------------

P.D: Informaci�n obtenida del libro "protocolos de internet, Dise�o e
implementaci�n en sistemas UNIX" del a�o 1999, de la
 editorial RA-MA,
y de los autores, �ngel L�pez y Alejandro Novo.

espero que te sirva.

saludos.

>Hasta pronto...;)
>iCeCRaCKeR escribi� en mensaje ...
>>A tu primera pregunta ahora mismo no te puedo ayudar y a la otra yo que tu
>>me mirar�a la directiva #pragma pack(). Un saludo
>>
>>iCeCRaCKeR - icecracker@terra.es
Technical Details
Message-ID: <slrn9e1umu.ur.MAQUI000@localhost.localdomain>
Path: arc1-ca.pugleaf.net!newsfeed.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.cwix.com!newsfeed.bcn.ttd.net!news.bcn.ttd.net!MAQUI000
References: <9auodd$763l7$1@ID-81973.news.dfncis.de> <BzDA6.108828$YO6.1710374@telenews.teleline.es> <9bo2i5$a0u4s$1@ID-81973.news.dfncis.de>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,a567ac715dea76c4
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2001-04-21 05:50:22 PST
Path: arc1-ca.pugleaf.net!newsfeed.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.cwix.com!newsfeed.bcn.ttd.net!news.bcn.ttd.net!MAQUI000
From: MAQUI000@NOSPAM.teleline.es (Jose A)
Newsgroups: es.comp.os.linux.programacion
Subject: Re: Como consultar la tabla de ruta
Date: Sat, 21 Apr 2001 05:13:39 +0200
Organization: Telefonica Transmision de Datos
Lines: 90
Message-ID: <slrn9e1umu.ur.MAQUI000@localhost.localdomain>
References: <9auodd$763l7$1@ID-81973.news.dfncis.de> <BzDA6.108828$YO6.1710374@telenews.teleline.es> <9bo2i5$a0u4s$1@ID-81973.news.dfncis.de>
NNTP-Posting-Host: 213-99-135-196.uc.nombres.ttd.es
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
User-Agent: slrn/0.9.6.4 (Linux)