1276541Sdes/*
2276541Sdes * dns64/dns64.h - DNS64 module
3276541Sdes *
4276541Sdes * Copyright (c) 2009, Viag��nie. All rights reserved.
5276541Sdes *
6276541Sdes * This software is open source.
7276541Sdes *
8276541Sdes * Redistribution and use in source and binary forms, with or without
9276541Sdes * modification, are permitted provided that the following conditions
10276541Sdes * are met:
11276541Sdes *
12276541Sdes * Redistributions of source code must retain the above copyright notice,
13276541Sdes * this list of conditions and the following disclaimer.
14276541Sdes *
15276541Sdes * Redistributions in binary form must reproduce the above copyright notice,
16276541Sdes * this list of conditions and the following disclaimer in the documentation
17276541Sdes * and/or other materials provided with the distribution.
18276541Sdes *
19276541Sdes * Neither the name of the NLNET LABS nor the names of its contributors may
20276541Sdes * be used to endorse or promote products derived from this software without
21276541Sdes * specific prior written permission.
22276541Sdes *
23276541Sdes * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24276541Sdes * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
25276541Sdes * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26276541Sdes * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
27276541Sdes * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28276541Sdes * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29276541Sdes * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30276541Sdes * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31276541Sdes * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32276541Sdes * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33276541Sdes * POSSIBILITY OF SUCH DAMAGE.
34276541Sdes */
35276541Sdes
36276541Sdes/**
37276541Sdes * \file
38276541Sdes *
39276541Sdes * This file contains a module that performs DNS64 query processing.
40276541Sdes */
41276541Sdes
42276541Sdes#ifndef DNS64_DNS64_H
43276541Sdes#define DNS64_DNS64_H
44276541Sdes#include "util/module.h"
45276541Sdes
46276541Sdes/**
47276541Sdes * Get the dns64 function block.
48276541Sdes * @return: function block with function pointers to dns64 methods.
49276541Sdes */
50276541Sdesstruct module_func_block *dns64_get_funcblock(void);
51276541Sdes
52276541Sdes/** dns64 init */
53276541Sdesint dns64_init(struct module_env* env, int id);
54276541Sdes
55276541Sdes/** dns64 deinit */
56276541Sdesvoid dns64_deinit(struct module_env* env, int id);
57276541Sdes
58276541Sdes/** dns64 operate on a query */
59276541Sdesvoid dns64_operate(struct module_qstate* qstate, enum module_ev event, int id,
60276541Sdes		struct outbound_entry* outbound);
61276541Sdes
62276541Sdesvoid dns64_inform_super(struct module_qstate* qstate, int id,
63276541Sdes    struct module_qstate* super);
64276541Sdes
65276541Sdes/** dns64 cleanup query state */
66276541Sdesvoid dns64_clear(struct module_qstate* qstate, int id);
67276541Sdes
68276541Sdes/** dns64 alloc size routine */
69276541Sdessize_t dns64_get_mem(struct module_env* env, int id);
70276541Sdes
71276541Sdes#endif /* DNS64_DNS64_H */
72