summaryrefslogtreecommitdiffstats
path: root/src/cmake
AgeCommit message (Expand)AuthorFilesLines
2021-05-27build: kindly ask python not to polute src/Damjan Marion1-4/+4
2021-05-11build: compiler flags handling cleanupDamjan Marion4-3/+8
2021-05-06build: add FORCE_ON option for multiarch variantsDamjan Marion2-4/+24
2021-05-01build: add option to turn off some march variantsDamjan Marion1-41/+81
2021-04-30build: declare some CMake variables as advancedDamjan Marion2-0/+10
2021-04-30misc: experimental configure scriptDamjan Marion1-6/+6
2021-04-18vppinfra: remove linux/syscall.hDamjan Marion1-23/+0
2021-04-02build: create _objs target for each libraryDamjan Marion1-3/+10
2021-02-08misc: support api generated dependency for multiarch sourceOle Troan4-15/+31
2021-01-21avf: use write combining store for queues tail updateRadu Nicolau1-0/+4
2020-12-25build: add plugin dependencies only when presentRuslan Babayev1-1/+3
2020-11-25api: vat2 and json autogeneration for api messagesOle Troan3-2/+57
2020-11-05build: link time optimization for release buildsDamjan Marion1-1/+8
2020-11-05build: run garbage collection while linking pluginsDamjan Marion1-0/+3
2020-10-19misc: don't export symbols from pluginsDamjan Marion1-0/+1
2020-10-15build: forward dependencies to arch-specific libsAloys Augustin3-5/+10
2020-08-27vppinfra: Multiarch support for OCTEONTX2 SoCNitin Saxena1-0/+4
2020-06-19build: add cmake dependency from test plugin to apiTom Seidenberg1-0/+3
2020-06-17build: cmake cross-compilation fixesDamjan Marion1-1/+1
2020-05-08build: various improvementsDamjan Marion4-5/+7
2020-04-30build: rework x86 CPU variantsDamjan Marion1-5/+9
2020-04-30build: support arch-specific compiling for Neoverse N1Lijian.Zhang1-0/+4
2020-04-29build: detect GNU Assembler AVX-512 bug and disable AVX-512 variants if neededDamjan Marion1-4/+24
2020-03-31vlib: move pci api types from vnet/pci to vlib/pciJakub Grajciar1-2/+1
2020-01-27crypto-ia32: add VAES support for AES-CBCDamjan Marion1-0/+1
2019-12-17build: export vapi generation in vpp-devOliver Giles4-10/+84
2019-11-14vcl: Handle newer Glibc (>2.28) where fcntl is actually fcntl64Carl Smith1-0/+9
2019-11-04build: install generated api enum and type headersDave Barach1-0/+2
2019-09-25api: split api generated filesOle Troan2-1/+3
2019-09-05build: fix unsupported CMake comparison operationjialv011-1/+1
2019-08-19build: fix vpp compilation failure on ThunderX2 and AmpJianlin Lv1-1/+1
2019-07-31build: Append build number for cpack packagesYohanPipereau1-31/+32
2019-07-25build: vppapigen search VPP_INCLUDE_DIR if setBenoît Ganne1-2/+8
2019-07-25build: package .api files in vpp-devBenoît Ganne1-1/+1
2019-06-07build: add -Wall and -fno-common, fix reported issuesBenoît Ganne3-3/+1
2019-05-14Build packages for generic Arm architectureLijian.Zhang1-0/+2
2019-03-28cmake: add vpp_plugin_find_library macroDamjan Marion1-0/+9
2019-03-18Fix build with newer linux headersDamjan Marion1-0/+10
2019-02-14Add -fno-common compile optionBenoît Ganne2-2/+2
2019-01-26cmake: add support for linking with DPDK shared libsDamjan Marion1-0/+13
2019-01-25cmake: execute git from src directoryDamjan Marion1-0/+1
2019-01-22cmake: don't set SONAME for pluginsDamjan Marion1-0/+2
2019-01-20Rework of debian packagingDamjan Marion1-2/+1
2019-01-17cmake: initial cross-compilation supportDamjan Marion1-1/+4
2018-11-30API: Add dependency on compiler for API .json and .api generation.Ole Troan1-2/+2
2018-10-01Support dynamic dual/quad loop selection on aarch64Lijian Zhang1-0/+16
2018-09-14cpack: add deb/rpm packaging to VPP moduleDamjan Marion5-19/+91
2018-09-14cmake: use VPP package in VOMDamjan Marion1-1/+3
2018-09-12cmake: create cmake VPP module, update sample-plugin so it uses itDamjan Marion4-8/+83
2018-09-12Always use 'lib' instead of 'lib64'Damjan Marion3-7/+3
n> to_next += 2; n_left_to_next -= 2; b0 = vlib_get_buffer (vm, bi0); b1 = vlib_get_buffer (vm, bi1); uei0 = vnet_buffer (b0)->ip.adj_index[VLIB_TX]; uei1 = vnet_buffer (b1)->ip.adj_index[VLIB_TX]; vlib_increment_combined_counter (cm, thread_index, uei0, 1, vlib_buffer_length_in_chain (vm, b0)); vlib_increment_combined_counter (cm, thread_index, uei1, 1, vlib_buffer_length_in_chain (vm, b1)); /* Rewrite packet header and updates lengths. */ ue0 = udp_encap_get (uei0); ue1 = udp_encap_get (uei1); /* Paint */ if (is_encap_v6) { const u8 n_bytes = sizeof (udp_header_t) + sizeof (ip6_header_t); ip_udp_encap_two (vm, b0, b1, (u8 *) & ue0->ue_hdrs, (u8 *) & ue1->ue_hdrs, n_bytes, 0); if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED)) { udp6_encap_trace_t *tr = vlib_add_trace (vm, node, b0, sizeof (*tr)); tr->udp = ue0->ue_hdrs.ip6.ue_udp; tr->ip = ue0->ue_hdrs.ip6.ue_ip6; } if (PREDICT_FALSE (b1->flags & VLIB_BUFFER_IS_TRACED)) { udp6_encap_trace_t *tr = vlib_add_trace (vm, node, b1, sizeof (*tr)); tr->udp = ue1->ue_hdrs.ip6.ue_udp; tr->ip = ue1->ue_hdrs.ip6.ue_ip6; } } else { const u8 n_bytes = sizeof (udp_header_t) + sizeof (ip4_header_t); ip_udp_encap_two (vm, b0, b1, (u8 *) & ue0->ue_hdrs, (u8 *) & ue1->ue_hdrs, n_bytes, 1); if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED)) { udp4_encap_trace_t *tr = vlib_add_trace (vm, node, b0, sizeof (*tr)); tr->udp = ue0->ue_hdrs.ip4.ue_udp; tr->ip = ue0->ue_hdrs.ip4.ue_ip4; } if (PREDICT_FALSE (b1->flags & VLIB_BUFFER_IS_TRACED)) { udp4_encap_trace_t *tr = vlib_add_trace (vm, node, b1, sizeof (*tr)); tr->udp = ue1->ue_hdrs.ip4.ue_udp; tr->ip = ue1->ue_hdrs.ip4.ue_ip4; } } next0 = ue0->ue_dpo.dpoi_next_node; next1 = ue1->ue_dpo.dpoi_next_node; vnet_buffer (b0)->ip.adj_index[VLIB_TX] = ue0->ue_dpo.dpoi_index; vnet_buffer (b1)->ip.adj_index[VLIB_TX] = ue1->ue_dpo.dpoi_index; vlib_validate_buffer_enqueue_x2 (vm, node, next_index, to_next, n_left_to_next, bi0, bi1, next0, next1); } while (n_left_from > 0 && n_left_to_next > 0) { u32 bi0, next0, uei0; vlib_buffer_t *b0; udp_encap_t *ue0; bi0 = to_next[0] = from[0]; from += 1; n_left_from -= 1; to_next += 1; n_left_to_next -= 1; b0 = vlib_get_buffer (vm, bi0); uei0 = vnet_buffer (b0)->ip.adj_index[VLIB_TX]; /* Rewrite packet header and updates lengths. */ ue0 = udp_encap_get (uei0); vlib_increment_combined_counter (cm, thread_index, uei0, 1, vlib_buffer_length_in_chain (vm, b0)); /* Paint */ if (is_encap_v6) { const u8 n_bytes = sizeof (udp_header_t) + sizeof (ip6_header_t); ip_udp_encap_one (vm, b0, (u8 *) & ue0->ue_hdrs.ip6, n_bytes, 0); if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED)) { udp6_encap_trace_t *tr = vlib_add_trace (vm, node, b0, sizeof (*tr)); tr->udp = ue0->ue_hdrs.ip6.ue_udp; tr->ip = ue0->ue_hdrs.ip6.ue_ip6; } } else { const u8 n_bytes = sizeof (udp_header_t) + sizeof (ip4_header_t); ip_udp_encap_one (vm, b0, (u8 *) & ue0->ue_hdrs.ip4, n_bytes, 1); if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED)) { udp4_encap_trace_t *tr = vlib_add_trace (vm, node, b0, sizeof (*tr)); tr->udp = ue0->ue_hdrs.ip4.ue_udp; tr->ip = ue0->ue_hdrs.ip4.ue_ip4; } } next0 = ue0->ue_dpo.dpoi_next_node; vnet_buffer (b0)->ip.adj_index[VLIB_TX] = ue0->ue_dpo.dpoi_index; vlib_validate_buffer_enqueue_x1 (vm, node, next_index, to_next, n_left_to_next, bi0, next0); } vlib_put_next_frame (vm, node, next_index, n_left_to_next); } return frame->n_vectors; } static uword udp4_encap (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { return udp_encap_inline (vm, node, frame, 0); } static uword udp6_encap (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { return udp_encap_inline (vm, node, frame, 1); } /* *INDENT-OFF* */ VLIB_REGISTER_NODE (udp4_encap_node) = { .function = udp4_encap, .name = "udp4-encap", .vector_size = sizeof (u32), .format_trace = format_udp4_encap_trace, .n_next_nodes = 0, }; VLIB_NODE_FUNCTION_MULTIARCH (udp4_encap_node, udp4_encap); VLIB_REGISTER_NODE (udp6_encap_node) = { .function = udp6_encap, .name = "udp6-encap", .vector_size = sizeof (u32), .format_trace = format_udp6_encap_trace, .n_next_nodes = 0, }; VLIB_NODE_FUNCTION_MULTIARCH (udp6_encap_node, udp6_encap); /* *INDENT-ON* */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */