1b867e84eSAndrey V. Elsukov /*- 2b867e84eSAndrey V. Elsukov * Copyright (c) 2016 Yandex LLC 3b867e84eSAndrey V. Elsukov * Copyright (c) 2016 Andrey V. Elsukov <ae@FreeBSD.org> 4b867e84eSAndrey V. Elsukov * All rights reserved. 5b867e84eSAndrey V. Elsukov * 6b867e84eSAndrey V. Elsukov * Redistribution and use in source and binary forms, with or without 7b867e84eSAndrey V. Elsukov * modification, are permitted provided that the following conditions 8b867e84eSAndrey V. Elsukov * are met: 9b867e84eSAndrey V. Elsukov * 10b867e84eSAndrey V. Elsukov * 1. Redistributions of source code must retain the above copyright 11b867e84eSAndrey V. Elsukov * notice, this list of conditions and the following disclaimer. 12b867e84eSAndrey V. Elsukov * 2. Redistributions in binary form must reproduce the above copyright 13b867e84eSAndrey V. Elsukov * notice, this list of conditions and the following disclaimer in the 14b867e84eSAndrey V. Elsukov * documentation and/or other materials provided with the distribution. 15b867e84eSAndrey V. Elsukov * 16b867e84eSAndrey V. Elsukov * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17b867e84eSAndrey V. Elsukov * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18b867e84eSAndrey V. Elsukov * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19b867e84eSAndrey V. Elsukov * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20b867e84eSAndrey V. Elsukov * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21b867e84eSAndrey V. Elsukov * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22b867e84eSAndrey V. Elsukov * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23b867e84eSAndrey V. Elsukov * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24b867e84eSAndrey V. Elsukov * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25b867e84eSAndrey V. Elsukov * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26b867e84eSAndrey V. Elsukov */ 27b867e84eSAndrey V. Elsukov 28b867e84eSAndrey V. Elsukov #ifndef _NETINET6_IP_FW_NPTV6_H_ 29b867e84eSAndrey V. Elsukov #define _NETINET6_IP_FW_NPTV6_H_ 30b867e84eSAndrey V. Elsukov 31b867e84eSAndrey V. Elsukov struct ipfw_nptv6_stats { 32b867e84eSAndrey V. Elsukov uint64_t in2ex; /* Int->Ext packets translated */ 33b867e84eSAndrey V. Elsukov uint64_t ex2in; /* Ext->Int packets translated */ 34b867e84eSAndrey V. Elsukov uint64_t dropped; /* dropped due to some errors */ 35b867e84eSAndrey V. Elsukov uint64_t reserved[5]; 36b867e84eSAndrey V. Elsukov }; 37b867e84eSAndrey V. Elsukov 38b867e84eSAndrey V. Elsukov typedef struct _ipfw_nptv6_cfg { 39b867e84eSAndrey V. Elsukov char name[64]; /* NPTv6 instance name */ 40b867e84eSAndrey V. Elsukov struct in6_addr internal; /* NPTv6 internal prefix */ 41*b2b56606SAndrey V. Elsukov union { 42b867e84eSAndrey V. Elsukov struct in6_addr external; /* NPTv6 external prefix */ 43*b2b56606SAndrey V. Elsukov char if_name[IF_NAMESIZE]; 44*b2b56606SAndrey V. Elsukov }; 45b867e84eSAndrey V. Elsukov uint8_t plen; /* Prefix length */ 46b867e84eSAndrey V. Elsukov uint8_t set; /* Named instance set [0..31] */ 47b867e84eSAndrey V. Elsukov uint8_t spare[2]; 48b867e84eSAndrey V. Elsukov uint32_t flags; 49*b2b56606SAndrey V. Elsukov #define NPTV6_DYNAMIC_PREFIX 1 /* Use dynamic external prefix */ 50b867e84eSAndrey V. Elsukov } ipfw_nptv6_cfg; 51b867e84eSAndrey V. Elsukov 52b867e84eSAndrey V. Elsukov #endif /* _NETINET6_IP_FW_NPTV6_H_ */ 53