2007-04-15 00:17:19 +04:00
|
|
|
/* $NetBSD: gethost.c,v 1.1.1.3 2007/04/14 20:17:31 martin Exp $ */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Copyright (C) 2002-2004 by Darren Reed.
|
|
|
|
*
|
|
|
|
* See the IPFILTER.LICENCE file for details on licencing.
|
|
|
|
*
|
|
|
|
* Id: gethost.c,v 1.3.2.2 2006/06/16 17:20:59 darrenr Exp
|
|
|
|
*/
|
2004-03-28 12:55:20 +04:00
|
|
|
|
|
|
|
#include "ipf.h"
|
|
|
|
|
|
|
|
int gethost(name, hostp)
|
|
|
|
char *name;
|
|
|
|
u_32_t *hostp;
|
|
|
|
{
|
|
|
|
struct hostent *h;
|
|
|
|
struct netent *n;
|
|
|
|
u_32_t addr;
|
|
|
|
|
|
|
|
if (!strcmp(name, "test.host.dots")) {
|
|
|
|
*hostp = htonl(0xfedcba98);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2005-02-08 09:52:59 +03:00
|
|
|
if (!strcmp(name, "<thishost>"))
|
|
|
|
name = thishost;
|
|
|
|
|
2004-03-28 12:55:20 +04:00
|
|
|
h = gethostbyname(name);
|
|
|
|
if (h != NULL) {
|
|
|
|
if ((h->h_addr != NULL) && (h->h_length == sizeof(addr))) {
|
|
|
|
bcopy(h->h_addr, (char *)&addr, sizeof(addr));
|
|
|
|
*hostp = addr;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
n = getnetbyname(name);
|
|
|
|
if (n != NULL) {
|
|
|
|
*hostp = (u_32_t)htonl(n->n_net & 0xffffffff);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return -1;
|
|
|
|
}
|