diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-01-15 18:38:25 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-01-15 18:39:05 +0100 |
| commit | b75f5cb3cb6145796e39a799e4b4c83d7d4b4237 (patch) | |
| tree | cc3348f10c0d32cf2d91c8ea6460af75ae4a5abb /sys/linux/socket_pppox.txt | |
| parent | 46d78f4deb682ac280e65fbc8d7d37f4f23d083e (diff) | |
sys/linux: add AF_PPPOX descriptions
Diffstat (limited to 'sys/linux/socket_pppox.txt')
| -rw-r--r-- | sys/linux/socket_pppox.txt | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/sys/linux/socket_pppox.txt b/sys/linux/socket_pppox.txt new file mode 100644 index 000000000..3fd0cac5f --- /dev/null +++ b/sys/linux/socket_pppox.txt @@ -0,0 +1,130 @@ +# Copyright 2018 syzkaller project authors. All rights reserved. +# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +include <linux/net.h> +include <uapi/linux/if_pppox.h> +include <uapi/linux/ppp-ioctl.h> +include <uapi/linux/if_pppol2tp.h> + +resource sock_pppox[sock] +resource sock_pppoe[sock_pppox] +resource sock_l2tp[sock_pppox] +resource sock_pptp[sock_pppox] + +type pptp_call_id int16be[0:3] +type sid_t int16[0:4] +type l2tp_tunnel16 int16[0:4] +type l2tp_session16 int16[0:4] +type l2tp_tunnel32 int32[0:4] +type l2tp_session32 int32[0:4] + +socket$pppoe(domain const[AF_PPPOX], type const[SOCK_STREAM], proto const[PX_PROTO_OE]) sock_pppoe +connect$pppoe(fd sock_pppoe, addr ptr[in, sockaddr_pppoe], addrlen len[addr]) +ioctl$PPPOEIOCSFWD(fd sock_pppoe, cmd const[PPPOEIOCSFWD], arg ptr[in, sockaddr_pppoe]) +ioctl$PPPOEIOCDFWD(fd sock_pppoe, cmd const[PPPOEIOCDFWD], arg const[0]) + +socket$l2tp(domain const[AF_PPPOX], type const[SOCK_STREAM], proto const[PX_PROTO_OL2TP]) sock_l2tp +connect$l2tp(fd sock_l2tp, addr ptr[in, sockaddr_l2tp], addrlen len[addr]) +ioctl$PPPIOCGL2TPSTATS(fd sock_l2tp, cmd const[PPPIOCGL2TPSTATS], arg ptr[in, array[int8]]) +ioctl$SIOCGIFMTU(fd sock_l2tp, cmd const[SIOCGIFMTU], arg ptr[out, ifreq_mtu]) +ioctl$SIOCSIFMTU(fd sock_l2tp, cmd const[SIOCSIFMTU], arg ptr[in, ifreq_mtu]) +setsockopt$l2tp_PPPOL2TP_SO_DEBUG(fd sock_l2tp, level const[SOL_PPPOL2TP], optname const[PPPOL2TP_SO_DEBUG], optval int32, optlen bytesize[optval]) +setsockopt$l2tp_PPPOL2TP_SO_RECVSEQ(fd sock_l2tp, level const[SOL_PPPOL2TP], optname const[PPPOL2TP_SO_RECVSEQ], optval bool32, optlen bytesize[optval]) +setsockopt$l2tp_PPPOL2TP_SO_SENDSEQ(fd sock_l2tp, level const[SOL_PPPOL2TP], optname const[PPPOL2TP_SO_SENDSEQ], optval bool32, optlen bytesize[optval]) +setsockopt$l2tp_PPPOL2TP_SO_LNSMODE(fd sock_l2tp, level const[SOL_PPPOL2TP], optname const[PPPOL2TP_SO_LNSMODE], optval bool32, optlen bytesize[optval]) +setsockopt$l2tp_PPPOL2TP_SO_REORDERTO(fd sock_l2tp, level const[SOL_PPPOL2TP], optname const[PPPOL2TP_SO_REORDERTO], optval int32, optlen bytesize[optval]) + +socket$pptp(domain const[AF_PPPOX], type const[SOCK_STREAM], proto const[PX_PROTO_PPTP]) sock_pptp +bind$pptp(fd sock_pptp, addr ptr[in, sockaddr_pptp], addrlen len[addr]) +connect$pptp(fd sock_pptp, addr ptr[in, sockaddr_pptp], addrlen len[addr]) + +ioctl$PPPIOCGCHAN(fd sock_pppox, cmd const[PPPIOCGCHAN], arg ptr[out, int32]) +ioctl$PPPIOCGFLAGS(fd sock_pppox, cmd const[PPPIOCGFLAGS], arg ptr[out, int32]) +ioctl$PPPIOCSFLAGS(fd sock_pppox, cmd const[PPPIOCSFLAGS], arg ptr[in, flags[ppp_flags, int32]]) +ioctl$PPPIOCGMRU(fd sock_pppox, cmd const[PPPIOCGMRU], arg ptr[out, int32]) +ioctl$PPPIOCSMRU(fd sock_pppox, cmd const[PPPIOCSMRU], arg ptr[in, int32]) + +sockaddr_pppoe { + sa_family const[AF_PPPOX, int16] + sa_protocol const[PX_PROTO_OE, int32] + pppoe pppoe_addr +} [packed] + +pppoe_addr { + sid sid_t + remote mac_addr + dev devname +} + +sockaddr_l2tp [ + pppol2tp sockaddr_pppol2tp + pppol2tpin6 sockaddr_pppol2tpin6 + pppol2tpv3 sockaddr_pppol2tpv3 + pppol2tpv3in6 sockaddr_pppol2tpv3in6 +] [varlen] + +type sockaddr_pppol2tp sockaddr_l2tp_t[pppol2tp_addr] +type sockaddr_pppol2tpin6 sockaddr_l2tp_t[pppol2tpin6_addr] +type sockaddr_pppol2tpv3 sockaddr_l2tp_t[pppol2tpv3_addr] +type sockaddr_pppol2tpv3in6 sockaddr_l2tp_t[pppol2tpv3in6_addr] + +type sockaddr_l2tp_t[ADDR] { + sa_family const[AF_PPPOX, int16] + sa_protocol const[PX_PROTO_OL2TP, int32] + addr ADDR +} [packed] + +pppol2tp_addr { + pid const[0, int32] + fd sock + addr sockaddr_in + s_tunnel l2tp_tunnel16 + s_session l2tp_session16 + d_tunnel l2tp_tunnel16 + d_session l2tp_session16 +} + +pppol2tpin6_addr { + pid const[0, int32] + fd sock + s_tunnel l2tp_tunnel16 + s_session l2tp_session16 + d_tunnel l2tp_tunnel16 + d_session l2tp_session16 + addr sockaddr_in6 +} + +pppol2tpv3_addr { + pid const[0, int32] + fd sock + addr sockaddr_in + s_tunnel l2tp_tunnel32 + s_session l2tp_session32 + d_tunnel l2tp_tunnel32 + d_session l2tp_session32 +} + +pppol2tpv3in6_addr { + pid const[0, int32] + fd sock + s_tunnel l2tp_tunnel32 + s_session l2tp_session32 + d_tunnel l2tp_tunnel32 + d_session l2tp_session32 + addr sockaddr_in6 +} + +sockaddr_pptp { + sa_family const[AF_PPPOX, int16] + sa_protocol const[PX_PROTO_PPTP, int32] + pptp pptp_addr +# To account for pppoe field in the union. + pad array[const[0, int8], 18] +} [packed] + +pptp_addr { + call_id pptp_call_id + sin_addr ipv4_addr +} + +ppp_flags = SC_COMP_PROT, SC_COMP_AC, SC_COMP_TCP, SC_NO_TCP_CCID, SC_REJ_COMP_AC, SC_REJ_COMP_TCP, SC_CCP_OPEN, SC_CCP_UP, SC_ENABLE_IP, SC_LOOP_TRAFFIC, SC_MULTILINK, SC_MP_SHORTSEQ, SC_COMP_RUN, SC_DECOMP_RUN, SC_MP_XSHORTSEQ, SC_DEBUG, SC_LOG_INPKT, SC_LOG_OUTPKT, SC_LOG_RAWIN, SC_LOG_FLUSH, SC_SYNC, SC_MUST_COMP |
