Detetando a interface
[Home]
[Dissertação]
[Biba]
[Linux]
[Conjugue]
[br.ispell]
[axw3]
[uplink]
/*
Codigo elementar para deteccao da interface atraves da qual um
servico TCP foi acionado. Util para implementar servidores em
maquinas multidominio.
Este programa foi desenvolvido a partir da analise do fonte do
NCSA httpd.
*/
#include <netinet/in.h>
#include <stdio.h>
main(argc,argv)
int argc;
char *argv[];
{
struct sockaddr_in serv_addr;
int rc;
long my_addr;
int serv_addr_len;
unsigned char dot1,dot2,dot3,dot4;
serv_addr_len = sizeof(serv_addr);
rc = getsockname(0,(struct sockaddr *)&serv_addr,&serv_addr_len);
if (rc == 0) {
my_addr = ntohl(serv_addr.sin_addr.s_addr);
dot4 = my_addr & 0x000000ff;
dot3 = (my_addr >> 8) & 0x0000ff;
dot2 = (my_addr >> 16) & 0x00ff;
dot1 = my_addr >> 24;
printf("%u.%u.%u.%u",dot1,dot2,dot3,dot4);
}
else {
printf("unknown\n");
}
}