selftest/tls: Add test to verify received 'type' of non-data record
authorVakul Garg <vakul.garg@nxp.com>
Wed, 20 Feb 2019 08:43:00 +0000 (08:43 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 20 Feb 2019 19:05:55 +0000 (11:05 -0800)
Test case 'control_msg' has been updated to peek non-data record and
then verify the type of record received. Subsequently, the same record
is retrieved without MSG_PEEK flag in recvmsg().

Signed-off-by: Vakul Garg <vakul.garg@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/net/tls.c

index 4ac50ccb3272f12f9860e562b517de628d47e372..47ddfc154036e358d01f32ee9f46250202c2d703 100644 (file)
@@ -753,6 +753,20 @@ TEST_F(tls, control_msg)
        EXPECT_EQ(recv(self->cfd, buf, send_len, 0), -1);
 
        vec.iov_base = buf;
+       EXPECT_EQ(recvmsg(self->cfd, &msg, MSG_WAITALL | MSG_PEEK), send_len);
+
+       cmsg = CMSG_FIRSTHDR(&msg);
+       EXPECT_NE(cmsg, NULL);
+       EXPECT_EQ(cmsg->cmsg_level, SOL_TLS);
+       EXPECT_EQ(cmsg->cmsg_type, TLS_GET_RECORD_TYPE);
+       record_type = *((unsigned char *)CMSG_DATA(cmsg));
+       EXPECT_EQ(record_type, 100);
+       EXPECT_EQ(memcmp(buf, test_str, send_len), 0);
+
+       /* Recv the message again without MSG_PEEK */
+       record_type = 0;
+       memset(buf, 0, sizeof(buf));
+
        EXPECT_EQ(recvmsg(self->cfd, &msg, MSG_WAITALL), send_len);
        cmsg = CMSG_FIRSTHDR(&msg);
        EXPECT_NE(cmsg, NULL);