summaryrefslogtreecommitdiffstats
path: root/extras/deprecated
diff options
context:
space:
mode:
authorDamjan Marion <damarion@cisco.com>2020-05-07 09:49:27 +0200
committerFlorin Coras <florin.coras@gmail.com>2020-05-07 16:47:33 +0000
commit5505ee8904fafc7c1f017f88853f80a616784cf2 (patch)
tree6d72986511428f33236dd950559b0f3618d8ac19 /extras/deprecated
parent72db664c76fe3e4fb23020b9a191017c4ea4cb69 (diff)
misc: deprecate elftool
Type: make Change-Id: I34fec1c40ef660177c266517eaf41d60827609f4 Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'extras/deprecated')
-rw-r--r--extras/deprecated/elftool/CMakeLists.txt17
-rw-r--r--extras/deprecated/elftool/dir.dox19
-rw-r--r--extras/deprecated/elftool/elftool.c464
3 files changed, 500 insertions, 0 deletions
diff --git a/extras/deprecated/elftool/CMakeLists.txt b/extras/deprecated/elftool/CMakeLists.txt
new file mode 100644
index 00000000000..d85c2b56c59
--- /dev/null
+++ b/extras/deprecated/elftool/CMakeLists.txt
@@ -0,0 +1,17 @@
+# Copyright (c) 2018 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.
+
+add_vpp_executable(elftool
+ SOURCES elftool.c
+ LINK_LIBRARIES vppinfra
+)
diff --git a/extras/deprecated/elftool/dir.dox b/extras/deprecated/elftool/dir.dox
new file mode 100644
index 00000000000..40426e04df7
--- /dev/null
+++ b/extras/deprecated/elftool/dir.dox
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2016 Cisco and/or its affiliates.
+ * Copyright (c) 2016 Comcast Cable Communications Management, LLC.
+ *
+ * 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.
+ */
+/** @dir
+ * @brief VPP instrastructure tools.
+ */
diff --git a/extras/deprecated/elftool/elftool.c b/extras/deprecated/elftool/elftool.c
new file mode 100644
index 00000000000..e808c619da8
--- /dev/null
+++ b/extras/deprecated/elftool/elftool.c
@@ -0,0 +1,464 @@
+/*
+ * Copyright (c) 2015 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.
+ */
+/*
+ Copyright (c) 2008 Eliot Dresselhaus
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include <vppinfra/elf.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#ifndef CLIB_UNIX
+#error "unix only"
+#endif
+
+typedef struct {
+ elf_main_t elf_main;
+ char * input_file;
+ char * output_file;
+ char * set_interpreter;
+ char * set_rpath;
+ int unset_rpath;
+ int verbose;
+ int quiet;
+ int allow_elf_shared;
+ /* for use in the optimized / simplified case */
+ u64 file_size;
+ u64 interpreter_offset;
+ u64 rpath_offset;
+} elf_tool_main_t;
+
+static clib_error_t * elf_set_interpreter (elf_main_t * em,
+ elf_tool_main_t * tm)
+{
+ elf_segment_t * g;
+ elf_section_t * s;
+ clib_error_t * error;
+ char * interp = tm->set_interpreter;
+
+ switch (em->first_header.file_type)
+ {
+ case ELF_EXEC:
+ break;
+
+ case ELF_SHARED:
+ if (tm->allow_elf_shared)
+ break;
+ /* Note flowthrough */
+ default:
+ return clib_error_return (0, "unacceptable file_type");
+ }
+
+ vec_foreach (g, em->segments)
+ {
+ if (g->header.type == ELF_SEGMENT_INTERP)
+ break;
+ }
+
+ if (g >= vec_end (em->segments))
+ return clib_error_return (0, "interpreter not found");
+
+ if (g->header.memory_size < 1 + strlen (interp))
+ return clib_error_return (0, "given interpreter does not fit; must be less than %d bytes (`%s' given)",
+ g->header.memory_size, interp);
+
+ error = elf_get_section_by_start_address (em, g->header.virtual_address, &s);
+ if (error)
+ return error;
+
+ /* Put in new null terminated string. */
+ clib_memset (s->contents, 0, vec_len (s->contents));
+ clib_memcpy (s->contents, interp, strlen (interp));
+
+ return 0;
+}
+
+static void
+delete_rpath_for_section (elf_main_t * em, elf_section_t * s)
+{
+ elf64_dynamic_entry_t * e;
+ elf64_dynamic_entry_t * new_es = 0;
+
+ vec_foreach (e, em->dynamic_entries)
+ {
+ switch (e->type)
+ {
+ case ELF_DYNAMIC_ENTRY_RPATH:
+ case ELF_DYNAMIC_ENTRY_RUN_PATH:
+ break;
+
+ default:
+ vec_add1 (new_es, e[0]);
+ break;
+ }
+ }
+
+ /* Pad so as to keep section size constant. */
+ {
+ elf64_dynamic_entry_t e_end;
+ e_end.type = ELF_DYNAMIC_ENTRY_END;
+ e_end.data = 0;
+ while (vec_len (new_es) < vec_len (em->dynamic_entries))
+ vec_add1 (new_es, e_end);
+ }
+
+ vec_free (em->dynamic_entries);
+ em->dynamic_entries = new_es;
+
+ elf_set_dynamic_entries (em);
+}
+
+static void delete_rpath (elf_main_t * em)
+{
+ elf_section_t * s;
+
+ vec_foreach (s, em->sections)
+ {
+ switch (s->header.type)
+ {
+ case ELF_SECTION_DYNAMIC:
+ delete_rpath_for_section (em, s);
+ break;
+
+ default:
+ break;
+ }
+ }
+}
+
+static clib_error_t *
+set_rpath_for_section (elf_main_t * em, elf_section_t * s, char * new_rpath)
+{
+ elf64_dynamic_entry_t * e;
+ char * old_rpath;
+ int old_len, new_len = strlen (new_rpath);
+ u8 * new_string_table = vec_dup (em->dynamic_string_table);
+
+ vec_foreach (e, em->dynamic_entries)
+ {
+ switch (e->type)
+ {
+ case ELF_DYNAMIC_ENTRY_RPATH:
+ case ELF_DYNAMIC_ENTRY_RUN_PATH:
+ old_rpath = (char *) new_string_table + e->data;
+ old_len = strlen (old_rpath);
+ if (old_len < new_len)
+ return clib_error_return (0, "rpath of `%s' does not fit (old rpath `%s')",
+ new_rpath, old_rpath);
+ strcpy (old_rpath, new_rpath); //NOSONAR
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ elf_set_section_contents (em, em->dynamic_string_table_section_index,
+ new_string_table,
+ vec_bytes (new_string_table));
+
+ return 0;
+}
+
+static clib_error_t *
+set_rpath (elf_main_t * em, char * rpath)
+{
+ clib_error_t * error = 0;
+ elf_section_t * s;
+
+ vec_foreach (s, em->sections)
+ {
+ switch (s->header.type)
+ {
+ case ELF_SECTION_DYNAMIC:
+ error = set_rpath_for_section (em, s, rpath);
+ if (error)
+ return error;
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ return error;
+}
+
+static clib_error_t *
+set_interpreter_rpath (elf_tool_main_t * tm)
+{
+ int ifd = -1, ofd = -1;
+ struct stat fd_stat;
+ u8 *idp = 0; /* warning be gone */
+ u64 mmap_length = 0, i;
+ u32 run_length;
+ u8 in_run;
+ u64 offset0 = 0, offset1 = 0;
+ clib_error_t * error = 0;
+ int fix_in_place = 0;
+
+ if (!strcmp (tm->input_file, tm->output_file))
+ fix_in_place = 1;
+
+ ifd = open (tm->input_file, O_RDWR);
+ if (ifd < 0)
+ {
+ error = clib_error_return_unix (0, "open `%s'", tm->input_file);
+ goto done;
+ }
+
+ if (fstat (ifd, &fd_stat) < 0)
+ {
+ error = clib_error_return_unix (0, "fstat `%s'", tm->input_file);
+ goto done;
+ }
+
+ if (!(fd_stat.st_mode & S_IFREG))
+ {
+ error = clib_error_return (0, "%s is not a regular file", tm->input_file);
+ goto done;
+ }
+
+ mmap_length = fd_stat.st_size;
+ if (mmap_length < 4)
+ {
+ error = clib_error_return (0, "%s too short", tm->input_file);
+ goto done;
+ }
+
+ /* COW-mapping, since we intend to write the fixups */
+ if (fix_in_place)
+ idp = mmap (0, mmap_length, PROT_READ | PROT_WRITE, MAP_SHARED,
+ ifd, /* offset */ 0);
+ else
+ idp = mmap (0, mmap_length, PROT_READ | PROT_WRITE, MAP_PRIVATE,
+ ifd, /* offset */ 0);
+ if (~pointer_to_uword (idp) == 0)
+ {
+ mmap_length = 0;
+ error = clib_error_return_unix (0, "mmap `%s'", tm->input_file);
+ goto done;
+ }
+
+ if (idp[0] != 0x7f || idp[1] != 'E' || idp[2] != 'L' || idp[3] != 'F')
+ {
+ error = clib_error_return (0, "not an ELF file '%s'", tm->input_file);
+ goto done;
+ }
+
+ in_run = 0;
+ run_length = 0;
+
+ for (i = 0; i < mmap_length; i++)
+ {
+ if (idp[i] == '/')
+ {
+ if (in_run)
+ run_length++;
+ else
+ {
+ in_run = 1;
+ run_length = 1;
+ }
+ }
+ else
+ {
+ if (in_run && run_length >= 16)
+ {
+ if (offset0 == 0)
+ offset0 = (i - run_length);
+ else if (offset1 == 0)
+ {
+ offset1 = (i - run_length);
+ goto found_both;
+ }
+ }
+ in_run = 0;
+ run_length = 0;
+ }
+ }
+
+ if (offset0 == 0)
+ {
+ error = clib_error_return (0, "no fixup markers in %s",
+ tm->input_file);
+ goto done;
+ }
+
+ found_both:
+ if (0)
+ clib_warning ("offset0 %lld (0x%llx), offset1 %lld (0x%llx)",
+ offset0, offset0, offset1, offset1);
+
+ /* Executable file case */
+ if (offset0 && offset1)
+ {
+ tm->interpreter_offset = offset0;
+ tm->rpath_offset = offset1;
+ }
+ else /* shared library case */
+ {
+ tm->interpreter_offset = 0;
+ tm->rpath_offset = offset0;
+ }
+
+ if (tm->interpreter_offset)
+ clib_memcpy (&idp[tm->interpreter_offset], tm->set_interpreter,
+ strlen (tm->set_interpreter)+1);
+
+ if (tm->rpath_offset)
+ clib_memcpy (&idp[tm->rpath_offset], tm->set_rpath,
+ strlen (tm->set_rpath)+1);
+
+ /* Write the output file... */
+ if (fix_in_place == 0)
+ {
+ ofd = open (tm->output_file, O_RDWR | O_CREAT | O_TRUNC, 0644);
+ if (ofd < 0)
+ {
+ error = clib_error_return_unix (0, "create `%s'", tm->output_file);
+ goto done;
+ }
+
+ if (write (ofd, idp, mmap_length) != mmap_length)
+ error = clib_error_return_unix (0, "write `%s'", tm->output_file);
+ }
+
+ done:
+ if (mmap_length > 0 && idp)
+ munmap (idp, mmap_length);
+ if (ifd >= 0)
+ close (ifd);
+ if (ofd >= 0)
+ close (ofd);
+ return error;
+}
+
+
+int main (int argc, char * argv[])
+{
+ elf_tool_main_t _tm, * tm = &_tm;
+ elf_main_t * em = &tm->elf_main;
+ unformat_input_t i;
+ clib_error_t * error = 0;
+
+ clib_memset (tm, 0, sizeof (tm[0]));
+ unformat_init_command_line (&i, argv);
+
+ while (unformat_check_input (&i) != UNFORMAT_END_OF_INPUT)
+ {
+ if (unformat (&i, "in %s", &tm->input_file))
+ ;
+ else if (unformat (&i, "out %s", &tm->output_file))
+ ;
+ else if (unformat (&i, "set-interpreter %s", &tm->set_interpreter))
+ ;
+ else if (unformat (&i, "set-rpath %s", &tm->set_rpath))
+ ;
+ else if (unformat (&i, "unset-rpath"))
+ tm->unset_rpath = 1;
+ else if (unformat (&i, "verbose"))
+ tm->verbose = ~0;
+ else if (unformat (&i, "verbose-symbols"))
+ tm->verbose |= FORMAT_ELF_MAIN_SYMBOLS;
+ else if (unformat (&i, "verbose-relocations"))
+ tm->verbose |= FORMAT_ELF_MAIN_RELOCATIONS;
+ else if (unformat (&i, "verbose-dynamic"))
+ tm->verbose |= FORMAT_ELF_MAIN_DYNAMIC;
+ else if (unformat (&i, "quiet"))
+ tm->quiet = 1;
+ else if (unformat (&i, "allow-elf-shared"))
+ tm->allow_elf_shared = 1;
+ else
+ {
+ error = unformat_parse_error (&i);
+ goto done;
+ }
+ }
+
+ if (! tm->input_file)
+ {
+ error = clib_error_return (0, "no input file");
+ goto done;
+ }
+
+ /* Do the typical case a stone-simple way... */
+ if (tm->quiet && tm->set_interpreter && tm->set_rpath && tm->output_file)
+ {
+ error = set_interpreter_rpath (tm);
+ goto done;
+ }
+
+ error = elf_read_file (em, tm->input_file);
+
+ if (error)
+ goto done;
+
+ if (tm->verbose)
+ fformat (stdout, "%U", format_elf_main, em, tm->verbose);
+
+ if (tm->set_interpreter)
+ {
+ error = elf_set_interpreter (em, tm);
+ if (error)
+ goto done;
+ }
+
+ if (tm->set_rpath)
+ {
+ error = set_rpath (em, tm->set_rpath);
+ if (error)
+ goto done;
+ }
+
+ if (tm->unset_rpath)
+ delete_rpath (em);
+
+ if (tm->output_file)
+ error = elf_write_file (em, tm->output_file);
+
+ elf_main_free (em);
+
+ done:
+ if (error)
+ {
+ if (tm->quiet == 0)
+ clib_error_report (error);
+ return 1;
+ }
+ else
+ return 0;
+}
lass="m">- Bump rdma-core to 46.1 (`61ab09472 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=61ab09472>`_) - IDPF Device driver - Add native idpf driver plugin (`737edea32 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=737edea32>`_) - NPTv6 - Network prefix translation for ipv6 (`6ee3aa41c <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=6ee3aa41c>`_) - Trace node - Filtering feature (`77812045e <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=77812045e>`_) - Wireguard - Add support for chained buffers (`f2b6edb14 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=f2b6edb14>`_) - Fateshare - A plugin for managing child processes (`f234b0d46 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=f234b0d46>`_) - Linux-cp - Basic MPLS support. (`44b3abe86 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=44b3abe86>`_) - VNET - Classifier - Add bpf support to pcap classifier (`3f4075574 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=3f4075574>`_) - Crypto Infra - Allow changing dispatch mode (`139aba204 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=139aba204>`_) - IPv4 LPM - Punt add punt socket support for icmp6 (`56b8abc07 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=56b8abc07>`_) - TCP - Add simple stats collector (`6052f4b9d <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=6052f4b9d>`_) Known issues ------------ For the full list of issues please refer to fd.io `JIRA <https://jira.fd.io>`_. Fixed issues ------------ For the full list of fixed issues please refer to: - fd.io `JIRA <https://jira.fd.io>`_ - git `commit log <https://git.fd.io/vpp/log/?h=master>`_ API changes ----------- Description of results: - *Definition changed*: indicates that the API file was modified between releases. - *Only in image*: indicates the API is new for this release. - *Only in file*: indicates the API has been removed in this release. ============================================================= ================== Message Name Result ============================================================= ================== af_xdp_create_v3 only in image af_xdp_create_v3_reply only in image arping_acd only in image arping_acd_reply only in image bpf_trace_filter_set only in image bpf_trace_filter_set_reply only in image cnat_snat_policy_add_del_if definition changed crypto_set_async_dispatch_v2 only in image crypto_set_async_dispatch_v2_reply only in image ip_neighbor_config_get only in image ip_neighbor_config_get_reply only in image ipsec_sa_v4_details only in image ipsec_sa_v4_dump only in image ipsec_sad_bind only in image ipsec_sad_bind_reply only in image ipsec_sad_unbind only in image ipsec_sad_unbind_reply only in image mpls_interface_details only in image mpls_interface_dump only in image nsh_add_del_entry only in image nsh_add_del_entry_reply only in image nsh_add_del_map only in image nsh_add_del_map_reply only in image nsh_entry_details only in image nsh_entry_dump only in image nsh_map_details only in image nsh_map_dump only in image pcap_set_filter_function only in image pcap_set_filter_function_reply only in image trace_filter_function_details only in image trace_filter_function_dump only in image trace_set_filter_function only in image trace_set_filter_function_reply only in image tracenode_enable_disable only in image tracenode_enable_disable_reply only in image ============================================================= ================== Found 35 api message signature differences Newly deprecated API messages ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ These messages are still there in the API, but can and probably will disappear in the next release. - af_packet_create - af_packet_create_reply - af_packet_create_v2 - af_packet_create_v2_reply - af_xdp_create - af_xdp_create_reply - af_xdp_create_v2 - af_xdp_create_v2_reply - crypto_set_async_dispatch - crypto_set_async_dispatch_reply - ip_punt_redirect_details - ip_punt_redirect_dump - ipsec_sa_v2_details - ipsec_sa_v2_dump - ipsec_sad_entry_add_del_v2 - ipsec_sad_entry_add_del_v2_reply - lcp_itf_pair_add_del - lcp_itf_pair_add_del_reply - memclnt_create - memclnt_create_reply - memif_create - memif_create_reply - memif_socket_filename_add_del - memif_socket_filename_add_del_reply - nat44_add_del_static_mapping - nat44_add_del_static_mapping_reply - nat44_user_session_details - nat44_user_session_dump - nat44_user_session_v2_details - nat44_user_session_v2_dump - pg_create_interface - pg_create_interface_reply - sr_policies_dump - tap_create_v2 - tap_create_v2_reply - vxlan_add_del_tunnel - vxlan_add_del_tunnel_reply - vxlan_add_del_tunnel_v2 - vxlan_add_del_tunnel_v2_reply - vxlan_tunnel_details - vxlan_tunnel_dump In-progress API messages ~~~~~~~~~~~~~~~~~~~~~~~~ These messages are provided for testing and experimentation only. They are *not* subject to any compatibility process, and therefore can arbitrarily change or disappear at *any* moment. Also they may have less than satisfactory testing, making them unsuitable for other use than the technology preview. If you are intending to use these messages in production projects, please collaborate with the feature maintainer on their productization. - abf_itf_attach_add_del - abf_itf_attach_add_del_reply - abf_itf_attach_details - abf_itf_attach_dump - abf_plugin_get_version - abf_plugin_get_version_reply - abf_policy_add_del - abf_policy_add_del_reply - abf_policy_details - abf_policy_dump - acl_plugin_use_hash_lookup_get - acl_plugin_use_hash_lookup_get_reply - acl_plugin_use_hash_lookup_set - acl_plugin_use_hash_lookup_set_reply - bpf_trace_filter_set - bpf_trace_filter_set_reply - cnat_get_snat_addresses - cnat_get_snat_addresses_reply - cnat_session_details - cnat_session_dump - cnat_session_purge - cnat_session_purge_reply - cnat_set_snat_addresses - cnat_set_snat_addresses_reply - cnat_set_snat_policy - cnat_set_snat_policy_reply - cnat_snat_policy_add_del_exclude_pfx - cnat_snat_policy_add_del_exclude_pfx_reply - cnat_snat_policy_add_del_if - cnat_snat_policy_add_del_if_reply - cnat_translation_del - cnat_translation_del_reply - cnat_translation_details - cnat_translation_dump - cnat_translation_update - cnat_translation_update_reply - det44_get_timeouts_reply - det44_set_timeouts - det44_set_timeouts_reply - flowprobe_get_params - flowprobe_get_params_reply - flowprobe_interface_add_del - flowprobe_interface_add_del_reply - flowprobe_interface_details - flowprobe_interface_dump - flowprobe_set_params - flowprobe_set_params_reply - gbp_bridge_domain_add - gbp_bridge_domain_add_reply - gbp_bridge_domain_del - gbp_bridge_domain_del_reply - gbp_bridge_domain_details - gbp_bridge_domain_dump - gbp_bridge_domain_dump_reply - gbp_contract_add_del - gbp_contract_add_del_reply - gbp_contract_details - gbp_contract_dump - gbp_endpoint_add - gbp_endpoint_add_reply - gbp_endpoint_del - gbp_endpoint_del_reply - gbp_endpoint_details - gbp_endpoint_dump - gbp_endpoint_group_add - gbp_endpoint_group_add_reply - gbp_endpoint_group_del - gbp_endpoint_group_del_reply - gbp_endpoint_group_details - gbp_endpoint_group_dump - gbp_ext_itf_add_del - gbp_ext_itf_add_del_reply - gbp_ext_itf_details - gbp_ext_itf_dump - gbp_recirc_add_del - gbp_recirc_add_del_reply - gbp_recirc_details - gbp_recirc_dump - gbp_route_domain_add - gbp_route_domain_add_reply - gbp_route_domain_del - gbp_route_domain_del_reply - gbp_route_domain_details - gbp_route_domain_dump - gbp_route_domain_dump_reply - gbp_subnet_add_del - gbp_subnet_add_del_reply - gbp_subnet_details - gbp_subnet_dump - gbp_vxlan_tunnel_add - gbp_vxlan_tunnel_add_reply - gbp_vxlan_tunnel_del - gbp_vxlan_tunnel_del_reply - gbp_vxlan_tunnel_details - gbp_vxlan_tunnel_dump - ikev2_child_sa_details - ikev2_child_sa_dump - ikev2_initiate_del_child_sa - ikev2_initiate_del_child_sa_reply - ikev2_initiate_del_ike_sa - ikev2_initiate_del_ike_sa_reply - ikev2_initiate_rekey_child_sa - ikev2_initiate_rekey_child_sa_reply - ikev2_initiate_sa_init - ikev2_initiate_sa_init_reply - ikev2_nonce_get - ikev2_nonce_get_reply - ikev2_profile_add_del - ikev2_profile_add_del_reply - ikev2_profile_details - ikev2_profile_disable_natt - ikev2_profile_disable_natt_reply - ikev2_profile_dump - ikev2_profile_set_auth - ikev2_profile_set_auth_reply - ikev2_profile_set_id - ikev2_profile_set_id_reply - ikev2_profile_set_ipsec_udp_port - ikev2_profile_set_ipsec_udp_port_reply - ikev2_profile_set_liveness - ikev2_profile_set_liveness_reply - ikev2_profile_set_ts - ikev2_profile_set_ts_reply - ikev2_profile_set_udp_encap - ikev2_profile_set_udp_encap_reply - ikev2_sa_details - ikev2_sa_dump - ikev2_set_esp_transforms - ikev2_set_esp_transforms_reply - ikev2_set_ike_transforms - ikev2_set_ike_transforms_reply - ikev2_set_local_key - ikev2_set_local_key_reply - ikev2_set_responder - ikev2_set_responder_hostname - ikev2_set_responder_hostname_reply - ikev2_set_responder_reply - ikev2_set_sa_lifetime - ikev2_set_sa_lifetime_reply - ikev2_set_tunnel_interface - ikev2_set_tunnel_interface_reply - ikev2_traffic_selector_details - ikev2_traffic_selector_dump - ip_neighbor_config_get - ip_neighbor_config_get_reply - ip_route_add_del_v2 - ip_route_add_del_v2_reply - ip_route_lookup_v2 - ip_route_lookup_v2_reply - ip_route_v2_details - ip_route_v2_dump - ip_session_redirect_add - ip_session_redirect_add_reply - ip_session_redirect_add_v2 - ip_session_redirect_add_v2_reply - ip_session_redirect_del - ip_session_redirect_del_reply - l2_emulation - l2_emulation_reply - lcp_default_ns_get_reply - lcp_default_ns_set - lcp_default_ns_set_reply - lcp_itf_pair_add_del_v2 - lcp_itf_pair_add_del_v2_reply - lcp_itf_pair_details - mdata_enable_disable - mdata_enable_disable_reply - nat44_ed_vrf_tables_v2_details - nat44_ed_vrf_tables_v2_dump - nat44_ei_add_del_address_range - nat44_ei_add_del_address_range_reply - nat44_ei_add_del_static_mapping - nat44_ei_add_del_static_mapping_reply - nat44_ei_address_details - nat44_ei_address_dump - nat44_ei_del_session - nat44_ei_del_session_reply - nat44_ei_del_user - nat44_ei_del_user_reply - nat44_ei_forwarding_enable_disable - nat44_ei_forwarding_enable_disable_reply - nat44_ei_ha_flush - nat44_ei_ha_flush_reply - nat44_ei_ha_resync - nat44_ei_ha_resync_completed_event - nat44_ei_ha_resync_reply - nat44_ei_ha_set_failover - nat44_ei_ha_set_failover_reply - nat44_ei_ha_set_listener - nat44_ei_ha_set_listener_reply - nat44_ei_interface_add_del_feature - nat44_ei_interface_add_del_feature_reply - nat44_ei_interface_details - nat44_ei_interface_dump - nat44_ei_ipfix_enable_disable - nat44_ei_ipfix_enable_disable_reply - nat44_ei_plugin_enable_disable - nat44_ei_plugin_enable_disable_reply - nat44_ei_set_addr_and_port_alloc_alg - nat44_ei_set_addr_and_port_alloc_alg_reply - nat44_ei_set_fq_options - nat44_ei_set_fq_options_reply - nat44_ei_set_mss_clamping - nat44_ei_set_mss_clamping_reply - nat44_ei_set_timeouts - nat44_ei_set_timeouts_reply - nat44_ei_set_workers - nat44_ei_set_workers_reply - nat44_ei_show_fq_options - nat44_ei_show_fq_options_reply - nat44_ei_show_running_config - nat44_ei_show_running_config_reply - nat44_ei_static_mapping_details - nat44_ei_static_mapping_dump - nat44_ei_user_details - nat44_ei_user_dump - nat44_ei_user_session_details - nat44_ei_user_session_dump - nat44_ei_user_session_v2_details - nat44_ei_user_session_v2_dump - nat44_ei_worker_details - nat44_ei_worker_dump - nat64_plugin_enable_disable - nat64_plugin_enable_disable_reply - npt66_binding_add_del - npt66_binding_add_del_reply - oddbuf_enable_disable - oddbuf_enable_disable_reply - pg_interface_enable_disable_coalesce - pg_interface_enable_disable_coalesce_reply - pnat_binding_add - pnat_binding_add_reply - pnat_binding_add_v2 - pnat_binding_add_v2_reply - pnat_binding_attach - pnat_binding_attach_reply - pnat_binding_del - pnat_binding_del_reply - pnat_binding_detach - pnat_binding_detach_reply - pnat_bindings_details - pnat_bindings_get - pnat_bindings_get_reply - pnat_interfaces_details - pnat_interfaces_get - pnat_interfaces_get_reply - sample_macswap_enable_disable - sample_macswap_enable_disable_reply - set_ip_flow_hash_v3 - set_ip_flow_hash_v3_reply - sr_localsids_with_packet_stats_details - sr_localsids_with_packet_stats_dump - sr_policies_with_sl_index_details - sr_policies_with_sl_index_dump - sr_policy_add_v2 - sr_policy_add_v2_reply - sr_policy_mod_v2 - sr_policy_mod_v2_reply - sw_interface_ip6nd_ra_details - sw_interface_ip6nd_ra_dump - sw_interface_set_vxlan_gbp_bypass - sw_interface_set_vxlan_gbp_bypass_reply - test_addresses - test_addresses2 - test_addresses2_reply - test_addresses3 - test_addresses3_reply - test_addresses_reply - test_empty - test_empty_reply - test_enum - test_enum_reply - test_interface - test_interface_reply - test_prefix - test_prefix_reply - test_string - test_string2 - test_string2_reply - test_string_reply - test_vla - test_vla2 - test_vla2_reply - test_vla3 - test_vla3_reply - test_vla4 - test_vla4_reply - test_vla5 - test_vla5_reply - test_vla_reply - trace_capture_packets - trace_capture_packets_reply - trace_clear_cache - trace_clear_cache_reply - trace_clear_capture - trace_clear_capture_reply - trace_details - trace_dump - trace_dump_reply - trace_filter_function_details - trace_filter_function_dump - trace_set_filter_function - trace_set_filter_function_reply - trace_set_filters - trace_set_filters_reply - trace_v2_details - trace_v2_dump - tracenode_enable_disable - tracenode_enable_disable_reply - vxlan_gbp_tunnel_add_del - vxlan_gbp_tunnel_add_del_reply - vxlan_gbp_tunnel_details - vxlan_gbp_tunnel_dump Patches that changed API definitions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``src/vlibmemory/memclnt.api`` * `7108cb15c <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=7108cb15c>`_ api: memclnt - Mark old message versions as deprecated ``src/vnet/flow/flow.api`` * `9c7e03348 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=9c7e03348>`_ flow: mark API as production ``src/vnet/ipsec/ipsec.api`` * `63305843e <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=63305843e>`_ api: ipsec - Mark old message versions as deprecated * `1271e3a2a <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=1271e3a2a>`_ ipsec: manually binding an SA to a worker * `f441b5d0e <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=f441b5d0e>`_ crypto: use fixed crypto frame pool ``src/vnet/ipsec/ipsec_types.api`` * `84e665848 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=84e665848>`_ ipsec: add support for RFC-4543 ENCR_NULL_AUTH_AES_GMAC ``src/vnet/crypto/crypto.api`` * `139aba204 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=139aba204>`_ crypto: allow changing dispatch mode * `9a9604b09 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=9a9604b09>`_ crypto: make crypto-dispatch node working in adaptive mode ``src/vnet/devices/tap/tapv2.api`` * `74d9f0ae3 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=74d9f0ae3>`_ api: tapv2 - Mark old message versions as deprecated ``src/vnet/ip/ip.api`` * `755e3aa54 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=755e3aa54>`_ api: ip - Mark old message versions as deprecated ``src/vnet/interface.api`` * `3f4075574 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=3f4075574>`_ classify: add bpf support to pcap classifier ``src/vnet/mpls/mpls.api`` * `8d61c59c3 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=8d61c59c3>`_ mpls: add mpls_interface_dump ``src/vnet/srv6/sr.api`` * `238cf3bd4 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=238cf3bd4>`_ sr: mark sr_policies_v2_details message as production * `5c476e7ac <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=5c476e7ac>`_ api: sr - Mark old message versions as deprecated ``src/vnet/pg/pg.api`` * `be5676166 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=be5676166>`_ api: pg - Mark old message versions as deprecated ``src/vnet/ip-neighbor/ip_neighbor.api`` * `e1cc87536 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=e1cc87536>`_ ip-neighbor: add api for getting neighbor db config ``src/plugins/tracedump/tracedump.api`` * `52fa5f21b <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=52fa5f21b>`_ vlib: introduce trace filter functions ``src/plugins/linux-cp/lcp.api`` * `fa6d21b4f <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=fa6d21b4f>`_ api: lcp - Mark old message versions as deprecated ``src/plugins/crypto_sw_scheduler/crypto_sw_scheduler.api`` * `a998f80cd <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=a998f80cd>`_ crypto-sw-scheduler: stabilize the API ``src/plugins/adl/adl.api`` * `b116bf8f3 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=b116bf8f3>`_ adl: stabilize the API ``src/plugins/nat/det44/det44.api`` * `ad417a8e6 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=ad417a8e6>`_ nat: mark several messages as production ``src/plugins/nat/nat44-ed/nat44_ed.api`` * `b1239c488 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=b1239c488>`_ api: nat44_ed - Mark old message versions as deprecated ``src/plugins/af_xdp/af_xdp.api`` * `7f27ed666 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=7f27ed666>`_ af_xdp: create_api_v3 without namespace keyword ``src/plugins/cnat/cnat.api`` * `f6beee077 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=f6beee077>`_ cnat: add host tag to bitmap in cnat snat * `663103279 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=663103279>`_ cnat: flag to disable rsession ``src/plugins/tracenode/tracenode.api`` * `77812045e <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=77812045e>`_ tracenode: filtering feature ``src/plugins/bpf_trace_filter/bpf_trace_filter.api`` * `ccd307095 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=ccd307095>`_ bpf_trace_filter: plugin for BPF Trace Filtering ``src/plugins/wireguard/wireguard.api`` * `f29d9f060 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=f29d9f060>`_ wireguard: stabilize the API ``src/plugins/memif/memif.api`` * `cfd8e4ec8 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=cfd8e4ec8>`_ api: memif - Mark old message versions as deprecated ``src/plugins/vxlan/vxlan.api`` * `9ebd2b92e <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=9ebd2b92e>`_ api: vxlan - Mark old message versions as deprecated ``src/plugins/af_packet/af_packet.api`` * `fe965a3a1 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=fe965a3a1>`_ api: af_packet - Mark old message versions as deprecated ``src/plugins/arping/arping.api`` * `8af78b8e3 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=8af78b8e3>`_ arping: api to return responder mac address ``src/plugins/npt66/npt66.api`` * `6ee3aa41c <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=6ee3aa41c>`_ npt66: network prefix translation for ipv6 ``src/plugins/idpf/idpf.api`` * `737edea32 <https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commit;h=737edea32>`_ idpf: add native idpf driver plugin