Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

bpf, tls: add tls header to tools infrastructure

Andrey reported a build error for the BPF kselftest suite when compiled on
a machine which does not have tls related header bits installed natively:

test_sockmap.c:120:23: fatal error: linux/tls.h: No such file or directory
#include <linux/tls.h>
^
compilation terminated.

Fix it by adding the header to the tools include infrastructure and add
definitions such as SOL_TLS that could potentially be missing.

Fixes: e9dd904708c4 ("bpf: add tls support for testing in test_sockmap")
Reported-by: Andrey Ignatov <rdna@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>

authored by

Daniel Borkmann and committed by
Alexei Starovoitov
421f4292 2c59f06c

+86 -5
+78
tools/include/uapi/linux/tls.h
··· 1 + /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR Linux-OpenIB) */ 2 + /* 3 + * Copyright (c) 2016-2017, Mellanox Technologies. All rights reserved. 4 + * 5 + * This software is available to you under a choice of one of two 6 + * licenses. You may choose to be licensed under the terms of the GNU 7 + * General Public License (GPL) Version 2, available from the file 8 + * COPYING in the main directory of this source tree, or the 9 + * OpenIB.org BSD license below: 10 + * 11 + * Redistribution and use in source and binary forms, with or 12 + * without modification, are permitted provided that the following 13 + * conditions are met: 14 + * 15 + * - Redistributions of source code must retain the above 16 + * copyright notice, this list of conditions and the following 17 + * disclaimer. 18 + * 19 + * - Redistributions in binary form must reproduce the above 20 + * copyright notice, this list of conditions and the following 21 + * disclaimer in the documentation and/or other materials 22 + * provided with the distribution. 23 + * 24 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 25 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 26 + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 27 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 28 + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 29 + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 30 + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 31 + * SOFTWARE. 32 + */ 33 + 34 + #ifndef _UAPI_LINUX_TLS_H 35 + #define _UAPI_LINUX_TLS_H 36 + 37 + #include <linux/types.h> 38 + 39 + /* TLS socket options */ 40 + #define TLS_TX 1 /* Set transmit parameters */ 41 + #define TLS_RX 2 /* Set receive parameters */ 42 + 43 + /* Supported versions */ 44 + #define TLS_VERSION_MINOR(ver) ((ver) & 0xFF) 45 + #define TLS_VERSION_MAJOR(ver) (((ver) >> 8) & 0xFF) 46 + 47 + #define TLS_VERSION_NUMBER(id) ((((id##_VERSION_MAJOR) & 0xFF) << 8) | \ 48 + ((id##_VERSION_MINOR) & 0xFF)) 49 + 50 + #define TLS_1_2_VERSION_MAJOR 0x3 51 + #define TLS_1_2_VERSION_MINOR 0x3 52 + #define TLS_1_2_VERSION TLS_VERSION_NUMBER(TLS_1_2) 53 + 54 + /* Supported ciphers */ 55 + #define TLS_CIPHER_AES_GCM_128 51 56 + #define TLS_CIPHER_AES_GCM_128_IV_SIZE 8 57 + #define TLS_CIPHER_AES_GCM_128_KEY_SIZE 16 58 + #define TLS_CIPHER_AES_GCM_128_SALT_SIZE 4 59 + #define TLS_CIPHER_AES_GCM_128_TAG_SIZE 16 60 + #define TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE 8 61 + 62 + #define TLS_SET_RECORD_TYPE 1 63 + #define TLS_GET_RECORD_TYPE 2 64 + 65 + struct tls_crypto_info { 66 + __u16 version; 67 + __u16 cipher_type; 68 + }; 69 + 70 + struct tls12_crypto_info_aes_gcm_128 { 71 + struct tls_crypto_info info; 72 + unsigned char iv[TLS_CIPHER_AES_GCM_128_IV_SIZE]; 73 + unsigned char key[TLS_CIPHER_AES_GCM_128_KEY_SIZE]; 74 + unsigned char salt[TLS_CIPHER_AES_GCM_128_SALT_SIZE]; 75 + unsigned char rec_seq[TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE]; 76 + }; 77 + 78 + #endif /* _UAPI_LINUX_TLS_H */
+8 -5
tools/testing/selftests/bpf/test_sockmap.c
··· 28 28 #include <linux/sock_diag.h> 29 29 #include <linux/bpf.h> 30 30 #include <linux/if_link.h> 31 + #include <linux/tls.h> 31 32 #include <assert.h> 32 33 #include <libgen.h> 33 34 ··· 43 42 44 43 int running; 45 44 static void running_handler(int a); 45 + 46 + #ifndef TCP_ULP 47 + # define TCP_ULP 31 48 + #endif 49 + #ifndef SOL_TLS 50 + # define SOL_TLS 282 51 + #endif 46 52 47 53 /* randomly selected ports for testing on lo */ 48 54 #define S1_PORT 10000 ··· 121 113 } 122 114 printf("\n"); 123 115 } 124 - 125 - #define TCP_ULP 31 126 - #define TLS_TX 1 127 - #define TLS_RX 2 128 - #include <linux/tls.h> 129 116 130 117 char *sock_to_string(int s) 131 118 {