summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorJakub Kicinski <jakub.kicinski@netronome.com>2019-07-19 13:29:24 -0400
committerDaniel Borkmann <daniel@iogearbox.net>2019-07-22 10:04:17 -0400
commit78b5dc3d68dcb1d18d805e8f4e565f19ed6d976a (patch)
treee477b7d755d3b5a3606489b37138f76cfef85a43 /tools
parentcf32526c8842781e32d6652a1e01e83b20490948 (diff)
selftests/tls: test error codes around TLS ULP installation
Test the error codes returned when TCP connection is not in ESTABLISHED state. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'tools')
-rw-r--r--tools/testing/selftests/net/tls.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/tools/testing/selftests/net/tls.c b/tools/testing/selftests/net/tls.c
index 194826fee4f7..10df77326d34 100644
--- a/tools/testing/selftests/net/tls.c
+++ b/tools/testing/selftests/net/tls.c
@@ -911,6 +911,58 @@ TEST_F(tls, control_msg)
911 EXPECT_EQ(memcmp(buf, test_str, send_len), 0); 911 EXPECT_EQ(memcmp(buf, test_str, send_len), 0);
912} 912}
913 913
914TEST(non_established) {
915 struct tls12_crypto_info_aes_gcm_256 tls12;
916 struct sockaddr_in addr;
917 int sfd, ret, fd;
918 socklen_t len;
919
920 len = sizeof(addr);
921
922 memset(&tls12, 0, sizeof(tls12));
923 tls12.info.version = TLS_1_2_VERSION;
924 tls12.info.cipher_type = TLS_CIPHER_AES_GCM_256;
925
926 addr.sin_family = AF_INET;
927 addr.sin_addr.s_addr = htonl(INADDR_ANY);
928 addr.sin_port = 0;
929
930 fd = socket(AF_INET, SOCK_STREAM, 0);
931 sfd = socket(AF_INET, SOCK_STREAM, 0);
932
933 ret = bind(sfd, &addr, sizeof(addr));
934 ASSERT_EQ(ret, 0);
935 ret = listen(sfd, 10);
936 ASSERT_EQ(ret, 0);
937
938 ret = setsockopt(fd, IPPROTO_TCP, TCP_ULP, "tls", sizeof("tls"));
939 EXPECT_EQ(ret, -1);
940 /* TLS ULP not supported */
941 if (errno == ENOENT)
942 return;
943 EXPECT_EQ(errno, ENOTSUPP);
944
945 ret = setsockopt(sfd, IPPROTO_TCP, TCP_ULP, "tls", sizeof("tls"));
946 EXPECT_EQ(ret, -1);
947 EXPECT_EQ(errno, ENOTSUPP);
948
949 ret = getsockname(sfd, &addr, &len);
950 ASSERT_EQ(ret, 0);
951
952 ret = connect(fd, &addr, sizeof(addr));
953 ASSERT_EQ(ret, 0);
954
955 ret = setsockopt(fd, IPPROTO_TCP, TCP_ULP, "tls", sizeof("tls"));
956 ASSERT_EQ(ret, 0);
957
958 ret = setsockopt(fd, IPPROTO_TCP, TCP_ULP, "tls", sizeof("tls"));
959 EXPECT_EQ(ret, -1);
960 EXPECT_EQ(errno, EEXIST);
961
962 close(fd);
963 close(sfd);
964}
965
914TEST(keysizes) { 966TEST(keysizes) {
915 struct tls12_crypto_info_aes_gcm_256 tls12; 967 struct tls12_crypto_info_aes_gcm_256 tls12;
916 struct sockaddr_in addr; 968 struct sockaddr_in addr;