aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorAndrey Konovalov <andreyknvl@google.com>2017-02-09 16:29:23 +0100
committerAndrey Konovalov <andreyknvl@google.com>2017-02-10 14:05:03 +0100
commit95ea6c804ae3d51cd06343e5657e0a564ec64134 (patch)
treef1cad08d67414217ce37b722fe088bceb2d53de2 /sys
parent52601ba68852d4498791306ac3d8540aaa7354a1 (diff)
sys: improve udp setsockopt
Diffstat (limited to 'sys')
-rw-r--r--sys/socket_inet_udp.txt32
-rw-r--r--sys/socket_inet_udp_amd64.const8
-rw-r--r--sys/socket_inet_udp_arm64.const8
-rw-r--r--sys/socket_inet_udp_ppc64le.const8
4 files changed, 46 insertions, 10 deletions
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 <linux/udp.h>
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