summaryrefslogtreecommitdiff
path: root/gresolv/gresolv.h
blob: 5a98e8c2d5745723c36e1033aed01e41d984de8a (plain)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*
 *
 *  Resolver library with GLib integration
 *
 *  Copyright (C) 2009-2010  Intel Corporation. All rights reserved.
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 */

#ifndef __G_RESOLV_H
#define __G_RESOLV_H

#include <stdint.h>

#include <glib.h>

#ifdef __cplusplus
extern "C" {
#endif

struct _GResolv;

typedef struct _GResolv GResolv;

typedef enum {
	G_RESOLV_RESULT_STATUS_SUCCESS,
	G_RESOLV_RESULT_STATUS_ERROR,
	G_RESOLV_RESULT_STATUS_NO_RESPONSE,
	G_RESOLV_RESULT_STATUS_FORMAT_ERROR,
	G_RESOLV_RESULT_STATUS_SERVER_FAILURE,
	G_RESOLV_RESULT_STATUS_NAME_ERROR,
	G_RESOLV_RESULT_STATUS_NOT_IMPLEMENTED,
	G_RESOLV_RESULT_STATUS_REFUSED,
} GResolvResultStatus;

typedef void (*GResolvResultFunc)(GResolvResultStatus status,
					char **results, gpointer user_data);

typedef void (*GResolvDebugFunc)(const char *str, gpointer user_data);

GResolv *g_resolv_new(int index);

GResolv *g_resolv_ref(GResolv *resolv);
void g_resolv_unref(GResolv *resolv);

void g_resolv_set_debug(GResolv *resolv,
				GResolvDebugFunc func, gpointer user_data);

gboolean g_resolv_add_nameserver(GResolv *resolv, const char *address,
					uint16_t port, unsigned long flags);
void g_resolv_flush_nameservers(GResolv *resolv);

guint g_resolv_lookup_hostname(GResolv *resolv, const char *hostname,
				GResolvResultFunc func, gpointer user_data);

gboolean g_resolv_cancel_lookup(GResolv *resolv, guint tag);

#ifdef __cplusplus
}
#endif

#endif /* __G_RESOLV_H */