| # 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_t[int32]]) |
| ioctl$SIOCSIFMTU(fd sock_l2tp, cmd const[SIOCSIFMTU], arg ptr[in, ifreq_t[int32]]) |
| 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]) |
| |
| define SOCKADDR_PPPOX_SIZE sizeof(struct sockaddr_pppox) |
| |
| sockaddr_pppoe { |
| sa_family const[AF_PPPOX, int16] |
| sa_protocol const[PX_PROTO_OE, int32] |
| pppoe pppoe_addr |
| } [packed, size[SOCKADDR_PPPOX_SIZE]] |
| |
| 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 |
| } [packed, size[SOCKADDR_PPPOX_SIZE]] |
| |
| 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 |