From 95ea6c804ae3d51cd06343e5657e0a564ec64134 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Thu, 9 Feb 2017 16:29:23 +0100 Subject: sys: improve udp setsockopt --- sys/socket_inet_udp.txt | 32 ++++++++++++++++++++++---------- sys/socket_inet_udp_amd64.const | 8 ++++++++ sys/socket_inet_udp_arm64.const | 8 ++++++++ sys/socket_inet_udp_ppc64le.const | 8 ++++++++ 4 files changed, 46 insertions(+), 10 deletions(-) (limited to 'sys') diff --git a/sys/socket_inet_udp.txt b/sys/socket_inet_udp.txt index 37b464f97..3447a300e 100644 --- a/sys/socket_inet_udp.txt +++ b/sys/socket_inet_udp.txt @@ -7,26 +7,38 @@ include resource sock_udp[sock_in] -socket$udp(domain const[AF_INET], type const[SOCK_DGRAM], proto const[0]) sock_udp -socketpair$udp(domain const[AF_INET], type const[SOCK_DGRAM], proto const[0], fds ptr[out, udp_pair]) - udp_pair { f0 sock_udp f1 sock_udp } -resource sock_udp6[sock_in6] +socket$udp(domain const[AF_INET], type const[SOCK_DGRAM], proto const[0]) sock_udp +socketpair$udp(domain const[AF_INET], type const[SOCK_DGRAM], proto const[0], fds ptr[out, udp_pair]) -socket$udp6(domain const[AF_INET6], type const[SOCK_DGRAM], proto const[0]) sock_udp6 -socketpair$udp6(domain const[AF_INET6], type const[SOCK_DGRAM], proto const[0], fds ptr[out, udp6_pair]) +resource sock_udp6[sock_in6] udp6_pair { f0 sock_udp6 f1 sock_udp6 } -getsockopt$udp_int(fd sock_udp, level const[IPPROTO_UDP], optname const[UDP_CORK], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]]) -setsockopt$udp_int(fd sock_udp, level const[IPPROTO_UDP], optname const[UDP_CORK], optval ptr[in, int32], optlen len[optval]) +socket$udp6(domain const[AF_INET6], type const[SOCK_DGRAM], proto const[0]) sock_udp6 +socketpair$udp6(domain const[AF_INET6], type const[SOCK_DGRAM], proto const[0], fds ptr[out, udp6_pair]) + +# Generic UDP socket options + +udp_option_types_int = UDP_CORK, UDP_ENCAP, UDP_NO_CHECK6_TX, UDP_NO_CHECK6_RX + +getsockopt$udp_int(fd sock_udp, level const[IPPROTO_UDP], optname flags[udp_option_types_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]]) +setsockopt$udp_int(fd sock_udp, level const[IPPROTO_UDP], optname flags[udp_option_types_int], optval ptr[in, int32], optlen len[optval]) +getsockopt$udp6_int(fd sock_udp6, level const[IPPROTO_UDP], optname flags[udp_option_types_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]]) +setsockopt$udp6_int(fd sock_udp6, level const[IPPROTO_UDP], optname flags[udp_option_types_int], optval ptr[in, int32], optlen len[optval]) + +# Specific UDP socket options + +udp_encap_option_values = UDP_ENCAP_ESPINUDP_NON_IKE, UDP_ENCAP_ESPINUDP, UDP_ENCAP_L2TPINUDP, UDP_ENCAP_GTP0, UDP_ENCAP_GTP1U + +setsockopt$udp_encap(fd sock_udp, level const[IPPROTO_UDP], optname const[UDP_ENCAP], optval ptr[in, flags[udp_encap_option_values, int32]], optlen len[optval]) +setsockopt$udp6_encap(fd sock_udp6, level const[IPPROTO_UDP], optname const[UDP_ENCAP], optval ptr[in, flags[udp_encap_option_values, int32]], optlen len[optval]) -getsockopt$udp6_int(fd sock_udp6, level const[IPPROTO_UDP], optname const[UDP_CORK], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]]) -setsockopt$udp6_int(fd sock_udp6, level const[IPPROTO_UDP], optname const[UDP_CORK], optval ptr[in, int32], optlen len[optval]) +# TODO: UDPLITE_SEND_CSCOV, UDPLITE_RECV_CSCOV diff --git a/sys/socket_inet_udp_amd64.const b/sys/socket_inet_udp_amd64.const index c48c1d9ab..4fcd3dfa7 100644 --- a/sys/socket_inet_udp_amd64.const +++ b/sys/socket_inet_udp_amd64.const @@ -4,6 +4,14 @@ AF_INET6 = 10 IPPROTO_UDP = 17 SOCK_DGRAM = 2 UDP_CORK = 1 +UDP_ENCAP = 100 +UDP_ENCAP_ESPINUDP = 2 +UDP_ENCAP_ESPINUDP_NON_IKE = 1 +UDP_ENCAP_GTP0 = 4 +UDP_ENCAP_GTP1U = 5 +UDP_ENCAP_L2TPINUDP = 3 +UDP_NO_CHECK6_RX = 102 +UDP_NO_CHECK6_TX = 101 __NR_getsockopt = 55 __NR_setsockopt = 54 __NR_socket = 41 diff --git a/sys/socket_inet_udp_arm64.const b/sys/socket_inet_udp_arm64.const index a76517a13..111726315 100644 --- a/sys/socket_inet_udp_arm64.const +++ b/sys/socket_inet_udp_arm64.const @@ -4,6 +4,14 @@ AF_INET6 = 10 IPPROTO_UDP = 17 SOCK_DGRAM = 2 UDP_CORK = 1 +UDP_ENCAP = 100 +UDP_ENCAP_ESPINUDP = 2 +UDP_ENCAP_ESPINUDP_NON_IKE = 1 +UDP_ENCAP_GTP0 = 4 +UDP_ENCAP_GTP1U = 5 +UDP_ENCAP_L2TPINUDP = 3 +UDP_NO_CHECK6_RX = 102 +UDP_NO_CHECK6_TX = 101 __NR_getsockopt = 209 __NR_setsockopt = 208 __NR_socket = 198 diff --git a/sys/socket_inet_udp_ppc64le.const b/sys/socket_inet_udp_ppc64le.const index db1f23451..d30a309f5 100644 --- a/sys/socket_inet_udp_ppc64le.const +++ b/sys/socket_inet_udp_ppc64le.const @@ -4,6 +4,14 @@ AF_INET6 = 10 IPPROTO_UDP = 17 SOCK_DGRAM = 2 UDP_CORK = 1 +UDP_ENCAP = 100 +UDP_ENCAP_ESPINUDP = 2 +UDP_ENCAP_ESPINUDP_NON_IKE = 1 +UDP_ENCAP_GTP0 = 4 +UDP_ENCAP_GTP1U = 5 +UDP_ENCAP_L2TPINUDP = 3 +UDP_NO_CHECK6_RX = 102 +UDP_NO_CHECK6_TX = 101 __NR_getsockopt = 340 __NR_setsockopt = 339 __NR_socket = 326 -- cgit mrf-deployment