1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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_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, SC_RCV_B7_0, SC_RCV_B7_1, SC_RCV_EVNP, SC_RCV_ODDP
|