aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/npt66/npt66.h
diff options
context:
space:
mode:
authorOle Troan <otroan@employees.org>2023-08-17 13:36:08 +0200
committerOle Troan <otroan@employees.org>2023-08-25 09:15:32 +0200
commit6ee3aa41c395d036c8c79a3681cc5ee6bc6fceb9 (patch)
treefcbb367a65e0c9fc932f62fcaf2d46ff622ba9dc /src/plugins/npt66/npt66.h
parentecb62d2e5d0af14e2de143a729abdf35e132e5d5 (diff)
npt66: network prefix translation for ipv6
This is the initial commit of a NPTv6 (RFC6296) implementation for VPP. It's restricted to a single internal to external binding and runs as an output/input feature on the egress interface. Type: feature Change-Id: I0e3497af97f1ebd99377b84dbf599ecea935ca24 Signed-off-by: Ole Troan <otroan@employees.org>
Diffstat (limited to 'src/plugins/npt66/npt66.h')
-rw-r--r--src/plugins/npt66/npt66.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/plugins/npt66/npt66.h b/src/plugins/npt66/npt66.h
new file mode 100644
index 00000000000..428dadb1672
--- /dev/null
+++ b/src/plugins/npt66/npt66.h
@@ -0,0 +1,28 @@
+// SPDX-License-Identifier: Apache-2.0
+// Copyright(c) 2023 Cisco Systems, Inc.
+
+#include <vlib/vlib.h>
+#include <vnet/ip/ip6_packet.h>
+
+typedef struct
+{
+ u32 sw_if_index;
+ ip6_address_t internal;
+ ip6_address_t external;
+ u8 internal_plen;
+ u8 external_plen;
+ uword delta;
+} npt66_binding_t;
+typedef struct
+{
+ u32 *interface_by_sw_if_index;
+ npt66_binding_t *bindings;
+ u16 msg_id_base;
+} npt66_main_t;
+
+extern npt66_main_t npt66_main;
+
+int npt66_binding_add_del (u32 sw_if_index, ip6_address_t *internal,
+ int internal_plen, ip6_address_t *external,
+ int external_plen, bool is_add);
+npt66_binding_t *npt66_interface_by_sw_if_index (u32 sw_if_index);