ssd = socket(family, SOCK_DGRAM, blite? IPPROTO_UDPLITE: 0);
if (ssd < 0)
- err(EXIT_FAILURE,
+ err(errno == EPROTONOSUPPORT? EXIT_EPROTONOSUPPORT: EXIT_FAILURE,
"failed to make a udp socket for server");
if (setsockopt(ssd, SOL_SOCKET,
csd = socket(family, SOCK_DGRAM, blite? IPPROTO_UDPLITE: 0);
if (csd < 0) {
- err(EXIT_FAILURE,
+ err(errno == EPROTONOSUPPORT? EXIT_EPROTONOSUPPORT: EXIT_FAILURE,
"failed to make a udp client socket");
}
ts_failed "failed to use a AF_VSOCK socket: $msg [$err]";;
esac
}
+
+function lsfd_check_udp_lite
+{
+ ts_check_test_command "$TS_HELPER_MKFDS"
+
+ local ip=$1
+ if [[ "$ip" == 4 ]]; then
+ ip=
+ fi
+
+ "$TS_HELPER_MKFDS" --dont-pause --quiet "udp$ip" 3 4 lite=1
+ err=$?
+
+ case $err in
+ 0)
+ return;;
+ "$EPROTONOSUPPORT")
+ ts_skip "no UDP-Lite available (IPv$ip)";;
+ *)
+ ts_failed "failed to use a IPPROTO_UDPLITE protocol: $msg [$err]";;
+ esac
+}