blob: fb0b04b8df8f1c4f46bb1d12dc02dff538f747e5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
/* $FreeBSD: src/contrib/ipfilter/lib/gethost.c,v 1.3.10.1.6.1 2010/12/21 17:09:25 kensmith 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 $
*/
#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;
}
if (!strcmp(name, "<thishost>"))
name = thishost;
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;
}
|