nat64stl.h revision 346211
1191783Srmacklem/*-
2191783Srmacklem * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3191783Srmacklem *
4191783Srmacklem * Copyright (c) 2015-2019 Yandex LLC
5191783Srmacklem * Copyright (c) 2015-2019 Andrey V. Elsukov <ae@FreeBSD.org>
6191783Srmacklem *
7191783Srmacklem * Redistribution and use in source and binary forms, with or without
8191783Srmacklem * modification, are permitted provided that the following conditions
9191783Srmacklem * are met:
10191783Srmacklem *
11191783Srmacklem * 1. Redistributions of source code must retain the above copyright
12191783Srmacklem *    notice, this list of conditions and the following disclaimer.
13191783Srmacklem * 2. Redistributions in binary form must reproduce the above copyright
14191783Srmacklem *    notice, this list of conditions and the following disclaimer in the
15191783Srmacklem *    documentation and/or other materials provided with the distribution.
16191783Srmacklem *
17191783Srmacklem * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18191783Srmacklem * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19191783Srmacklem * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20191783Srmacklem * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21191783Srmacklem * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22191783Srmacklem * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23191783Srmacklem * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24191783Srmacklem * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25191783Srmacklem * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26191783Srmacklem * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27191783Srmacklem *
28191783Srmacklem * $FreeBSD: stable/11/sys/netpfil/ipfw/nat64/nat64stl.h 346211 2019-04-14 12:35:58Z ae $
29191783Srmacklem */
30191783Srmacklem
31191783Srmacklem#ifndef	_IP_FW_NAT64STL_H_
32191783Srmacklem#define	_IP_FW_NAT64STL_H_
33191783Srmacklem
34191783Srmacklem#include "ip_fw_nat64.h"
35191783Srmacklem#include "nat64_translate.h"
36207785Srmacklem
37191783Srmacklemstruct nat64stl_cfg {
38191783Srmacklem	struct named_object	no;
39191783Srmacklem
40191783Srmacklem	uint16_t		map64;	/* table with 6to4 mapping */
41191783Srmacklem	uint16_t		map46;	/* table with 4to6 mapping */
42191783Srmacklem
43191783Srmacklem	struct nat64_config	base;
44191783Srmacklem#define	NAT64STL_KIDX		0x0100
45191783Srmacklem#define	NAT64STL_46T		0x0200
46191783Srmacklem#define	NAT64STL_64T		0x0400
47191783Srmacklem	/* flags to pass to userland */
48191783Srmacklem#define	NAT64STL_FLAGSMASK	(NAT64_LOG | NAT64_ALLOW_PRIVATE)
49191783Srmacklem	char			name[64];
50191783Srmacklem};
51191783Srmacklem
52193066SjamieVNET_DECLARE(uint16_t, nat64stl_eid);
53191783Srmacklem#define	V_nat64stl_eid	VNET(nat64stl_eid)
54191783Srmacklem#define	IPFW_TLV_NAT64STL_NAME	IPFW_TLV_EACTION_NAME(V_nat64stl_eid)
55191783Srmacklem
56191783Srmacklemint ipfw_nat64stl(struct ip_fw_chain *chain, struct ip_fw_args *args,
57191783Srmacklem    ipfw_insn *cmd, int *done);
58191783Srmacklem
59191783Srmacklem#endif
60191783Srmacklem
61191783Srmacklem