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