diff options
author | Ole Troan <ot@cisco.com> | 2019-12-19 11:55:54 +0100 |
---|---|---|
committer | Andrew Yourtchenko <ayourtch@gmail.com> | 2020-02-05 15:45:30 +0000 |
commit | 2c6639c695aebf0cd5ac74ad31fd331547fa0126 (patch) | |
tree | dd962dda017462107eca0b838c159ea1e19f7b8a /src/plugins/nat/dslite.h | |
parent | 72e31bc2d9b910147c09e1c329713fccc873a018 (diff) |
nat: move dslite to separate sub-plugin
Type: refactor
Change-Id: If3d9f16f3a06c10b354f1eef674e8db5f3c44de7
Signed-off-by: Ole Troan <ot@cisco.com>
Diffstat (limited to 'src/plugins/nat/dslite.h')
-rw-r--r-- | src/plugins/nat/dslite.h | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/src/plugins/nat/dslite.h b/src/plugins/nat/dslite.h deleted file mode 100644 index 65498eebd9d..00000000000 --- a/src/plugins/nat/dslite.h +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright (c) 2017 Cisco and/or its affiliates. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef __included_dslite_h__ -#define __included_dslite_h__ - -#include <vppinfra/bihash_8_8.h> -#include <vppinfra/bihash_16_8.h> -#include <vppinfra/bihash_24_8.h> -#include <nat/nat.h> - -typedef struct -{ - union - { - struct - { - ip6_address_t softwire_id; - ip4_address_t addr; - u16 port; - u8 proto; - u8 pad; - }; - u64 as_u64[3]; - }; -} dslite_session_key_t; - -/* *INDENT-OFF* */ -typedef CLIB_PACKED (struct -{ - snat_session_key_t out2in; - dslite_session_key_t in2out; - u32 per_b4_index; - u32 per_b4_list_head_index; - f64 last_heard; - u64 total_bytes; - u32 total_pkts; -}) dslite_session_t; -/* *INDENT-ON* */ - -typedef struct -{ - ip6_address_t addr; - u32 sessions_per_b4_list_head_index; - u32 nsessions; -} dslite_b4_t; - -typedef struct -{ - /* Main lookup tables */ - clib_bihash_8_8_t out2in; - clib_bihash_24_8_t in2out; - - /* Find a B4 */ - clib_bihash_16_8_t b4_hash; - - /* B4 pool */ - dslite_b4_t *b4s; - - /* Session pool */ - dslite_session_t *sessions; - - /* Pool of doubly-linked list elements */ - dlist_elt_t *list_pool; -} dslite_per_thread_data_t; - -typedef struct -{ - ip6_address_t aftr_ip6_addr; - ip4_address_t aftr_ip4_addr; - ip6_address_t b4_ip6_addr; - ip4_address_t b4_ip4_addr; - dslite_per_thread_data_t *per_thread_data; - snat_address_t *addr_pool; - u32 num_workers; - u32 first_worker_index; - u16 port_per_thread; - - /* counters/gauges */ - vlib_simple_counter_main_t total_b4s; - vlib_simple_counter_main_t total_sessions; - - /* node index */ - u32 dslite_in2out_node_index; - u32 dslite_in2out_slowpath_node_index; - u32 dslite_out2in_node_index; - - /* If set then the DSLite component behaves as CPE/B4 - * otherwise it behaves as AFTR */ - u8 is_ce; -} dslite_main_t; - -typedef struct -{ - u32 next_index; - u32 session_index; -} dslite_trace_t; - -typedef struct -{ - u32 next_index; -} dslite_ce_trace_t; - -#define foreach_dslite_error \ -_(IN2OUT, "valid in2out DS-Lite packets") \ -_(OUT2IN, "valid out2in DS-Lite packets") \ -_(CE_ENCAP, "valid CE encap DS-Lite packets") \ -_(CE_DECAP, "valid CE decap DS-Lite packets") \ -_(NO_TRANSLATION, "no translation") \ -_(BAD_IP6_PROTOCOL, "bad ip6 protocol") \ -_(OUT_OF_PORTS, "out of ports") \ -_(UNSUPPORTED_PROTOCOL, "unsupported protocol") \ -_(BAD_ICMP_TYPE, "unsupported icmp type") \ -_(UNKNOWN, "unknown") - -typedef enum -{ -#define _(sym,str) DSLITE_ERROR_##sym, - foreach_dslite_error -#undef _ - DSLITE_N_ERROR, -} dslite_error_t; - -extern dslite_main_t dslite_main; -extern vlib_node_registration_t dslite_in2out_node; -extern vlib_node_registration_t dslite_in2out_slowpath_node; -extern vlib_node_registration_t dslite_out2in_node; -extern vlib_node_registration_t dslite_ce_encap_node; -extern vlib_node_registration_t dslite_ce_decap_node; - -void dslite_init (vlib_main_t * vm); -void dslite_set_ce (dslite_main_t * dm, u8 set); -int dslite_set_aftr_ip6_addr (dslite_main_t * dm, ip6_address_t * addr); -int dslite_set_b4_ip6_addr (dslite_main_t * dm, ip6_address_t * addr); -int dslite_set_aftr_ip4_addr (dslite_main_t * dm, ip4_address_t * addr); -int dslite_set_b4_ip4_addr (dslite_main_t * dm, ip4_address_t * addr); -int dslite_add_del_pool_addr (dslite_main_t * dm, ip4_address_t * addr, - u8 is_add); -u8 *format_dslite_trace (u8 * s, va_list * args); -u8 *format_dslite_ce_trace (u8 * s, va_list * args); - -#endif /* __included_dslite_h__ */ - -/* - * fd.io coding-style-patch-verification: ON - * - * Local Variables: - * eval: (c-set-style "gnu") - * End: - */ |