diff --git a/gtests/net/packetdrill/tests/bsd/fast_retransmit/fr-4pkt-sack-bsd.pkt b/gtests/net/packetdrill/tests/bsd/tcp/fast_retransmit/fr-4pkt-sack-bsd.pkt
similarity index 100%
rename from gtests/net/packetdrill/tests/bsd/fast_retransmit/fr-4pkt-sack-bsd.pkt
rename to gtests/net/packetdrill/tests/bsd/tcp/fast_retransmit/fr-4pkt-sack-bsd.pkt
diff --git a/gtests/net/packetdrill/tests/bsd/udplite/udplite-cscov-recv.pkt b/gtests/net/packetdrill/tests/bsd/udplite/udplite-cscov-recv.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..ebdefdf7e2a1e59802737347d871f85d1fb8a096
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/udplite/udplite-cscov-recv.pkt
@@ -0,0 +1,53 @@
+ 0.000 socket(..., SOCK_DGRAM, IPPROTO_UDPLITE) = 3
++0.000 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.000 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
+//
++0.100 sendto(3, ..., 1000, 0, ..., ...) = 1000
++0.000 > udplite(1000, 0)
+//
++0.000 getsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [0], [4]) = 0
++0.000 < udplite(1280, 0)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = 1280
++0.000 < udplite(1280, 1288)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = 1280
++0.000 < udplite(1280, 8)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = -1 EWOULDBLOCK (Operation would block)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [8], 4) = 0
++0.000 getsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [8], [4]) = 0
++0.000 < udplite(1280, 8)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = 1280
+//
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [10], 4) = 0
++0.000 < udplite(1280, 0)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = 1280
++0.000 < udplite(1280, 1)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = -1 EWOULDBLOCK (Operation would block)
++0.000 < udplite(1280, 2)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = -1 EWOULDBLOCK (Operation would block)
++0.000 < udplite(1280, 3)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = -1 EWOULDBLOCK (Operation would block)
++0.000 < udplite(1280, 4)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = -1 EWOULDBLOCK (Operation would block)
++0.000 < udplite(1280, 5)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = -1 EWOULDBLOCK (Operation would block)
++0.000 < udplite(1280, 6)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = -1 EWOULDBLOCK (Operation would block)
++0.000 < udplite(1280, 7)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = -1 EWOULDBLOCK (Operation would block)
++0.000 < udplite(1280, 8)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = -1 EWOULDBLOCK (Operation would block)
++0.000 < udplite(1280, 9) 
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = -1 EWOULDBLOCK (Operation would block)
++0.000 < udplite(1280, 10)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = 1280
++0.000 < udplite(0, 0)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = 0
++0.000 < udplite(0, 8)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = 0
++0.000 < udplite(1, 0)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = 1
++0.000 < udplite(1, 9)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = 1
++0.000 < udplite(1, 10)
++0.100 recvfrom(3, ..., 1280, 0, ..., ...) = -1 EWOULDBLOCK (Operation would block)
++0.100 close(3) = 0
diff --git a/gtests/net/packetdrill/tests/bsd/udplite/udplite-cscov-send.pkt b/gtests/net/packetdrill/tests/bsd/udplite/udplite-cscov-send.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..ea3ba2408bc533b2f3a4d22723afe62a596421bc
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/udplite/udplite-cscov-send.pkt
@@ -0,0 +1,14 @@
+ 0.000 socket(..., SOCK_DGRAM, IPPROTO_UDPLITE) = 3
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, [8], 4) = 0
++0.000 sendto(3, ..., 1, 0, ..., ...) = 1
++0.000 > udplite(1, 8)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, [508], 4) = 0
++0.100 sendto(3, ..., 1000, 0, ..., ...) = 1000
++0.000 > udplite(1000, 508)
++0.100 sendto(3, ..., 499, 0, ..., ...) = 499
++0.000 > udplite(499, 0)
++0.100 sendto(3, ..., 500, 0, ..., ...) = 500
++0.000 > udplite(500, 0)
++0.100 sendto(3, ..., 501, 0, ..., ...) = 501
++0.000 > udplite(501, 508)
++0.100 close(3) = 0
diff --git a/gtests/net/packetdrill/tests/bsd/udplite/udplite-cscov-sockopt.pkt b/gtests/net/packetdrill/tests/bsd/udplite/udplite-cscov-sockopt.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..8cebe26f19d3ec463e7013447ad8ae9db04881f3
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/udplite/udplite-cscov-sockopt.pkt
@@ -0,0 +1,29 @@
+ 0.000 socket(..., SOCK_DGRAM, IPPROTO_UDPLITE) = 3
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, [-1], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, [0], 4) = 0 
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, [1], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, [2], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, [3], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, [4], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, [5], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, [6], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, [7], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, [8], 4) = 0 
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, [65535], 4) = 0
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, [65536], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, [4294967295], 4) = -1 (Invalid parameter)
+// 
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [-1], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [0], 4) = 0
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [1], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [2], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [3], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [4], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [5], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [6], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [7], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [8], 4) = 0
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [65535], 4) = 0
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [65536], 4) = -1 EINVAL (Invalid parameter)
++0.000 setsockopt(3, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, [4294967295], 4) = -1 (Invalid parameter)
++0.000 close(3) = 0
diff --git a/gtests/net/packetdrill/tests/bsd/udplite/udplite-port-unreachable.pkt b/gtests/net/packetdrill/tests/bsd/udplite/udplite-port-unreachable.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..9ca4cf66a9f8f09a2284bdb0d8520a566cc3cbf9
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/udplite/udplite-port-unreachable.pkt
@@ -0,0 +1,14 @@
+// Test handling of incoming ICMP packets.
+
+// Connect the socket.
+ 0.000 socket(..., SOCK_DGRAM, IPPROTO_UDPLITE) = 3
++0.000 bind(3, ..., ...) = 0
++0.000 connect(3, ..., ...) = 0
+// Trigger the ICMP message.
++0.050 write(3, ..., 1000) = 1000 
++0.000 > udplite(1000, 0)
++0.000 < [udplite(1000, 0)] icmp unreachable port_unreachable
+// Check if applications get notified.
++0.050 write(3, ..., 1000) = -1 ECONNREFUSED (Connection refused) 
+// Termination of the test.
++0.000 close(3) = 0
diff --git a/gtests/net/packetdrill/tests/bsd/udplite/udplite-protocol-unreachable.pkt b/gtests/net/packetdrill/tests/bsd/udplite/udplite-protocol-unreachable.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..909db722207525dae2be1b7057771b03f72024b7
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/udplite/udplite-protocol-unreachable.pkt
@@ -0,0 +1,14 @@
+// Test handling of incoming ICMP packets.
+
+// Connect the socket.
+ 0.000 socket(..., SOCK_DGRAM, IPPROTO_UDPLITE) = 3
++0.000 bind(3, ..., ...) = 0
++0.000 connect(3, ..., ...) = 0
+// Trigger the ICMP message.
++0.050 write(3, ..., 1000) = 1000 
++0.000 > udplite(1000, 0)
++0.100 < [udplite(1000, 0)] icmp unreachable protocol_unreachable
+// Check if applications get notified.
++0.050 write(3, ..., 1000) = -1 ECONNREFUSED (Connection refused) 
+// Termination of the test.
++0.000 close(3) = 0