summaryrefslogtreecommitdiffstats
path: root/lib/gethost.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gethost.c')
-rw-r--r--lib/gethost.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/gethost.c b/lib/gethost.c
new file mode 100644
index 0000000..d97766f
--- /dev/null
+++ b/lib/gethost.c
@@ -0,0 +1,42 @@
+/*
+ * 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;
+}
OpenPOWER on IntegriCloud