summaryrefslogtreecommitdiff
path: root/lib/ipsec
AgeCommit message (Collapse)Author
2024-10-18ipsec: use IPv6 address structureRobin Jarry
Update rte_ipsec_sadv6_key to use rte_ipv6_addr structures instead of uint8_t[16] arrays. Signed-off-by: Robin Jarry <[email protected]>
2024-10-09ipsec: allow stateless IPsec processingAakash Sasidharan
Introduce stateless packet preparation API for IPsec processing. The new API would allow preparation of IPsec packets without altering the internal state of an IPsec session. For outbound IPsec processing, the change enables user to provide sequence number to be used for the IPsec operation. Signed-off-by: Aakash Sasidharan <[email protected]> Acked-by: Konstantin Ananyev <[email protected]> Acked-by: Akhil Goyal <[email protected]>
2024-10-09use C linkage where appropriate in headersMattias Rönnblom
Assure that 'extern "C" { /../ }' do not cover files included from a particular header file, and address minor issues resulting from this change of order. Dealing with C++ should delegate to the individual include file level, rather than being imposed by the user of that file. For example, forcing C linkage prevents __Generic macros being replaced with overloaded static inline functions in C++ translation units. Eliminate 'extern "C"' from files which do not declare any symbols (e.g., only macros or struct types). On the other hand, the headers check is too naive in assuming that all headers must contain a 'extern "C"'. Such a check was added in commit 1ee492bdc4ff ("buildtools/chkincs: check missing C++ guards"). Since this current change results in many headers not containing such a token, remove the check for 'extern "C"' until we have a better implementation. Signed-off-by: Mattias Rönnblom <[email protected]> Acked-by: Morten Brørup <[email protected]> Signed-off-by: David Marchand <[email protected]>
2024-08-08version: 24.11-rc0David Marchand
Start a new release cycle with empty release notes. The ABI version becomes 25.0. The map files are updated to the new ABI major number (25). The ABI exceptions are dropped and CI ABI checks are disabled because compatibility is not preserved. Signed-off-by: David Marchand <[email protected]> Acked-by: Thomas Monjalon <[email protected]>
2024-06-13remove extension keyword for flex arraysDavid Marchand
Flex arrays are part of the C99 standard. No need to mark them with __extension__. Signed-off-by: David Marchand <[email protected]> Acked-by: Morten Brørup <[email protected]>
2024-03-06lib: move alignment attribute on types for MSVCTyler Retzlaff
The current location used for __rte_aligned(a) for alignment of types is not compatible with MSVC. There is only a single location accepted by both toolchains. The standard offers no alignment facility that compatibly interoperates with C and C++ but it may be achieved by relocating the placement of __rte_aligned(a) to the aforementioned location accepted by all currently supported toolchains. To allow alignment for both compilers, do the following: * Expand __rte_aligned(a) to __declspec(align(a)) when building with MSVC. * Move __rte_aligned from the end of {struct,union} definitions to be between {struct,union} and tag. The placement between {struct,union} and the tag allows the desired alignment to be imparted on the type regardless of the toolchain being used for all of GCC, LLVM, MSVC compilers building both C and C++. Note: this move has an additional benefit as Doxygen is not confused anymore like for the rte_event_vector struct definition. Signed-off-by: Tyler Retzlaff <[email protected]> Acked-by: Morten Brørup <[email protected]> Acked-by: Bruce Richardson <[email protected]> Acked-by: Konstantin Ananyev <[email protected]> Acked-by: Chengwen Feng <[email protected]> Reviewed-by: Maxime Coquelin <[email protected]> Signed-off-by: David Marchand <[email protected]>
2023-11-13ipsec: promote SA telemetry API as stableStephen Hemminger
These API's were added in 21.11, remove experimental flag. Signed-off-by: Stephen Hemminger <[email protected]> Acked-by: Konstantin Ananyev <[email protected]>
2023-10-30ipsec: use stdatomic APITyler Retzlaff
Replace the use of gcc builtin __atomic_xxx intrinsics with corresponding rte_atomic_xxx optional stdatomic API Signed-off-by: Tyler Retzlaff <[email protected]> Acked-by: Konstantin Ananyev <[email protected]> Acked-by: Akhil Goyal <[email protected]> Acked-by: David Marchand <[email protected]>
2023-07-31version: 23.11-rc0David Marchand
Start a new release cycle with empty release notes. The ABI version becomes 24.0. The map files are updated to the new ABI major number (24). The ABI exceptions are dropped and CI ABI checks are disabled because compatibility is not preserved. The telemetry and vhost libraries compat code is cleaned up in next commits. Signed-off-by: David Marchand <[email protected]> Acked-by: Bruce Richardson <[email protected]>
2023-07-11ipsec: fix NAT-T header lengthXiao Liang
UDP header and L2 header (if any) length is included in sa->hdr_len. Take care of that in L3 header and packet length calculation. Fixes: 01eef5907fc3 ("ipsec: support NAT-T") Cc: [email protected] Signed-off-by: Xiao Liang <[email protected]> Acked-by: Konstantin Ananyev <[email protected]> Acked-by: Radu Nicolau <[email protected]>
2023-06-27lib: remove blank line ending comment blocksThomas Monjalon
At the end of a comment, no need for an extra line. This pattern was fixed with the following command: git ls lib | xargs sed -i '/^ *\* *$/{N;/ *\*\/ *$/D;}' Signed-off-by: Thomas Monjalon <[email protected]> Acked-by: Bruce Richardson <[email protected]> Reviewed-by: Ruifeng Wang <[email protected]>
2023-04-25rework atomic intrinsics fetch operationsTyler Retzlaff
Use __atomic_fetch_{add,and,or,sub,xor} instead of __atomic_{add,and,or,sub,xor}_fetch adding the necessary code to allow consumption of the resulting value. Signed-off-by: Tyler Retzlaff <[email protected]> Reviewed-by: Ruifeng Wang <[email protected]> Acked-by: Pavan Nikhilesh <[email protected]> Acked-by: Nithin Dabilpuram <[email protected]> Reviewed-by: David Marchand <[email protected]>
2023-04-23enable lock checkDavid Marchand
Now that a lot of components can be compiled with the lock checks, invert the logic and opt out for components not ready yet: - drivers/bus/dpaa, - drivers/common/cnxk, - drivers/common/mlx5, - drivers/event/cnxk, - drivers/net/bnx2x, - drivers/net/bnxt, - drivers/net/cnxk, - drivers/net/enic, - drivers/net/hns3, - drivers/net/mlx5, - lib/ipsec, - lib/timer, The FreeBSD pthread API has been annotated but Linux glibc does not have those annotations. Disable lock checks for FreeBSD where pthread_mutex_* are used: - drivers/net/failsafe, - drivers/net/hinic, - lib/eal, - lib/ethdev, Signed-off-by: David Marchand <[email protected]> Reviewed-by: Chenbo Xia <[email protected]> Acked-by: Sachin Saxena <[email protected]>
2023-02-05rename telemetry u64 functions to uint versionsBruce Richardson
Within the DPDK code-base, replace all occurrences of "rte_tel_data_add_array_u64" with "rte_tel_data_add_array_uint", and similarly replace all occurrences of "rte_tel_data_add_dict_u64" with "rte_tel_data_add_dict_uint". This allows us to later mark the older functions as deprecated without hitting warnings. Signed-off-by: Bruce Richardson <[email protected]> Acked-by: Ciara Power <[email protected]>
2023-02-05telemetry: rename unsigned 64-bit enum value to uintBruce Richardson
For telemetry data, rather than having unsigned 64-bit values and signed 32-bit values, we want to just have unsigned and signed values, each stored with the max bit-width i.e. 64-bits. To that end, we rename the U64 enum entry to "UINT" to have a more generic name For backward API-level compatibility, we can use a macro to alias the old name to the new. Suggested-by: Morten Brørup <[email protected]> Signed-off-by: Bruce Richardson <[email protected]> Acked-by: Morten Brørup <[email protected]> Acked-by: Tyler Retzlaff <[email protected]> Acked-by: Ciara Power <[email protected]>
2022-11-15cleanup compat header inclusionsDavid Marchand
With symbols going though experimental/stable stages, we accumulated a lot of discrepancies about inclusion of the rte_compat.h header. Some headers are including it where unneeded, while others rely on implicit inclusion. Fix unneeded inclusions: $ git grep -l include..rte_compat.h | xargs grep -LE '__rte_(internal|experimental)' | xargs sed -i -e '/#include..rte_compat.h/d' Fix missing inclusion, by inserting rte_compat.h before the first inclusion of a DPDK header: $ git grep -lE '__rte_(internal|experimental)' | xargs grep -L include..rte_compat.h | xargs sed -i -e \ '0,/#include..\(rte_\|.*pmd.h.$\)/{ s/\(#include..\(rte_\|.*pmd.h.$\)\)/#include <rte_compat.h>\n\1/ }' Fix missing inclusion, by inserting rte_compat.h after the last inclusion of a non DPDK header: $ for file in $(git grep -lE '__rte_(internal|experimental)' | xargs grep -L include..rte_compat.h); do tac $file > $file.$$ sed -i -e \ '0,/#include../{ s/\(#include..*$\)/#include <rte_compat.h>\n\n\1/ }' $file.$$ tac $file.$$ > $file rm $file.$$ done Fix missing inclusion, by inserting rte_compat.h after the header guard: $ git grep -lE '__rte_(internal|experimental)' | xargs grep -L include..rte_compat.h | xargs sed -i -e \ '0,/#define/{ s/\(#define .*$\)/\1\n\n#include <rte_compat.h>/ }' And finally, exclude rte_compat.h itself. $ git checkout lib/eal/include/rte_compat.h At the end of all this, we have a clean tree: $ git grep -lE '__rte_(internal|experimental)' | xargs grep -L include..rte_compat.h buildtools/check-symbols.sh devtools/checkpatches.sh doc/guides/contributing/abi_policy.rst doc/guides/rel_notes/release_20_11.rst lib/eal/include/rte_compat.h Signed-off-by: David Marchand <[email protected]> Acked-by: Bruce Richardson <[email protected]> Acked-by: Andrew Rybchenko <[email protected]>
2022-10-26lib: remove empty return types from doxygen commentsAli Alnubani
Recent versions of doxygen (1.9.4 and newer) complain about documented return types for functions that don't return anything. This patch removes these return types to fix build errors similar to this one: [..] Generating doc/api/doxygen with a custom command FAILED: doc/api/html /usr/bin/python3 /path/to/doc/api/generate_doxygen.py doc/api/html /usr/bin/doxygen doc/api/doxy-api.conf /root/dpdk/lib/eal/include/rte_bitmap.h:324: error: found documented return type for rte_bitmap_prefetch0 that does not return anything (warning treated as error, aborting now) [..] Tested with doxygen versions: 1.8.13, 1.8.17, 1.9.1, and 1.9.4. Signed-off-by: Ali Alnubani <[email protected]> Acked-by: Stephen Hemminger <[email protected]>
2022-10-04security: hide session structureAkhil Goyal
Structure rte_security_session is moved to internal headers which are not visible to applications. The only field which should be used by app is opaque_data. This field can now be accessed via set/get APIs added in this patch. Subsequent changes in app and lib are made to compile the code. Signed-off-by: Akhil Goyal <[email protected]> Tested-by: Gagandeep Singh <[email protected]> Tested-by: David Coyle <[email protected]> Tested-by: Kevin O'Sullivan <[email protected]>
2022-10-04cryptodev: hide symmetric session structureAkhil Goyal
Structure rte_cryptodev_sym_session is moved to internal headers which are not visible to applications. The only field which should be used by app is opaque_data. This field can now be accessed via set/get APIs added in this patch. Subsequent changes in app and lib are made to compile the code. Signed-off-by: Akhil Goyal <[email protected]> Signed-off-by: Fan Zhang <[email protected]> Acked-by: Kai Ji <[email protected]> Tested-by: Gagandeep Singh <[email protected]> Tested-by: David Coyle <[email protected]> Tested-by: Kevin O'Sullivan <[email protected]>
2022-09-27ipsec: fix build with GCC 12Amit Prakash Shukla
GCC 12 raises the following warning: In function '_mm_loadu_si128', inlined from 'rte_mov16' at ../lib/eal/x86/include/rte_memcpy.h:507:9, inlined from 'rte_mov128' at ../lib/eal/x86/include/rte_memcpy.h:549:2, inlined from 'rte_memcpy_generic' at ../lib/eal/x86/include/rte_memcpy.h:732:4, inlined from 'rte_memcpy' at ../lib/eal/x86/include/rte_memcpy.h:882:10, inlined from 'outb_tun_pkt_prepare' at ../lib/ipsec/esp_outb.c:224:2: /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/emmintrin.h:703:10: error: array subscript '__m128i_u[15]' is partly outside array bounds of 'const uint8_t[255]' {aka 'const unsigned char[255]'} [-Werror=array-bounds] 703 | return *__P; | ^~~~ In file included from ../lib/ipsec/esp_outb.c:17: ../lib/ipsec/pad.h: In function 'outb_tun_pkt_prepare': ../lib/ipsec/pad.h:10:22: note: at offset 240 into object 'esp_pad_bytes' of size 255 10 | static const uint8_t esp_pad_bytes[IPSEC_MAX_PAD_SIZE] = { | ^~~~~~~~~~~~~ This patch restrict copy to minimum size. Bugzilla ID: 1060 Fixes: 6015e6a13398 ("ipsec: move inbound and outbound code") Cc: [email protected] Signed-off-by: Amit Prakash Shukla <[email protected]> Acked-by: Konstantin Ananyev <[email protected]>
2022-09-21eal: remove unneeded includes from a public headerDmitry Kozlyuk
Do not include <ctype.h>, <errno.h>, and <stdlib.h> from <rte_common.h>, because they are not used by this file. Include the needed headers directly from the files that need them. Signed-off-by: Dmitry Kozlyuk <[email protected]> Acked-by: Bruce Richardson <[email protected]>
2022-07-21version: 22.11-rc0David Marchand
Start a new release cycle with empty release notes. The ABI version becomes 23.0. The map files are updated to the new ABI major number (23). The ABI exceptions are dropped and CI ABI checks are disabled because compatibility is not preserved. Special handling of removed drivers is also dropped in check-abi.sh and a note has been added in libabigail.abignore as a reminder. Signed-off-by: David Marchand <[email protected]> Acked-by: Thomas Monjalon <[email protected]>
2022-06-21ipsec: fix NAT-T ports and lengthRadu Nicolau
Fix the UDP header fields, wrong byte order used for src and dst port and wrong offset used when updating UDP datagram length. Fixes: 01eef5907fc3 ("ipsec: support NAT-T") Cc: [email protected] Signed-off-by: Radu Nicolau <[email protected]> Acked-by: Fan Zhang <[email protected]>
2022-06-07replace zero-length arrays with flexible onesBruce Richardson
This patch replaces instances of zero-sized arrays i.e. those at the end of structures with "[0]" with the more standard syntax of "[]". Replacement was done using coccinelle script, with some revert and cleanup of whitespace afterwards. Signed-off-by: Bruce Richardson <[email protected]> Acked-by: Morten Brørup <[email protected]> Acked-by: Stephen Hemminger <[email protected]> Acked-by: Hemant Agrawal <[email protected]>
2022-02-22lib: remove unneeded header includesSean Morrissey
These header includes have been flagged by the iwyu_tool and removed. Signed-off-by: Sean Morrissey <[email protected]>
2022-02-12remove unnecessary null checksStephen Hemminger
Functions like free, rte_free, and rte_mempool_free already handle NULL pointer so the checks here are not necessary. Remove redundant NULL pointer checks before free functions found by nullfree.cocci Signed-off-by: Stephen Hemminger <[email protected]>
2022-02-10ipsec: fix C++ includeBruce Richardson
C++ does not have automatic casting to/from void pointers, so need explicit cast if header is to be included in C++ code Fixes: f901d9c82688 ("ipsec: add helpers to group completed crypto-ops") Cc: [email protected] Signed-off-by: Bruce Richardson <[email protected]> Acked-by: Konstantin Ananyev <[email protected]>
2022-01-11fix spelling in comments and stringsJosh Soref
The tool comes from https://github.com/jsoref Signed-off-by: Josh Soref <[email protected]> Signed-off-by: Thomas Monjalon <[email protected]>
2021-11-16fix spelling in comments and doxygenStephen Hemminger
Fix spelling errors in comments including doxygen found using codespell. Signed-off-by: Stephen Hemminger <[email protected]> Acked-by: Konstantin Ananyev <[email protected]> Acked-by: Vladimir Medvedkin <[email protected]> Reviewed-by: Honnappa Nagarahalli <[email protected]> Acked-by: Ray Kinsella <[email protected]> Acked-by: Cristian Dumitrescu <[email protected]> Acked-by: Chenbo Xia <[email protected]>
2021-11-04ipsec: support TSORadu Nicolau
Add support for transmit segmentation offload to inline crypto processing mode. This offload is not supported by other offload modes, as at a minimum it requires inline crypto for IPsec to be supported on the network interface. Signed-off-by: Declan Doherty <[email protected]> Signed-off-by: Radu Nicolau <[email protected]> Signed-off-by: Abhijit Sinha <[email protected]> Signed-off-by: Daniel Martin Buckley <[email protected]> Acked-by: Fan Zhang <[email protected]> Acked-by: Konstantin Ananyev <[email protected]> Acked-by: Akhil Goyal <[email protected]>
2021-10-24mbuf: add namespace to offload flagsOlivier Matz
Fix the mbuf offload flags namespace by adding an RTE_ prefix to the name. The old flags remain usable, but a deprecation warning is issued at compilation. Signed-off-by: Olivier Matz <[email protected]> Acked-by: Andrew Rybchenko <[email protected]> Acked-by: Ajit Khaparde <[email protected]> Acked-by: Somnath Kotur <[email protected]>
2021-10-20ipsec: fix telemetry textRadu Nicolau
Set correct tunnel type telemetry text - tunnel type was wrongly set as IPv4-UDP for all types. Fixes: bf5b65a8e781 ("ipsec: support SA telemetry") Signed-off-by: Radu Nicolau <[email protected]> Acked-by: Akhil Goyal <[email protected]>
2021-10-22build/windows: remove separate list of libsBruce Richardson
Rather than maintaining a separate list of libraries which are to be built on windows, use the standard library list and explicitly add to each library that is not to be built a check for windows and disable the library at that per-lib level. As well as shortening the main lib/meson.build file, this also leads to the build summary at the end of the meson config run correctly listing the libraries which are not to be built. Signed-off-by: Bruce Richardson <[email protected]>
2021-10-17cryptodev: rename field in vector structHemant Agrawal
This patch renames the sgl to src_sgl in struct rte_crypto_sym_vec to help differentiating between source and destination sgl. Signed-off-by: Hemant Agrawal <[email protected]> Acked-by: Akhil Goyal <[email protected]> Acked-by: Konstantin Ananyev <[email protected]>
2021-10-17ipsec: support setting initial ESN valueRadu Nicolau
Update IPsec library to support initial ESN value. Signed-off-by: Declan Doherty <[email protected]> Signed-off-by: Radu Nicolau <[email protected]> Signed-off-by: Abhijit Sinha <[email protected]> Signed-off-by: Daniel Martin Buckley <[email protected]> Acked-by: Fan Zhang <[email protected]> Acked-by: Konstantin Ananyev <[email protected]> Acked-by: Akhil Goyal <[email protected]>
2021-10-17ipsec: support SA telemetryRadu Nicolau
Add telemetry support for ipsec SAs. Signed-off-by: Declan Doherty <[email protected]> Signed-off-by: Radu Nicolau <[email protected]> Signed-off-by: Abhijit Sinha <[email protected]> Signed-off-by: Daniel Martin Buckley <[email protected]> Acked-by: Fan Zhang <[email protected]> Acked-by: Konstantin Ananyev <[email protected]> Acked-by: Akhil Goyal <[email protected]>
2021-10-17ipsec: support NAT-TRadu Nicolau
Add support for the IPsec NAT-Traversal use case for Tunnel mode packets. Signed-off-by: Declan Doherty <[email protected]> Signed-off-by: Radu Nicolau <[email protected]> Signed-off-by: Abhijit Sinha <[email protected]> Signed-off-by: Daniel Martin Buckley <[email protected]> Acked-by: Fan Zhang <[email protected]> Acked-by: Konstantin Ananyev <[email protected]> Acked-by: Akhil Goyal <[email protected]>
2021-10-17ipsec: support more AEAD algorithmsRadu Nicolau
Added support for AES_CCM, CHACHA20_POLY1305 and AES_GMAC. Signed-off-by: Declan Doherty <[email protected]> Signed-off-by: Radu Nicolau <[email protected]> Signed-off-by: Abhijit Sinha <[email protected]> Signed-off-by: Daniel Martin Buckley <[email protected]> Acked-by: Fan Zhang <[email protected]> Acked-by: Konstantin Ananyev <[email protected]> Acked-by: Akhil Goyal <[email protected]>
2021-08-17version: 21.11-rc0Thomas Monjalon
Start a new release cycle with empty release notes. The ABI version becomes 22.0. The map files are updated to the new ABI major number (22). The ABI exceptions are dropped and CI ABI checks are disabled because compatibility is not preserved. Signed-off-by: Thomas Monjalon <[email protected]> Acked-by: Ferruh Yigit <[email protected]> Acked-by: David Marchand <[email protected]>
2021-04-21lib: remove librte_ prefix from directory namesBruce Richardson
There is no reason for the DPDK libraries to all have 'librte_' prefix on the directory names. This prefix makes the directory names longer and also makes it awkward to add features referring to individual libraries in the build - should the lib names be specified with or without the prefix. Therefore, we can just remove the library prefix and use the library's unique name as the directory name, i.e. 'eal' rather than 'librte_eal' Signed-off-by: Bruce Richardson <[email protected]>