Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Sebastian Schrader
Kea
Commits
48be5f5c
Commit
48be5f5c
authored
Apr 15, 2016
by
Shawn Routhier
Browse files
Merge branch 'trac4269' Merge 4269 after updates to fix conflicts
parents
79bae943
7549535b
Changes
11
Expand all
Hide whitespace changes
Inline
Side-by-side
ChangeLog
View file @
48be5f5c
1106. [func] sar
Added support for accessing DHCPv6 packet fields message type
and transaction id in a classification expression.
(Trac #4269, git <tbd>)
1105. [bug] pallotron
perfdhcp uses the same transaction id throughout the DORA
exchange to adhere with RFC 2131.
...
...
@@ -5,7 +10,7 @@
1104. [func] tmark
The DDNS parameter, replace-client-name, has been changed from a boolean
to list of modes, which provides greater flexibility in when the Kea
to list of modes, which provides greater flexibility in when the Kea
servers replace or supply DNS names for clients. This is supported both
kea-dhcp4 and kea-dhcp6.
(Trac #4529, git 45e56d7aa0d4a6224a1a28941f6cb11575391222)
...
...
@@ -19,7 +24,7 @@
1102. [func] sar
Added access to the peer address, link address and option
information added by relays in a DHCPv6 message.
(Trac $426
9
, git bb00d9d205ee047961ba70417d7ce02c37d80ce7)
(Trac $426
5
, git bb00d9d205ee047961ba70417d7ce02c37d80ce7)
1101. [bug] stephen
Made DHCPSRV_MEMFILE_LFC_UNREGISTER_TIMER_FAILED a debug message as the
...
...
doc/guide/classify.xml
View file @
48be5f5c
...
...
@@ -187,6 +187,20 @@ sub-option with code "code" from the DHCPv4 Relay Agent Information option
<entry>
relay6[nest].linkaddr
</entry>
<!-- <entry>2001:DB8::1</entry> -->
n
<entry>
The value of the link address field from the relay encapsulation "nest"
</entry>
</row>
<row>
<entry>
Message Type in DHCPv6 packet
</entry>
<entry>
pkt6.msgtype
</entry>
<!-- <entry>1</entry>
-->
<entry>
The value of the message type field in the DHCPv6 packet.
</entry>
</row>
<row>
<entry>
Transaction ID in DHCPv6 packet
</entry>
<entry>
pkt6.transid
</entry>
<!-- <entry>12345</entry>
-->
<entry>
The value of the transaction id in the DHCPv6 packet.
</entry>
</row>
</tbody>
</tgroup>
...
...
@@ -247,6 +261,14 @@ sub-option with code "code" from the DHCPv4 Relay Agent Information option
"option", for instance "relay6[nest].option[code].exists" is supported.
</para>
<para>
"pkt6" refers to information from the client request. To access any
information from an intermediate relay use "relay6". "pkt6.msgtype"
and "pkt6.transid" output a 4 byte binary string for the message type
or transaction id. For example the message type SOLICIT will be
"0x00000001" or simply 1 as in "pkt6.msgtype == 1".
</para>
<para>
<table
frame=
"all"
id=
"classification-expressions-list"
>
<title>
List of Classification Expressions
</title>
...
...
src/lib/eval/lexer.cc
View file @
48be5f5c
...
...
@@ -483,8 +483,8 @@ static void yy_fatal_error (yyconst char msg[] );
(yy_c_buf_p) = yy_cp;
/* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
#define YY_NUM_RULES 3
0
#define YY_END_OF_BUFFER 3
1
#define YY_NUM_RULES 3
3
#define YY_END_OF_BUFFER 3
4
/* This struct is not used in this scanner,
but its presence is necessary. */
struct
yy_trans_info
...
...
@@ -492,43 +492,46 @@ struct yy_trans_info
flex_int32_t
yy_verify
;
flex_int32_t
yy_nxt
;
};
static
yyconst
flex_int16_t
yy_acclist
[
1
62
]
=
static
yyconst
flex_int16_t
yy_acclist
[
1
83
]
=
{
0
,
31
,
29
,
30
,
1
,
29
,
30
,
2
,
30
,
29
,
30
,
24
,
29
,
30
,
25
,
29
,
30
,
28
,
29
,
30
,
29
,
30
,
23
,
29
,
30
,
5
,
29
,
30
,
5
,
29
,
30
,
29
,
30
,
29
,
30
,
29
,
30
,
16390
,
29
,
30
,
16390
,
26
,
29
,
30
,
27
,
29
,
30
,
29
,
30
,
16390
,
29
,
30
,
16390
,
29
,
30
,
16390
,
29
,
30
,
16390
,
29
,
30
,
16390
,
29
,
30
,
16390
,
29
,
30
,
16390
,
29
,
30
,
16390
,
29
,
30
,
16390
,
29
,
30
,
16390
,
29
,
30
,
16390
,
1
,
2
,
3
,
5
,
5
,
7
,
8
,
16390
,
16390
,
8198
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
22
,
16390
,
16390
,
16390
,
16390
,
16390
,
4
,
7
,
18
,
16390
,
21
,
16390
,
16390
,
16390
,
15
,
16390
,
16390
,
20
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
14
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
19
,
16390
,
16
,
16390
,
16390
,
9
,
16390
,
16390
,
10
,
16390
,
11
,
16390
,
16390
,
7
,
16390
,
16390
,
16390
,
13
,
16390
,
12
,
16390
,
16390
,
17
,
16390
34
,
32
,
33
,
1
,
32
,
33
,
2
,
33
,
32
,
33
,
24
,
32
,
33
,
25
,
32
,
33
,
28
,
32
,
33
,
32
,
33
,
23
,
32
,
33
,
5
,
32
,
33
,
5
,
32
,
33
,
32
,
33
,
32
,
33
,
32
,
33
,
16390
,
32
,
33
,
16390
,
26
,
32
,
33
,
27
,
32
,
33
,
32
,
33
,
16390
,
32
,
33
,
16390
,
32
,
33
,
16390
,
32
,
33
,
16390
,
32
,
33
,
16390
,
32
,
33
,
16390
,
32
,
33
,
16390
,
32
,
33
,
16390
,
32
,
33
,
16390
,
32
,
33
,
16390
,
32
,
33
,
16390
,
32
,
33
,
16390
,
1
,
2
,
3
,
5
,
5
,
7
,
8
,
16390
,
16390
,
8198
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
22
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
4
,
7
,
18
,
16390
,
21
,
16390
,
16390
,
16390
,
15
,
16390
,
16390
,
16390
,
20
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
29
,
16390
,
16390
,
16390
,
14
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
16390
,
19
,
16390
,
16
,
16390
,
16390
,
16390
,
9
,
16390
,
16390
,
10
,
16390
,
11
,
16390
,
16390
,
16390
,
7
,
16390
,
30
,
16390
,
16390
,
16390
,
31
,
16390
,
13
,
16390
,
12
,
16390
,
16390
,
17
,
16390
}
;
static
yyconst
flex_int16_t
yy_accept
[
1
14
]
=
static
yyconst
flex_int16_t
yy_accept
[
1
30
]
=
{
0
,
1
,
1
,
1
,
2
,
4
,
7
,
9
,
11
,
14
,
17
,
20
,
22
,
25
,
28
,
31
,
33
,
35
,
38
,
41
,
44
,
47
,
50
,
53
,
56
,
59
,
62
,
65
,
68
,
71
,
74
,
77
,
80
,
81
,
82
,
82
,
83
,
84
,
84
,
85
,
85
,
85
,
85
,
85
,
86
,
87
,
87
,
87
,
88
,
89
,
90
,
91
,
92
,
93
,
94
,
95
,
96
,
97
,
98
,
100
,
101
,
102
,
103
,
104
,
104
,
105
,
106
,
108
,
110
,
111
,
112
,
114
,
115
,
117
,
118
,
119
,
120
,
121
,
122
,
122
,
123
,
124
,
125
,
126
,
127
,
128
,
129
,
131
,
131
,
132
,
133
,
134
,
135
,
136
,
137
,
138
,
138
,
140
,
142
,
143
,
145
,
146
,
148
,
150
,
151
,
152
,
153
,
154
,
155
,
157
,
159
,
160
,
162
,
162
77
,
80
,
83
,
84
,
85
,
85
,
86
,
87
,
87
,
88
,
88
,
88
,
88
,
88
,
89
,
90
,
90
,
90
,
91
,
92
,
93
,
94
,
95
,
96
,
97
,
98
,
99
,
100
,
101
,
102
,
104
,
105
,
106
,
107
,
108
,
109
,
110
,
110
,
111
,
112
,
114
,
116
,
117
,
118
,
120
,
121
,
122
,
124
,
125
,
126
,
127
,
128
,
129
,
130
,
131
,
131
,
132
,
133
,
134
,
135
,
136
,
137
,
139
,
140
,
141
,
143
,
144
,
144
,
145
,
146
,
147
,
148
,
149
,
150
,
151
,
152
,
153
,
153
,
155
,
157
,
158
,
159
,
161
,
162
,
164
,
166
,
167
,
168
,
169
,
170
,
172
,
173
,
174
,
176
,
178
,
180
,
181
,
183
,
183
}
;
static
yyconst
YY_CHAR
yy_ec
[
256
]
=
...
...
@@ -544,9 +547,9 @@ static yyconst YY_CHAR yy_ec[256] =
17
,
17
,
17
,
17
,
17
,
17
,
17
,
18
,
17
,
17
,
19
,
1
,
20
,
1
,
21
,
1
,
22
,
23
,
24
,
25
,
26
,
16
,
27
,
28
,
29
,
17
,
30
,
31
,
17
,
3
2
,
3
3
,
3
4
,
17
,
3
5
,
3
6
,
3
7
,
3
8
,
17
,
17
,
39
,
4
0
,
17
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
26
,
16
,
27
,
28
,
29
,
17
,
30
,
31
,
32
,
3
3
,
3
4
,
3
5
,
17
,
3
6
,
3
7
,
3
8
,
3
9
,
17
,
17
,
40
,
4
1
,
17
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
...
...
@@ -563,128 +566,136 @@ static yyconst YY_CHAR yy_ec[256] =
1
,
1
,
1
,
1
,
1
}
;
static
yyconst
YY_CHAR
yy_meta
[
4
1
]
=
static
yyconst
YY_CHAR
yy_meta
[
4
2
]
=
{
0
,
1
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
3
,
4
,
4
,
4
,
4
,
5
,
1
,
4
,
1
,
1
,
1
,
1
,
1
,
4
,
4
,
4
,
4
,
4
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
}
;
static
yyconst
flex_uint16_t
yy_base
[
1
18
]
=
static
yyconst
flex_uint16_t
yy_base
[
1
34
]
=
{
0
,
0
,
0
,
220
,
221
,
217
,
215
,
213
,
221
,
221
,
221
,
31
,
221
,
36
,
33
,
202
,
200
,
74
,
105
,
221
,
221
,
24
,
181
,
174
,
186
,
182
,
177
,
29
,
183
,
182
,
169
,
180
,
203
,
201
,
199
,
221
,
55
,
68
,
35
,
188
,
187
,
0
,
186
,
0
,
221
,
120
,
122
,
0
,
0
,
221
,
168
,
173
,
165
,
167
,
156
,
162
,
156
,
155
,
0
,
165
,
159
,
166
,
149
,
123
,
0
,
0
,
0
,
0
,
163
,
150
,
0
,
155
,
0
,
155
,
148
,
160
,
145
,
143
,
133
,
157
,
141
,
155
,
143
,
153
,
134
,
136
,
0
,
138
,
135
,
125
,
116
,
107
,
113
,
57
,
102
,
142
,
0
,
0
,
101
,
0
,
95
,
0
,
0
,
64
,
146
,
54
,
48
,
41
,
0
,
0
,
44
,
0
,
221
,
159
,
161
,
163
,
53
,
166
0
,
0
,
237
,
238
,
234
,
232
,
230
,
238
,
238
,
238
,
32
,
238
,
37
,
34
,
219
,
217
,
76
,
108
,
238
,
238
,
23
,
197
,
190
,
203
,
199
,
190
,
192
,
22
,
38
,
199
,
185
,
39
,
221
,
219
,
217
,
238
,
59
,
70
,
55
,
206
,
205
,
0
,
204
,
0
,
238
,
123
,
125
,
0
,
0
,
238
,
186
,
191
,
182
,
185
,
173
,
179
,
184
,
172
,
171
,
0
,
182
,
169
,
175
,
182
,
164
,
181
,
126
,
0
,
0
,
0
,
0
,
178
,
164
,
0
,
170
,
161
,
0
,
169
,
161
,
183
,
173
,
157
,
155
,
159
,
136
,
169
,
152
,
167
,
147
,
153
,
164
,
0
,
144
,
146
,
0
,
146
,
141
,
144
,
144
,
155
,
144
,
145
,
152
,
54
,
140
,
146
,
145
,
0
,
0
,
139
,
118
,
0
,
117
,
0
,
0
,
112
,
115
,
149
,
93
,
0
,
87
,
58
,
0
,
0
,
0
,
58
,
0
,
238
,
162
,
164
,
166
,
72
,
169
}
;
static
yyconst
flex_int16_t
yy_def
[
1
18
]
=
static
yyconst
flex_int16_t
yy_def
[
1
34
]
=
{
0
,
1
1
2
,
1
,
1
1
2
,
1
12
,
1
1
2
,
1
1
2
,
1
13
,
1
12
,
1
1
2
,
1
1
2
,
1
1
2
,
1
12
,
1
12
,
13
,
1
14
,
1
1
2
,
1
1
2
,
17
,
1
1
2
,
1
1
2
,
12
8
,
1
,
12
8
,
12
8
,
12
8
,
12
8
,
1
29
,
12
8
,
12
8
,
12
8
,
12
8
,
12
8
,
12
8
,
13
,
1
30
,
12
8
,
12
8
,
17
,
12
8
,
12
8
,
17
,
17
,
17
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
112
,
112
,
113
,
112
,
112
,
112
,
13
,
114
,
115
,
116
,
114
,
117
,
112
,
112
,
18
,
17
,
18
,
112
,
18
,
18
,
18
,
128
,
128
,
129
,
128
,
128
,
128
,
13
,
130
,
131
,
132
,
130
,
133
,
128
,
128
,
18
,
17
,
18
,
128
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
128
,
132
,
133
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
112
,
116
,
117
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
112
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
112
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
112
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
128
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
128
,
18
,
18
,
18
,
18
,
18
,
18
,
112
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
0
,
112
,
112
,
112
,
112
,
112
18
,
18
,
18
,
18
,
18
,
18
,
128
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
128
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
18
,
0
,
128
,
128
,
128
,
128
,
128
}
;
static
yyconst
flex_uint16_t
yy_nxt
[
2
62
]
=
static
yyconst
flex_uint16_t
yy_nxt
[
2
80
]
=
{
0
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
14
,
14
,
15
,
16
,
17
,
18
,
18
,
19
,
20
,
4
,
21
,
17
,
22
,
17
,
23
,
18
,
24
,
18
,
18
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
18
,
18
,
18
,
36
,
36
,
36
,
36
,
37
,
38
,
38
,
38
,
38
,
39
,
112
,
40
,
112
,
41
,
50
,
51
,
64
,
40
,
40
,
40
,
40
,
40
,
57
,
58
,
36
,
36
,
36
,
36
,
101
,
102
,
111
,
112
,
110
,
112
,
41
,
45
,
45
,
63
,
63
,
63
,
63
,
46
,
109
,
47
,
47
,
47
,
47
,
39
,
108
,
47
,
48
,
48
,
107
,
49
,
46
,
47
,
47
,
47
,
47
,
47
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
112
,
106
,
48
,
45
,
45
,
112
,
112
,
105
,
48
,
48
,
48
,
48
,
48
,
78
,
63
,
63
,
63
,
63
,
103
,
100
,
99
,
49
,
98
,
112
,
87
,
87
,
87
,
87
,
95
,
87
,
87
,
87
,
87
,
104
,
104
,
104
,
104
,
104
,
104
,
104
,
104
,
34
,
97
,
34
,
34
,
34
,
42
,
42
,
40
,
40
,
65
,
65
,
65
,
96
,
94
,
93
,
92
,
91
,
90
,
89
,
88
,
86
,
85
,
84
,
83
,
82
,
81
,
80
,
79
,
77
,
76
,
75
,
74
,
73
,
72
,
71
,
70
,
69
,
68
,
67
,
66
,
43
,
39
,
43
,
35
,
33
,
32
,
62
,
61
,
60
,
59
,
56
,
55
,
54
,
53
,
52
,
44
,
43
,
35
,
33
,
32
,
112
,
3
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
18
,
18
,
18
,
37
,
37
,
37
,
37
,
38
,
39
,
39
,
39
,
39
,
40
,
128
,
41
,
51
,
42
,
52
,
59
,
60
,
41
,
41
,
41
,
41
,
41
,
61
,
65
,
114
,
115
,
62
,
37
,
37
,
37
,
37
,
128
,
128
,
66
,
68
,
42
,
46
,
46
,
67
,
67
,
67
,
67
,
47
,
127
,
48
,
48
,
48
,
48
,
40
,
126
,
48
,
49
,
49
,
128
,
50
,
47
,
48
,
48
,
48
,
48
,
48
,
49
,
49
,
49
,
49
,
49
,
49
,
49
,
49
,
49
,
49
,
49
,
49
,
49
,
49
,
49
,
49
,
49
,
49
,
49
,
128
,
125
,
49
,
46
,
46
,
128
,
128
,
124
,
49
,
49
,
49
,
49
,
49
,
85
,
67
,
67
,
67
,
67
,
123
,
122
,
121
,
50
,
120
,
128
,
97
,
97
,
97
,
97
,
107
,
97
,
97
,
97
,
97
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
35
,
119
,
35
,
35
,
35
,
43
,
43
,
41
,
41
,
69
,
69
,
69
,
117
,
116
,
113
,
112
,
111
,
110
,
109
,
108
,
106
,
105
,
104
,
103
,
102
,
101
,
100
,
99
,
98
,
96
,
95
,
94
,
93
,
92
,
91
,
90
,
89
,
88
,
87
,
86
,
84
,
83
,
82
,
81
,
80
,
79
,
78
,
77
,
76
,
75
,
74
,
73
,
72
,
71
,
70
,
44
,
40
,
44
,
36
,
34
,
33
,
64
,
63
,
58
,
57
,
56
,
55
,
54
,
53
,
45
,
44
,
36
,
34
,
33
,
128
,
3
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
}
;
static
yyconst
flex_int16_t
yy_chk
[
2
62
]
=
static
yyconst
flex_int16_t
yy_chk
[
2
80
]
=
{
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
1
,
11
,
11
,
11
,
1
3
,
13
,
13
,
13
,
13
,
13
,
14
,
13
,
38
,
13
,
2
1
,
21
,
116
,
13
,
13
,
13
,
13
,
13
,
27
,
2
7
,
3
6
,
36
,
36
,
36
,
9
3
,
9
3
,
110
,
14
,
10
7
,
3
8
,
1
3
,
17
,
1
7
,
3
7
,
3
7
,
3
7
,
3
7
,
17
,
1
0
6
,
17
,
17
,
17
,
17
,
17
,
105
,
17
,
17
,
17
,
103
,
17
,
17
,
17
,
17
,
17
,
17
,
17
,
1
,
11
,
11
,
11
,
1
1
,
13
,
13
,
13
,
13
,
13
,
13
,
14
,
13
,
21
,
1
3
,
21
,
28
,
28
,
13
,
13
,
13
,
13
,
13
,
2
9
,
3
2
,
104
,
104
,
29
,
3
7
,
3
7
,
37
,
3
7
,
3
9
,
1
4
,
32
,
132
,
1
3
,
1
7
,
1
7
,
3
8
,
3
8
,
38
,
38
,
17
,
1
2
6
,
17
,
17
,
17
,
17
,
17
,
122
,
17
,
17
,
17
,
39
,
17
,
17
,
17
,
17
,
17
,
17
,
17
,
17
,
17
,
17
,
17
,
17
,
17
,
17
,
17
,
17
,
17
,
17
,
17
,
18
,
18
,
18
,
18
,
18
,
100
,
18
,
45
,
45
,
46
,
46
,
98
,
18
,
18
,
18
,
18
,
18
,
63
,
63
,
63
,
63
,
63
,
94
,
92
,
91
,
45
,
90
,
46
,
78
,
78
,
78
,
78
,
87
,
87
,
87
,
87
,
87
,
95
,
95
,
95
,
95
,
104
,
104
,
104
,
104
,
113
,
89
,
113
,
113
,
113
,
114
,
114
,
115
,
115
,
117
,
117
,
117
,
88
,
85
,
84
,
83
,
82
,
81
,
80
,
79
,
77
,
76
,
75
,
74
,
73
,
71
,
69
,
68
,
62
,
61
,
60
,
59
,
57
,
56
,
55
,
54
,
53
,
52
,
51
,
50
,
42
,
40
,
39
,
34
,
33
,
32
,
31
,
30
,
29
,
28
,
26
,
25
,
24
,
23
,
22
,
16
,
15
,
7
,
6
,
5
,
3
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
17
,
17
,
17
,
17
,
17
,
17
,
17
,
18
,
18
,
18
,
18
,
18
,
121
,
18
,
46
,
46
,
47
,
47
,
119
,
18
,
18
,
18
,
18
,
18
,
67
,
67
,
67
,
67
,
67
,
117
,
116
,
113
,
46
,
111
,
47
,
85
,
85
,
85
,
85
,
97
,
97
,
97
,
97
,
97
,
107
,
107
,
107
,
107
,
118
,
118
,
118
,
118
,
129
,
110
,
129
,
129
,
129
,
130
,
130
,
131
,
131
,
133
,
133
,
133
,
106
,
105
,
103
,
102
,
101
,
100
,
99
,
98
,
96
,
94
,
93
,
91
,
90
,
89
,
88
,
87
,
86
,
84
,
83
,
82
,
81
,
80
,
79
,
78
,
76
,
75
,
73
,
72
,
66
,
65
,
64
,
63
,
62
,
61
,
59
,
58
,
57
,
56
,
55
,
54
,
53
,
52
,
51
,
43
,
41
,
40
,
35
,
34
,
33
,
31
,
30
,
27
,
26
,
25
,
24
,
23
,
22
,
16
,
15
,
7
,
6
,
5
,
3
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
,
128
}
;
/* Table of booleans, true if rule could match eol. */
static
yyconst
flex_int32_t
yy_rule_can_match_eol
[
3
1
]
=
static
yyconst
flex_int32_t
yy_rule_can_match_eol
[
3
4
]
=
{
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
};
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
};
extern
int
yy_flex_debug
;
int
yy_flex_debug
=
1
;
static
yyconst
flex_int16_t
yy_rule_linenum
[
3
0
]
=
static
yyconst
flex_int16_t
yy_rule_linenum
[
3
3
]
=
{
0
,
82
,
86
,
92
,
102
,
108
,
122
,
129
,
143
,
144
,
145
,
146
,
147
,
148
,
149
,
150
,
151
,
152
,
153
,
154
,
155
,
156
,
157
,
158
,
159
,
160
,
161
,
162
,
163
,
165
156
,
157
,
158
,
159
,
160
,
161
,
162
,
163
,
165
,
166
,
167
,
169
}
;
static
yy_state_type
*
yy_state_buf
=
0
,
*
yy_state_ptr
=
0
;
...
...
@@ -763,7 +774,7 @@ static isc::eval::location loc;
// by moving it ahead by yyleng bytes. yyleng specifies the length of the
// currently matched token.
#define YY_USER_ACTION loc.columns(yyleng);
#line 7
6
7 "lexer.cc"
#line 77
8
"lexer.cc"
#define INITIAL 0
...
...
@@ -1060,7 +1071,7 @@ YY_DECL
loc
.
step
();
#line 10
64
"lexer.cc"
#line 10
75
"lexer.cc"
while
(
/*CONSTCOND*/
1
)
/* loops until end-of-file is reached */
{
...
...
@@ -1088,14 +1099,14 @@ yy_match:
while
(
yy_chk
[
yy_base
[
yy_current_state
]
+
yy_c
]
!=
yy_current_state
)
{
yy_current_state
=
(
int
)
yy_def
[
yy_current_state
];
if
(
yy_current_state
>=
1
13
)
if
(
yy_current_state
>=
1
29
)
yy_c
=
yy_meta
[(
unsigned
int
)
yy_c
];
}
yy_current_state
=
yy_nxt
[
yy_base
[
yy_current_state
]
+
(
unsigned
int
)
yy_c
];
*
(
yy_state_ptr
)
++
=
yy_current_state
;
++
yy_cp
;
}
while
(
yy_current_state
!=
1
1
2
);
while
(
yy_current_state
!=
12
8
);
yy_find_action:
/* %% [10.0] code to find the action number goes here */
...
...
@@ -1158,13 +1169,13 @@ do_action: /* This label is used only to access EOF actions. */
{
if
(
yy_act
==
0
)
fprintf
(
stderr
,
"--scanner backing up
\n
"
);
else
if
(
yy_act
<
3
0
)
else
if
(
yy_act
<
3
3
)
fprintf
(
stderr
,
"--accepting rule at line %ld (
\"
%s
\"
)
\n
"
,
(
long
)
yy_rule_linenum
[
yy_act
],
yytext
);
else
if
(
yy_act
==
3
0
)
else
if
(
yy_act
==
3
3
)
fprintf
(
stderr
,
"--accepting default rule (
\"
%s
\"
)
\n
"
,
yytext
);
else
if
(
yy_act
==
3
1
)
else
if
(
yy_act
==
3
4
)
fprintf
(
stderr
,
"--(end of buffer or a NUL)
\n
"
);
else
fprintf
(
stderr
,
"--EOF (start condition %d)
\n
"
,
YY_START
);
...
...
@@ -1366,18 +1377,33 @@ return isc::eval::EvalParser::make_COMA(loc);
case
29
:
YY_RULE_SETUP
#line 165 "lexer.ll"
return
isc
::
eval
::
EvalParser
::
make_PKT6
(
loc
);
YY_BREAK
case
30
:
YY_RULE_SETUP
#line 166 "lexer.ll"
return
isc
::
eval
::
EvalParser
::
make_MSGTYPE
(
loc
);
YY_BREAK
case
31
:
YY_RULE_SETUP
#line 167 "lexer.ll"
return
isc
::
eval
::
EvalParser
::
make_TRANSID
(
loc
);
YY_BREAK
case
32
:
YY_RULE_SETUP
#line 169 "lexer.ll"
driver
.
error
(
loc
,
"Invalid character: "
+
std
::
string
(
yytext
));
YY_BREAK
case
YY_STATE_EOF
(
INITIAL
):
#line 1
66
"lexer.ll"
#line 1
70
"lexer.ll"
return
isc
::
eval
::
EvalParser
::
make_END
(
loc
);
YY_BREAK
case
3
0
:
case
3
3
:
YY_RULE_SETUP
#line 1
6
7 "lexer.ll"
#line 17
1
"lexer.ll"
ECHO
;
YY_BREAK
#line 1
381
"lexer.cc"
#line 1
407
"lexer.cc"
case
YY_END_OF_BUFFER
:
{
...
...
@@ -1662,7 +1688,7 @@ static int yy_get_next_buffer (void)
while
(
yy_chk
[
yy_base
[
yy_current_state
]
+
yy_c
]
!=
yy_current_state
)
{
yy_current_state
=
(
int
)
yy_def
[
yy_current_state
];
if
(
yy_current_state
>=
1
13
)
if
(
yy_current_state
>=
1
29
)
yy_c
=
yy_meta
[(
unsigned
int
)
yy_c
];
}
yy_current_state
=
yy_nxt
[
yy_base
[
yy_current_state
]
+
(
unsigned
int
)
yy_c
];
...
...
@@ -1690,11 +1716,11 @@ static int yy_get_next_buffer (void)
while
(
yy_chk
[
yy_base
[
yy_current_state
]
+
yy_c
]
!=
yy_current_state
)
{
yy_current_state
=
(
int
)
yy_def
[
yy_current_state
];
if
(
yy_current_state
>=
1
13
)
if
(
yy_current_state
>=
1
29
)
yy_c
=
yy_meta
[(
unsigned
int
)
yy_c
];
}
yy_current_state
=
yy_nxt
[
yy_base
[
yy_current_state
]
+
(
unsigned
int
)
yy_c
];
yy_is_jam
=
(
yy_current_state
==
1
1
2
);
yy_is_jam
=
(
yy_current_state
==
12
8
);
if
(
!
yy_is_jam
)
*
(
yy_state_ptr
)
++
=
yy_current_state
;
...
...
@@ -2460,7 +2486,7 @@ void yyfree (void * ptr )
/* %ok-for-header */
#line 1
6
7 "lexer.ll"
#line 17
1
"lexer.ll"
...
...
src/lib/eval/lexer.ll
View file @
48be5f5c
...
...
@@ -162,6 +162,10 @@ addr6 [0-9a-fA-F]*\:[0-9a-fA-F]*\:[0-9a-fA-F:.]*
"]"
return
isc:
:
eval:
:
EvalParser:
:make_RBRACKET
(
loc
)
;
","
return
isc:
:
eval:
:
EvalParser:
:make_COMA
(
loc
)
;
"pkt6"
return
isc:
:
eval:
:
EvalParser:
:make_PKT6
(
loc
)
;
"msgtype"
return
isc:
:
eval:
:
EvalParser:
:make_MSGTYPE
(
loc
)
;
"transid"
return
isc:
:
eval:
:
EvalParser:
:make_TRANSID
(
loc
)
;
.
driver
.
error
(
loc
,
"Invalid character: "
+
std:
:string
(
yytext
))
;
<<
EOF
>>
return
isc:
:
eval:
:
EvalParser:
:make_END
(
loc
)
;
%%
...
...
src/lib/eval/parser.cc
View file @
48be5f5c
This diff is collapsed.
Click to expand it.
src/lib/eval/parser.h
View file @
48be5f5c
...
...
@@ -298,21 +298,24 @@ namespace isc { namespace eval {
// option_repr_type
char
dummy1
[
sizeof
(
TokenOption
::
RepresentationType
)];
// pkt6_field
char
dummy2
[
sizeof
(
TokenPkt6
::
FieldType
)];
// relay6_field
char
dummy
2
[
sizeof
(
TokenRelay6Field
::
FieldType
)];
char
dummy
3
[
sizeof
(
TokenRelay6Field
::
FieldType
)];
// "constant string"
// "integer"
// "constant hexstring"
// "option name"
// "ip address"
char
dummy
3
[
sizeof
(
std
::
string
)];
char
dummy
4
[
sizeof
(
std
::
string
)];
// option_code
char
dummy
4
[
sizeof
(
uint16_t
)];
char
dummy
5
[
sizeof
(
uint16_t
)];
// nest_level
char
dummy
5
[
sizeof
(
uint8_t
)];
char
dummy
6
[
sizeof
(
uint8_t
)];
};
/// Symbol semantic values.
...
...
@@ -357,11 +360,14 @@ namespace isc { namespace eval {
TOKEN_ALL
=
276
,
TOKEN_COMA
=
277
,
TOKEN_CONCAT
=
278
,
TOKEN_STRING
=
279
,
TOKEN_INTEGER
=
280
,
TOKEN_HEXSTRING
=
281
,
TOKEN_OPTION_NAME
=
282
,
TOKEN_IP_ADDRESS
=
283
TOKEN_PKT6
=
279
,
TOKEN_MSGTYPE
=
280
,
TOKEN_TRANSID
=
281
,
TOKEN_STRING
=
282
,
TOKEN_INTEGER
=
283
,
TOKEN_HEXSTRING
=
284
,
TOKEN_OPTION_NAME
=
285
,
TOKEN_IP_ADDRESS
=
286
};
};
...
...
@@ -401,6 +407,8 @@ namespace isc { namespace eval {
basic_symbol
(
typename
Base
::
kind_type
t
,
const
TokenOption
::
RepresentationType
v
,
const
location_type
&
l
);