dns-zonefile 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a5f5cceb20d06d6301bba8050c7ad450f2b5c6eb
4
- data.tar.gz: b98d282c912ef98f0d2dccd91d7c9777ae092840
3
+ metadata.gz: ae6164575393f959641701f1326096baa90f0d13
4
+ data.tar.gz: 8ba96a9924f0617a51694aa710fa5305a8501472
5
5
  SHA512:
6
- metadata.gz: 647199e1c8dbcc81cc0deb392ce07af573272937960e690bdf652b407aaea67ce5776177a9cb17b726e04261d48d22a25ca59f70258d34936febf3f1522104b7
7
- data.tar.gz: 1f287a15a11b931824983bb26ea8e9d790143c2d0485c637b4f3db85be75178a02d5e98d6ed3b44c3747fdfa36fc37fcde9a9f26cded2aa179ef9e368afb1b48
6
+ metadata.gz: 04a2438bef1469f4c65bd8a49417ddbbd16f647d6fb79a608891effff682f551895f824d212f7d90661c220a0da50a926ad934226917b318d987e3b25254753c
7
+ data.tar.gz: 1f263367e7313dcd24df102b5423c26c89a35d4f4c1b8bf42d34e03a0f5284d3b9a071caea9a94db9d83b029f696bbc3bd040d14e2fa62429948f1ece275bcfa
@@ -67,7 +67,7 @@ grammar Zonefile
67
67
  end
68
68
 
69
69
  def record_type
70
- record.elements[4].text_value
70
+ record.record_type
71
71
  end
72
72
 
73
73
  def ttl
@@ -89,9 +89,13 @@ grammar Zonefile
89
89
  end
90
90
 
91
91
  rule a_record
92
- host space ttl klass "A" space ip_address {
92
+ host space ms_age ttl klass "A" space ip_address {
93
93
  def to_s
94
- "#{host} #{ttl} #{klass} A #{ip_address}"
94
+ "#{host} #{ms_age} #{ttl} #{klass} A #{ip_address}"
95
+ end
96
+
97
+ def record_type
98
+ "A"
95
99
  end
96
100
  }
97
101
  end
@@ -105,10 +109,14 @@ grammar Zonefile
105
109
  end
106
110
 
107
111
  rule aaaa_record
108
- host space ttl klass "AAAA" space ip_address:ip6_address {
112
+ host space ms_age ttl klass "AAAA" space ip_address:ip6_address {
109
113
  def to_s
110
114
  "#{host} #{ttl} #{klass} AAAA #{ip_address}"
111
115
  end
116
+
117
+ def record_type
118
+ "AAAA"
119
+ end
112
120
  }
113
121
  end
114
122
 
@@ -122,14 +130,18 @@ grammar Zonefile
122
130
 
123
131
  rule cname_record
124
132
  (
125
- host space ttl klass "CNAME" space target:host /
126
- host space klass ttl "CNAME" space target:host /
127
- host space ttl "CNAME" space target:host /
133
+ host space ms_age ttl klass "CNAME" space target:host /
134
+ host space klass ms_age ttl "CNAME" space target:host /
135
+ host space ms_age ttl "CNAME" space target:host /
128
136
  host space klass "CNAME" space target:host
129
137
  ) {
130
138
  def to_s
131
139
  "#{host} #{ttl} #{klass} CNAME #{target}"
132
140
  end
141
+
142
+ def record_type
143
+ "CNAME"
144
+ end
133
145
  }
134
146
  end
135
147
 
@@ -138,67 +150,99 @@ grammar Zonefile
138
150
  def to_s
139
151
  "#{host} #{ttl} #{klass} MX #{priority} #{exchanger}"
140
152
  end
153
+
154
+ def record_type
155
+ "MX"
156
+ end
141
157
  }
142
158
  end
143
159
 
144
160
  rule naptr_record
145
- host space ttl klass "NAPTR" space data {
161
+ host space ms_age ttl klass "NAPTR" space data {
146
162
  def to_s
147
163
  "#{host} #{ttl} #{klass} NAPTR #{data}"
148
164
  end
165
+
166
+ def record_type
167
+ "NAPTR"
168
+ end
149
169
  }
150
170
  end
151
171
 
152
172
  rule ns_record
153
- host space ttl klass "NS" space nameserver:host {
173
+ host space ms_age ttl klass "NS" space nameserver:host {
154
174
  def to_s
155
175
  "#{host} #{ttl} #{klass} NS #{nameserver}"
156
176
  end
177
+
178
+ def record_type
179
+ "NS"
180
+ end
157
181
  }
158
182
  end
159
183
 
160
184
  rule ptr_record
161
- host space ttl klass "PTR" space target:host {
185
+ host space ms_age ttl klass "PTR" space target:host {
162
186
  def to_s
163
187
  "#{host} #{ttl} #{klass} PTR #{target}"
164
188
  end
189
+
190
+ def record_type
191
+ "PTR"
192
+ end
165
193
  }
166
194
  end
167
195
 
168
196
  rule soa_record
169
- origin space ttl klass "SOA" space ns space rp space data {
197
+ origin space ms_age ttl klass "SOA" space ns space rp space data {
170
198
  def to_s
171
199
  "#{origin} #{ttl} #{klass} SOA #{ns} #{rp} (#{space})"
172
200
  end
201
+
202
+ def record_type
203
+ "SOA"
204
+ end
173
205
  }
174
206
  end
175
207
 
176
208
  rule srv_record
177
209
  (
178
- host space ttl klass "SRV" space priority:integer space weight:integer space port:integer space target:host /
179
- host space klass ttl "SRV" space priority:integer space weight:integer space port:integer space target:host /
180
- host space ttl "SRV" space priority:integer space weight:integer space port:integer space target:host /
210
+ host space ms_age ttl klass "SRV" space priority:integer space weight:integer space port:integer space target:host /
211
+ host space klass ms_age ttl "SRV" space priority:integer space weight:integer space port:integer space target:host /
212
+ host space ms_age ttl "SRV" space priority:integer space weight:integer space port:integer space target:host /
181
213
  host space klass "SRV" space priority:integer space weight:integer space port:integer space target:host
182
214
  ) {
183
215
  def to_s
184
216
  "#{host} #{ttl} #{klass} SRV #{priority} #{weight} #{port} #{target}"
185
217
  end
218
+
219
+ def record_type
220
+ "SRV"
221
+ end
186
222
  }
187
223
  end
188
224
 
189
225
  rule spf_record
190
- host space ttl klass "SPF" space data:txt_data {
226
+ host space ms_age ttl klass "SPF" space data:txt_data {
191
227
  def to_s
192
228
  "#{host} #{ttl} #{klass} SPF #{data}"
193
229
  end
230
+
231
+ def record_type
232
+ "SPF"
233
+ end
194
234
  }
195
235
  end
196
236
 
197
237
  rule txt_record
198
- host space ttl klass "TXT" space data:txt_data {
238
+ host space ms_age ttl klass "TXT" space data:ms_txt_data {
199
239
  def to_s
200
240
  "#{host} #{ttl} #{klass} TXT #{data}"
201
241
  end
242
+
243
+ def record_type
244
+ "TXT"
245
+ end
202
246
  }
203
247
  end
204
248
 
@@ -259,7 +303,7 @@ grammar Zonefile
259
303
  end
260
304
 
261
305
  rule rp
262
- (("\\." / [+a-zA-Z0-9\-)])+ ".")+ {
306
+ (("\\." / [+a-zA-Z0-9\-)])* ".")+ {
263
307
  def to_s
264
308
  text_value
265
309
  end
@@ -361,6 +405,14 @@ grammar Zonefile
361
405
  end
362
406
  }
363
407
  end
408
+
409
+ rule ms_age
410
+ ( "[AGE:" [\d]+ "]" space / '' ) {
411
+ def to_s
412
+ text_value
413
+ end
414
+ }
415
+ end
364
416
 
365
417
  rule ttl
366
418
  ((time_interval space) / '') {
@@ -395,6 +447,17 @@ grammar Zonefile
395
447
  end
396
448
  }
397
449
  end
450
+
451
+ rule ms_txt_data
452
+ (
453
+ "(" space* data:txt_data space* ")" /
454
+ data:txt_data
455
+ ) {
456
+ def to_s
457
+ data.to_s
458
+ end
459
+ }
460
+ end
398
461
 
399
462
  rule txt_data
400
463
  txt_string (space txt_data)* {
@@ -1,4 +1,5 @@
1
1
  require 'dns/zonefile/parser'
2
+ require 'pp'
2
3
 
3
4
  module DNS
4
5
  module Zonefile
@@ -552,7 +552,7 @@ module DNS
552
552
  end
553
553
 
554
554
  def record_type
555
- record.elements[4].text_value
555
+ record.record_type
556
556
  end
557
557
 
558
558
  def ttl
@@ -703,26 +703,34 @@ module DNS
703
703
  elements[1]
704
704
  end
705
705
 
706
- def ttl
706
+ def ms_age
707
707
  elements[2]
708
708
  end
709
709
 
710
- def klass
710
+ def ttl
711
711
  elements[3]
712
712
  end
713
713
 
714
+ def klass
715
+ elements[4]
716
+ end
717
+
714
718
  def space2
715
- elements[5]
719
+ elements[6]
716
720
  end
717
721
 
718
722
  def ip_address
719
- elements[6]
723
+ elements[7]
720
724
  end
721
725
  end
722
726
 
723
727
  module ARecord1
724
728
  def to_s
725
- "#{host} #{ttl} #{klass} A #{ip_address}"
729
+ "#{host} #{ms_age} #{ttl} #{klass} A #{ip_address}"
730
+ end
731
+
732
+ def record_type
733
+ "A"
726
734
  end
727
735
  end
728
736
 
@@ -744,26 +752,30 @@ module DNS
744
752
  r2 = _nt_space
745
753
  s0 << r2
746
754
  if r2
747
- r3 = _nt_ttl
755
+ r3 = _nt_ms_age
748
756
  s0 << r3
749
757
  if r3
750
- r4 = _nt_klass
758
+ r4 = _nt_ttl
751
759
  s0 << r4
752
760
  if r4
753
- if (match_len = has_terminal?("A", false, index))
754
- r5 = true
755
- @index += match_len
756
- else
757
- terminal_parse_failure('"A"')
758
- r5 = nil
759
- end
761
+ r5 = _nt_klass
760
762
  s0 << r5
761
763
  if r5
762
- r6 = _nt_space
764
+ if (match_len = has_terminal?("A", false, index))
765
+ r6 = true
766
+ @index += match_len
767
+ else
768
+ terminal_parse_failure('"A"')
769
+ r6 = nil
770
+ end
763
771
  s0 << r6
764
772
  if r6
765
- r7 = _nt_ip_address
773
+ r7 = _nt_space
766
774
  s0 << r7
775
+ if r7
776
+ r8 = _nt_ip_address
777
+ s0 << r8
778
+ end
767
779
  end
768
780
  end
769
781
  end
@@ -952,20 +964,24 @@ module DNS
952
964
  elements[1]
953
965
  end
954
966
 
955
- def ttl
967
+ def ms_age
956
968
  elements[2]
957
969
  end
958
970
 
959
- def klass
971
+ def ttl
960
972
  elements[3]
961
973
  end
962
974
 
975
+ def klass
976
+ elements[4]
977
+ end
978
+
963
979
  def space2
964
- elements[5]
980
+ elements[6]
965
981
  end
966
982
 
967
983
  def ip_address
968
- elements[6]
984
+ elements[7]
969
985
  end
970
986
  end
971
987
 
@@ -973,6 +989,10 @@ module DNS
973
989
  def to_s
974
990
  "#{host} #{ttl} #{klass} AAAA #{ip_address}"
975
991
  end
992
+
993
+ def record_type
994
+ "AAAA"
995
+ end
976
996
  end
977
997
 
978
998
  def _nt_aaaa_record
@@ -993,26 +1013,30 @@ module DNS
993
1013
  r2 = _nt_space
994
1014
  s0 << r2
995
1015
  if r2
996
- r3 = _nt_ttl
1016
+ r3 = _nt_ms_age
997
1017
  s0 << r3
998
1018
  if r3
999
- r4 = _nt_klass
1019
+ r4 = _nt_ttl
1000
1020
  s0 << r4
1001
1021
  if r4
1002
- if (match_len = has_terminal?("AAAA", false, index))
1003
- r5 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1004
- @index += match_len
1005
- else
1006
- terminal_parse_failure('"AAAA"')
1007
- r5 = nil
1008
- end
1022
+ r5 = _nt_klass
1009
1023
  s0 << r5
1010
1024
  if r5
1011
- r6 = _nt_space
1025
+ if (match_len = has_terminal?("AAAA", false, index))
1026
+ r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1027
+ @index += match_len
1028
+ else
1029
+ terminal_parse_failure('"AAAA"')
1030
+ r6 = nil
1031
+ end
1012
1032
  s0 << r6
1013
1033
  if r6
1014
- r7 = _nt_ip6_address
1034
+ r7 = _nt_space
1015
1035
  s0 << r7
1036
+ if r7
1037
+ r8 = _nt_ip6_address
1038
+ s0 << r8
1039
+ end
1016
1040
  end
1017
1041
  end
1018
1042
  end
@@ -1093,20 +1117,24 @@ module DNS
1093
1117
  elements[1]
1094
1118
  end
1095
1119
 
1096
- def ttl
1120
+ def ms_age
1097
1121
  elements[2]
1098
1122
  end
1099
1123
 
1100
- def klass
1124
+ def ttl
1101
1125
  elements[3]
1102
1126
  end
1103
1127
 
1128
+ def klass
1129
+ elements[4]
1130
+ end
1131
+
1104
1132
  def space2
1105
- elements[5]
1133
+ elements[6]
1106
1134
  end
1107
1135
 
1108
1136
  def target
1109
- elements[6]
1137
+ elements[7]
1110
1138
  end
1111
1139
  end
1112
1140
 
@@ -1123,16 +1151,20 @@ module DNS
1123
1151
  elements[2]
1124
1152
  end
1125
1153
 
1126
- def ttl
1154
+ def ms_age
1127
1155
  elements[3]
1128
1156
  end
1129
1157
 
1158
+ def ttl
1159
+ elements[4]
1160
+ end
1161
+
1130
1162
  def space2
1131
- elements[5]
1163
+ elements[6]
1132
1164
  end
1133
1165
 
1134
1166
  def target
1135
- elements[6]
1167
+ elements[7]
1136
1168
  end
1137
1169
  end
1138
1170
 
@@ -1145,16 +1177,20 @@ module DNS
1145
1177
  elements[1]
1146
1178
  end
1147
1179
 
1148
- def ttl
1180
+ def ms_age
1149
1181
  elements[2]
1150
1182
  end
1151
1183
 
1184
+ def ttl
1185
+ elements[3]
1186
+ end
1187
+
1152
1188
  def space2
1153
- elements[4]
1189
+ elements[5]
1154
1190
  end
1155
1191
 
1156
1192
  def target
1157
- elements[5]
1193
+ elements[6]
1158
1194
  end
1159
1195
  end
1160
1196
 
@@ -1184,6 +1220,10 @@ module DNS
1184
1220
  def to_s
1185
1221
  "#{host} #{ttl} #{klass} CNAME #{target}"
1186
1222
  end
1223
+
1224
+ def record_type
1225
+ "CNAME"
1226
+ end
1187
1227
  end
1188
1228
 
1189
1229
  def _nt_cname_record
@@ -1205,26 +1245,30 @@ module DNS
1205
1245
  r3 = _nt_space
1206
1246
  s1 << r3
1207
1247
  if r3
1208
- r4 = _nt_ttl
1248
+ r4 = _nt_ms_age
1209
1249
  s1 << r4
1210
1250
  if r4
1211
- r5 = _nt_klass
1251
+ r5 = _nt_ttl
1212
1252
  s1 << r5
1213
1253
  if r5
1214
- if (match_len = has_terminal?("CNAME", false, index))
1215
- r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1216
- @index += match_len
1217
- else
1218
- terminal_parse_failure('"CNAME"')
1219
- r6 = nil
1220
- end
1254
+ r6 = _nt_klass
1221
1255
  s1 << r6
1222
1256
  if r6
1223
- r7 = _nt_space
1257
+ if (match_len = has_terminal?("CNAME", false, index))
1258
+ r7 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1259
+ @index += match_len
1260
+ else
1261
+ terminal_parse_failure('"CNAME"')
1262
+ r7 = nil
1263
+ end
1224
1264
  s1 << r7
1225
1265
  if r7
1226
- r8 = _nt_host
1266
+ r8 = _nt_space
1227
1267
  s1 << r8
1268
+ if r8
1269
+ r9 = _nt_host
1270
+ s1 << r9
1271
+ end
1228
1272
  end
1229
1273
  end
1230
1274
  end
@@ -1243,131 +1287,139 @@ module DNS
1243
1287
  r0 = r1
1244
1288
  r0.extend(CnameRecord4)
1245
1289
  else
1246
- i9, s9 = index, []
1247
- r10 = _nt_host
1248
- s9 << r10
1249
- if r10
1250
- r11 = _nt_space
1251
- s9 << r11
1252
- if r11
1253
- r12 = _nt_klass
1254
- s9 << r12
1255
- if r12
1256
- r13 = _nt_ttl
1257
- s9 << r13
1258
- if r13
1259
- if (match_len = has_terminal?("CNAME", false, index))
1260
- r14 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1261
- @index += match_len
1262
- else
1263
- terminal_parse_failure('"CNAME"')
1264
- r14 = nil
1265
- end
1266
- s9 << r14
1267
- if r14
1268
- r15 = _nt_space
1269
- s9 << r15
1270
- if r15
1271
- r16 = _nt_host
1272
- s9 << r16
1290
+ i10, s10 = index, []
1291
+ r11 = _nt_host
1292
+ s10 << r11
1293
+ if r11
1294
+ r12 = _nt_space
1295
+ s10 << r12
1296
+ if r12
1297
+ r13 = _nt_klass
1298
+ s10 << r13
1299
+ if r13
1300
+ r14 = _nt_ms_age
1301
+ s10 << r14
1302
+ if r14
1303
+ r15 = _nt_ttl
1304
+ s10 << r15
1305
+ if r15
1306
+ if (match_len = has_terminal?("CNAME", false, index))
1307
+ r16 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1308
+ @index += match_len
1309
+ else
1310
+ terminal_parse_failure('"CNAME"')
1311
+ r16 = nil
1312
+ end
1313
+ s10 << r16
1314
+ if r16
1315
+ r17 = _nt_space
1316
+ s10 << r17
1317
+ if r17
1318
+ r18 = _nt_host
1319
+ s10 << r18
1320
+ end
1273
1321
  end
1274
1322
  end
1275
1323
  end
1276
1324
  end
1277
1325
  end
1278
1326
  end
1279
- if s9.last
1280
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
1281
- r9.extend(CnameRecord1)
1327
+ if s10.last
1328
+ r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
1329
+ r10.extend(CnameRecord1)
1282
1330
  else
1283
- @index = i9
1284
- r9 = nil
1331
+ @index = i10
1332
+ r10 = nil
1285
1333
  end
1286
- if r9
1287
- r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
1288
- r0 = r9
1334
+ if r10
1335
+ r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
1336
+ r0 = r10
1289
1337
  r0.extend(CnameRecord4)
1290
1338
  else
1291
- i17, s17 = index, []
1292
- r18 = _nt_host
1293
- s17 << r18
1294
- if r18
1295
- r19 = _nt_space
1296
- s17 << r19
1297
- if r19
1298
- r20 = _nt_ttl
1299
- s17 << r20
1300
- if r20
1301
- if (match_len = has_terminal?("CNAME", false, index))
1302
- r21 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1303
- @index += match_len
1304
- else
1305
- terminal_parse_failure('"CNAME"')
1306
- r21 = nil
1307
- end
1308
- s17 << r21
1309
- if r21
1310
- r22 = _nt_space
1311
- s17 << r22
1312
- if r22
1313
- r23 = _nt_host
1314
- s17 << r23
1339
+ i19, s19 = index, []
1340
+ r20 = _nt_host
1341
+ s19 << r20
1342
+ if r20
1343
+ r21 = _nt_space
1344
+ s19 << r21
1345
+ if r21
1346
+ r22 = _nt_ms_age
1347
+ s19 << r22
1348
+ if r22
1349
+ r23 = _nt_ttl
1350
+ s19 << r23
1351
+ if r23
1352
+ if (match_len = has_terminal?("CNAME", false, index))
1353
+ r24 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1354
+ @index += match_len
1355
+ else
1356
+ terminal_parse_failure('"CNAME"')
1357
+ r24 = nil
1358
+ end
1359
+ s19 << r24
1360
+ if r24
1361
+ r25 = _nt_space
1362
+ s19 << r25
1363
+ if r25
1364
+ r26 = _nt_host
1365
+ s19 << r26
1366
+ end
1315
1367
  end
1316
1368
  end
1317
1369
  end
1318
1370
  end
1319
1371
  end
1320
- if s17.last
1321
- r17 = instantiate_node(SyntaxNode,input, i17...index, s17)
1322
- r17.extend(CnameRecord2)
1372
+ if s19.last
1373
+ r19 = instantiate_node(SyntaxNode,input, i19...index, s19)
1374
+ r19.extend(CnameRecord2)
1323
1375
  else
1324
- @index = i17
1325
- r17 = nil
1376
+ @index = i19
1377
+ r19 = nil
1326
1378
  end
1327
- if r17
1328
- r17 = SyntaxNode.new(input, (index-1)...index) if r17 == true
1329
- r0 = r17
1379
+ if r19
1380
+ r19 = SyntaxNode.new(input, (index-1)...index) if r19 == true
1381
+ r0 = r19
1330
1382
  r0.extend(CnameRecord4)
1331
1383
  else
1332
- i24, s24 = index, []
1333
- r25 = _nt_host
1334
- s24 << r25
1335
- if r25
1336
- r26 = _nt_space
1337
- s24 << r26
1338
- if r26
1339
- r27 = _nt_klass
1340
- s24 << r27
1341
- if r27
1384
+ i27, s27 = index, []
1385
+ r28 = _nt_host
1386
+ s27 << r28
1387
+ if r28
1388
+ r29 = _nt_space
1389
+ s27 << r29
1390
+ if r29
1391
+ r30 = _nt_klass
1392
+ s27 << r30
1393
+ if r30
1342
1394
  if (match_len = has_terminal?("CNAME", false, index))
1343
- r28 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1395
+ r31 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1344
1396
  @index += match_len
1345
1397
  else
1346
1398
  terminal_parse_failure('"CNAME"')
1347
- r28 = nil
1399
+ r31 = nil
1348
1400
  end
1349
- s24 << r28
1350
- if r28
1351
- r29 = _nt_space
1352
- s24 << r29
1353
- if r29
1354
- r30 = _nt_host
1355
- s24 << r30
1401
+ s27 << r31
1402
+ if r31
1403
+ r32 = _nt_space
1404
+ s27 << r32
1405
+ if r32
1406
+ r33 = _nt_host
1407
+ s27 << r33
1356
1408
  end
1357
1409
  end
1358
1410
  end
1359
1411
  end
1360
1412
  end
1361
- if s24.last
1362
- r24 = instantiate_node(SyntaxNode,input, i24...index, s24)
1363
- r24.extend(CnameRecord3)
1413
+ if s27.last
1414
+ r27 = instantiate_node(SyntaxNode,input, i27...index, s27)
1415
+ r27.extend(CnameRecord3)
1364
1416
  else
1365
- @index = i24
1366
- r24 = nil
1417
+ @index = i27
1418
+ r27 = nil
1367
1419
  end
1368
- if r24
1369
- r24 = SyntaxNode.new(input, (index-1)...index) if r24 == true
1370
- r0 = r24
1420
+ if r27
1421
+ r27 = SyntaxNode.new(input, (index-1)...index) if r27 == true
1422
+ r0 = r27
1371
1423
  r0.extend(CnameRecord4)
1372
1424
  else
1373
1425
  @index = i0
@@ -1420,6 +1472,10 @@ module DNS
1420
1472
  def to_s
1421
1473
  "#{host} #{ttl} #{klass} MX #{priority} #{exchanger}"
1422
1474
  end
1475
+
1476
+ def record_type
1477
+ "MX"
1478
+ end
1423
1479
  end
1424
1480
 
1425
1481
  def _nt_mx_record
@@ -1497,20 +1553,24 @@ module DNS
1497
1553
  elements[1]
1498
1554
  end
1499
1555
 
1500
- def ttl
1556
+ def ms_age
1501
1557
  elements[2]
1502
1558
  end
1503
1559
 
1504
- def klass
1560
+ def ttl
1505
1561
  elements[3]
1506
1562
  end
1507
1563
 
1564
+ def klass
1565
+ elements[4]
1566
+ end
1567
+
1508
1568
  def space2
1509
- elements[5]
1569
+ elements[6]
1510
1570
  end
1511
1571
 
1512
1572
  def data
1513
- elements[6]
1573
+ elements[7]
1514
1574
  end
1515
1575
  end
1516
1576
 
@@ -1518,6 +1578,10 @@ module DNS
1518
1578
  def to_s
1519
1579
  "#{host} #{ttl} #{klass} NAPTR #{data}"
1520
1580
  end
1581
+
1582
+ def record_type
1583
+ "NAPTR"
1584
+ end
1521
1585
  end
1522
1586
 
1523
1587
  def _nt_naptr_record
@@ -1538,26 +1602,30 @@ module DNS
1538
1602
  r2 = _nt_space
1539
1603
  s0 << r2
1540
1604
  if r2
1541
- r3 = _nt_ttl
1605
+ r3 = _nt_ms_age
1542
1606
  s0 << r3
1543
1607
  if r3
1544
- r4 = _nt_klass
1608
+ r4 = _nt_ttl
1545
1609
  s0 << r4
1546
1610
  if r4
1547
- if (match_len = has_terminal?("NAPTR", false, index))
1548
- r5 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1549
- @index += match_len
1550
- else
1551
- terminal_parse_failure('"NAPTR"')
1552
- r5 = nil
1553
- end
1611
+ r5 = _nt_klass
1554
1612
  s0 << r5
1555
1613
  if r5
1556
- r6 = _nt_space
1614
+ if (match_len = has_terminal?("NAPTR", false, index))
1615
+ r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1616
+ @index += match_len
1617
+ else
1618
+ terminal_parse_failure('"NAPTR"')
1619
+ r6 = nil
1620
+ end
1557
1621
  s0 << r6
1558
1622
  if r6
1559
- r7 = _nt_data
1623
+ r7 = _nt_space
1560
1624
  s0 << r7
1625
+ if r7
1626
+ r8 = _nt_data
1627
+ s0 << r8
1628
+ end
1561
1629
  end
1562
1630
  end
1563
1631
  end
@@ -1587,20 +1655,24 @@ module DNS
1587
1655
  elements[1]
1588
1656
  end
1589
1657
 
1590
- def ttl
1658
+ def ms_age
1591
1659
  elements[2]
1592
1660
  end
1593
1661
 
1594
- def klass
1662
+ def ttl
1595
1663
  elements[3]
1596
1664
  end
1597
1665
 
1666
+ def klass
1667
+ elements[4]
1668
+ end
1669
+
1598
1670
  def space2
1599
- elements[5]
1671
+ elements[6]
1600
1672
  end
1601
1673
 
1602
1674
  def nameserver
1603
- elements[6]
1675
+ elements[7]
1604
1676
  end
1605
1677
  end
1606
1678
 
@@ -1608,6 +1680,10 @@ module DNS
1608
1680
  def to_s
1609
1681
  "#{host} #{ttl} #{klass} NS #{nameserver}"
1610
1682
  end
1683
+
1684
+ def record_type
1685
+ "NS"
1686
+ end
1611
1687
  end
1612
1688
 
1613
1689
  def _nt_ns_record
@@ -1628,26 +1704,30 @@ module DNS
1628
1704
  r2 = _nt_space
1629
1705
  s0 << r2
1630
1706
  if r2
1631
- r3 = _nt_ttl
1707
+ r3 = _nt_ms_age
1632
1708
  s0 << r3
1633
1709
  if r3
1634
- r4 = _nt_klass
1710
+ r4 = _nt_ttl
1635
1711
  s0 << r4
1636
1712
  if r4
1637
- if (match_len = has_terminal?("NS", false, index))
1638
- r5 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1639
- @index += match_len
1640
- else
1641
- terminal_parse_failure('"NS"')
1642
- r5 = nil
1643
- end
1713
+ r5 = _nt_klass
1644
1714
  s0 << r5
1645
1715
  if r5
1646
- r6 = _nt_space
1716
+ if (match_len = has_terminal?("NS", false, index))
1717
+ r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1718
+ @index += match_len
1719
+ else
1720
+ terminal_parse_failure('"NS"')
1721
+ r6 = nil
1722
+ end
1647
1723
  s0 << r6
1648
1724
  if r6
1649
- r7 = _nt_host
1725
+ r7 = _nt_space
1650
1726
  s0 << r7
1727
+ if r7
1728
+ r8 = _nt_host
1729
+ s0 << r8
1730
+ end
1651
1731
  end
1652
1732
  end
1653
1733
  end
@@ -1677,20 +1757,24 @@ module DNS
1677
1757
  elements[1]
1678
1758
  end
1679
1759
 
1680
- def ttl
1760
+ def ms_age
1681
1761
  elements[2]
1682
1762
  end
1683
1763
 
1684
- def klass
1764
+ def ttl
1685
1765
  elements[3]
1686
1766
  end
1687
1767
 
1768
+ def klass
1769
+ elements[4]
1770
+ end
1771
+
1688
1772
  def space2
1689
- elements[5]
1773
+ elements[6]
1690
1774
  end
1691
1775
 
1692
1776
  def target
1693
- elements[6]
1777
+ elements[7]
1694
1778
  end
1695
1779
  end
1696
1780
 
@@ -1698,6 +1782,10 @@ module DNS
1698
1782
  def to_s
1699
1783
  "#{host} #{ttl} #{klass} PTR #{target}"
1700
1784
  end
1785
+
1786
+ def record_type
1787
+ "PTR"
1788
+ end
1701
1789
  end
1702
1790
 
1703
1791
  def _nt_ptr_record
@@ -1718,26 +1806,30 @@ module DNS
1718
1806
  r2 = _nt_space
1719
1807
  s0 << r2
1720
1808
  if r2
1721
- r3 = _nt_ttl
1809
+ r3 = _nt_ms_age
1722
1810
  s0 << r3
1723
1811
  if r3
1724
- r4 = _nt_klass
1812
+ r4 = _nt_ttl
1725
1813
  s0 << r4
1726
1814
  if r4
1727
- if (match_len = has_terminal?("PTR", false, index))
1728
- r5 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1729
- @index += match_len
1730
- else
1731
- terminal_parse_failure('"PTR"')
1732
- r5 = nil
1733
- end
1815
+ r5 = _nt_klass
1734
1816
  s0 << r5
1735
1817
  if r5
1736
- r6 = _nt_space
1818
+ if (match_len = has_terminal?("PTR", false, index))
1819
+ r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1820
+ @index += match_len
1821
+ else
1822
+ terminal_parse_failure('"PTR"')
1823
+ r6 = nil
1824
+ end
1737
1825
  s0 << r6
1738
1826
  if r6
1739
- r7 = _nt_host
1827
+ r7 = _nt_space
1740
1828
  s0 << r7
1829
+ if r7
1830
+ r8 = _nt_host
1831
+ s0 << r8
1832
+ end
1741
1833
  end
1742
1834
  end
1743
1835
  end
@@ -1767,36 +1859,40 @@ module DNS
1767
1859
  elements[1]
1768
1860
  end
1769
1861
 
1770
- def ttl
1862
+ def ms_age
1771
1863
  elements[2]
1772
1864
  end
1773
1865
 
1774
- def klass
1866
+ def ttl
1775
1867
  elements[3]
1776
1868
  end
1777
1869
 
1870
+ def klass
1871
+ elements[4]
1872
+ end
1873
+
1778
1874
  def space2
1779
- elements[5]
1875
+ elements[6]
1780
1876
  end
1781
1877
 
1782
1878
  def ns
1783
- elements[6]
1879
+ elements[7]
1784
1880
  end
1785
1881
 
1786
1882
  def space3
1787
- elements[7]
1883
+ elements[8]
1788
1884
  end
1789
1885
 
1790
1886
  def rp
1791
- elements[8]
1887
+ elements[9]
1792
1888
  end
1793
1889
 
1794
1890
  def space4
1795
- elements[9]
1891
+ elements[10]
1796
1892
  end
1797
1893
 
1798
1894
  def data
1799
- elements[10]
1895
+ elements[11]
1800
1896
  end
1801
1897
  end
1802
1898
 
@@ -1804,6 +1900,10 @@ module DNS
1804
1900
  def to_s
1805
1901
  "#{origin} #{ttl} #{klass} SOA #{ns} #{rp} (#{space})"
1806
1902
  end
1903
+
1904
+ def record_type
1905
+ "SOA"
1906
+ end
1807
1907
  end
1808
1908
 
1809
1909
  def _nt_soa_record
@@ -1824,38 +1924,42 @@ module DNS
1824
1924
  r2 = _nt_space
1825
1925
  s0 << r2
1826
1926
  if r2
1827
- r3 = _nt_ttl
1927
+ r3 = _nt_ms_age
1828
1928
  s0 << r3
1829
1929
  if r3
1830
- r4 = _nt_klass
1930
+ r4 = _nt_ttl
1831
1931
  s0 << r4
1832
1932
  if r4
1833
- if (match_len = has_terminal?("SOA", false, index))
1834
- r5 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1835
- @index += match_len
1836
- else
1837
- terminal_parse_failure('"SOA"')
1838
- r5 = nil
1839
- end
1933
+ r5 = _nt_klass
1840
1934
  s0 << r5
1841
1935
  if r5
1842
- r6 = _nt_space
1936
+ if (match_len = has_terminal?("SOA", false, index))
1937
+ r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1938
+ @index += match_len
1939
+ else
1940
+ terminal_parse_failure('"SOA"')
1941
+ r6 = nil
1942
+ end
1843
1943
  s0 << r6
1844
1944
  if r6
1845
- r7 = _nt_ns
1945
+ r7 = _nt_space
1846
1946
  s0 << r7
1847
1947
  if r7
1848
- r8 = _nt_space
1948
+ r8 = _nt_ns
1849
1949
  s0 << r8
1850
1950
  if r8
1851
- r9 = _nt_rp
1951
+ r9 = _nt_space
1852
1952
  s0 << r9
1853
1953
  if r9
1854
- r10 = _nt_space
1954
+ r10 = _nt_rp
1855
1955
  s0 << r10
1856
1956
  if r10
1857
- r11 = _nt_data
1957
+ r11 = _nt_space
1858
1958
  s0 << r11
1959
+ if r11
1960
+ r12 = _nt_data
1961
+ s0 << r12
1962
+ end
1859
1963
  end
1860
1964
  end
1861
1965
  end
@@ -1889,44 +1993,48 @@ module DNS
1889
1993
  elements[1]
1890
1994
  end
1891
1995
 
1892
- def ttl
1996
+ def ms_age
1893
1997
  elements[2]
1894
1998
  end
1895
1999
 
1896
- def klass
2000
+ def ttl
1897
2001
  elements[3]
1898
2002
  end
1899
2003
 
2004
+ def klass
2005
+ elements[4]
2006
+ end
2007
+
1900
2008
  def space2
1901
- elements[5]
2009
+ elements[6]
1902
2010
  end
1903
2011
 
1904
2012
  def priority
1905
- elements[6]
2013
+ elements[7]
1906
2014
  end
1907
2015
 
1908
2016
  def space3
1909
- elements[7]
2017
+ elements[8]
1910
2018
  end
1911
2019
 
1912
2020
  def weight
1913
- elements[8]
2021
+ elements[9]
1914
2022
  end
1915
2023
 
1916
2024
  def space4
1917
- elements[9]
2025
+ elements[10]
1918
2026
  end
1919
2027
 
1920
2028
  def port
1921
- elements[10]
2029
+ elements[11]
1922
2030
  end
1923
2031
 
1924
2032
  def space5
1925
- elements[11]
2033
+ elements[12]
1926
2034
  end
1927
2035
 
1928
2036
  def target
1929
- elements[12]
2037
+ elements[13]
1930
2038
  end
1931
2039
  end
1932
2040
 
@@ -1943,40 +2051,44 @@ module DNS
1943
2051
  elements[2]
1944
2052
  end
1945
2053
 
1946
- def ttl
2054
+ def ms_age
1947
2055
  elements[3]
1948
2056
  end
1949
2057
 
2058
+ def ttl
2059
+ elements[4]
2060
+ end
2061
+
1950
2062
  def space2
1951
- elements[5]
2063
+ elements[6]
1952
2064
  end
1953
2065
 
1954
2066
  def priority
1955
- elements[6]
2067
+ elements[7]
1956
2068
  end
1957
2069
 
1958
2070
  def space3
1959
- elements[7]
2071
+ elements[8]
1960
2072
  end
1961
2073
 
1962
2074
  def weight
1963
- elements[8]
2075
+ elements[9]
1964
2076
  end
1965
2077
 
1966
2078
  def space4
1967
- elements[9]
2079
+ elements[10]
1968
2080
  end
1969
2081
 
1970
2082
  def port
1971
- elements[10]
2083
+ elements[11]
1972
2084
  end
1973
2085
 
1974
2086
  def space5
1975
- elements[11]
2087
+ elements[12]
1976
2088
  end
1977
2089
 
1978
2090
  def target
1979
- elements[12]
2091
+ elements[13]
1980
2092
  end
1981
2093
  end
1982
2094
 
@@ -1989,40 +2101,44 @@ module DNS
1989
2101
  elements[1]
1990
2102
  end
1991
2103
 
1992
- def ttl
2104
+ def ms_age
1993
2105
  elements[2]
1994
2106
  end
1995
2107
 
2108
+ def ttl
2109
+ elements[3]
2110
+ end
2111
+
1996
2112
  def space2
1997
- elements[4]
2113
+ elements[5]
1998
2114
  end
1999
2115
 
2000
2116
  def priority
2001
- elements[5]
2117
+ elements[6]
2002
2118
  end
2003
2119
 
2004
2120
  def space3
2005
- elements[6]
2121
+ elements[7]
2006
2122
  end
2007
2123
 
2008
2124
  def weight
2009
- elements[7]
2125
+ elements[8]
2010
2126
  end
2011
2127
 
2012
2128
  def space4
2013
- elements[8]
2129
+ elements[9]
2014
2130
  end
2015
2131
 
2016
2132
  def port
2017
- elements[9]
2133
+ elements[10]
2018
2134
  end
2019
2135
 
2020
2136
  def space5
2021
- elements[10]
2137
+ elements[11]
2022
2138
  end
2023
2139
 
2024
2140
  def target
2025
- elements[11]
2141
+ elements[12]
2026
2142
  end
2027
2143
  end
2028
2144
 
@@ -2076,6 +2192,10 @@ module DNS
2076
2192
  def to_s
2077
2193
  "#{host} #{ttl} #{klass} SRV #{priority} #{weight} #{port} #{target}"
2078
2194
  end
2195
+
2196
+ def record_type
2197
+ "SRV"
2198
+ end
2079
2199
  end
2080
2200
 
2081
2201
  def _nt_srv_record
@@ -2097,44 +2217,48 @@ module DNS
2097
2217
  r3 = _nt_space
2098
2218
  s1 << r3
2099
2219
  if r3
2100
- r4 = _nt_ttl
2220
+ r4 = _nt_ms_age
2101
2221
  s1 << r4
2102
2222
  if r4
2103
- r5 = _nt_klass
2223
+ r5 = _nt_ttl
2104
2224
  s1 << r5
2105
2225
  if r5
2106
- if (match_len = has_terminal?("SRV", false, index))
2107
- r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2108
- @index += match_len
2109
- else
2110
- terminal_parse_failure('"SRV"')
2111
- r6 = nil
2112
- end
2226
+ r6 = _nt_klass
2113
2227
  s1 << r6
2114
2228
  if r6
2115
- r7 = _nt_space
2229
+ if (match_len = has_terminal?("SRV", false, index))
2230
+ r7 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2231
+ @index += match_len
2232
+ else
2233
+ terminal_parse_failure('"SRV"')
2234
+ r7 = nil
2235
+ end
2116
2236
  s1 << r7
2117
2237
  if r7
2118
- r8 = _nt_integer
2238
+ r8 = _nt_space
2119
2239
  s1 << r8
2120
2240
  if r8
2121
- r9 = _nt_space
2241
+ r9 = _nt_integer
2122
2242
  s1 << r9
2123
2243
  if r9
2124
- r10 = _nt_integer
2244
+ r10 = _nt_space
2125
2245
  s1 << r10
2126
2246
  if r10
2127
- r11 = _nt_space
2247
+ r11 = _nt_integer
2128
2248
  s1 << r11
2129
2249
  if r11
2130
- r12 = _nt_integer
2250
+ r12 = _nt_space
2131
2251
  s1 << r12
2132
2252
  if r12
2133
- r13 = _nt_space
2253
+ r13 = _nt_integer
2134
2254
  s1 << r13
2135
2255
  if r13
2136
- r14 = _nt_host
2256
+ r14 = _nt_space
2137
2257
  s1 << r14
2258
+ if r14
2259
+ r15 = _nt_host
2260
+ s1 << r15
2261
+ end
2138
2262
  end
2139
2263
  end
2140
2264
  end
@@ -2159,51 +2283,55 @@ module DNS
2159
2283
  r0 = r1
2160
2284
  r0.extend(SrvRecord4)
2161
2285
  else
2162
- i15, s15 = index, []
2163
- r16 = _nt_host
2164
- s15 << r16
2165
- if r16
2166
- r17 = _nt_space
2167
- s15 << r17
2168
- if r17
2169
- r18 = _nt_klass
2170
- s15 << r18
2171
- if r18
2172
- r19 = _nt_ttl
2173
- s15 << r19
2174
- if r19
2175
- if (match_len = has_terminal?("SRV", false, index))
2176
- r20 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2177
- @index += match_len
2178
- else
2179
- terminal_parse_failure('"SRV"')
2180
- r20 = nil
2181
- end
2182
- s15 << r20
2183
- if r20
2184
- r21 = _nt_space
2185
- s15 << r21
2186
- if r21
2187
- r22 = _nt_integer
2188
- s15 << r22
2189
- if r22
2190
- r23 = _nt_space
2191
- s15 << r23
2192
- if r23
2193
- r24 = _nt_integer
2194
- s15 << r24
2195
- if r24
2196
- r25 = _nt_space
2197
- s15 << r25
2198
- if r25
2199
- r26 = _nt_integer
2200
- s15 << r26
2201
- if r26
2202
- r27 = _nt_space
2203
- s15 << r27
2204
- if r27
2205
- r28 = _nt_host
2206
- s15 << r28
2286
+ i16, s16 = index, []
2287
+ r17 = _nt_host
2288
+ s16 << r17
2289
+ if r17
2290
+ r18 = _nt_space
2291
+ s16 << r18
2292
+ if r18
2293
+ r19 = _nt_klass
2294
+ s16 << r19
2295
+ if r19
2296
+ r20 = _nt_ms_age
2297
+ s16 << r20
2298
+ if r20
2299
+ r21 = _nt_ttl
2300
+ s16 << r21
2301
+ if r21
2302
+ if (match_len = has_terminal?("SRV", false, index))
2303
+ r22 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2304
+ @index += match_len
2305
+ else
2306
+ terminal_parse_failure('"SRV"')
2307
+ r22 = nil
2308
+ end
2309
+ s16 << r22
2310
+ if r22
2311
+ r23 = _nt_space
2312
+ s16 << r23
2313
+ if r23
2314
+ r24 = _nt_integer
2315
+ s16 << r24
2316
+ if r24
2317
+ r25 = _nt_space
2318
+ s16 << r25
2319
+ if r25
2320
+ r26 = _nt_integer
2321
+ s16 << r26
2322
+ if r26
2323
+ r27 = _nt_space
2324
+ s16 << r27
2325
+ if r27
2326
+ r28 = _nt_integer
2327
+ s16 << r28
2328
+ if r28
2329
+ r29 = _nt_space
2330
+ s16 << r29
2331
+ if r29
2332
+ r30 = _nt_host
2333
+ s16 << r30
2334
+ end
2207
2335
  end
2208
2336
  end
2209
2337
  end
@@ -2216,60 +2344,64 @@ module DNS
2216
2344
  end
2217
2345
  end
2218
2346
  end
2219
- if s15.last
2220
- r15 = instantiate_node(SyntaxNode,input, i15...index, s15)
2221
- r15.extend(SrvRecord1)
2347
+ if s16.last
2348
+ r16 = instantiate_node(SyntaxNode,input, i16...index, s16)
2349
+ r16.extend(SrvRecord1)
2222
2350
  else
2223
- @index = i15
2224
- r15 = nil
2351
+ @index = i16
2352
+ r16 = nil
2225
2353
  end
2226
- if r15
2227
- r15 = SyntaxNode.new(input, (index-1)...index) if r15 == true
2228
- r0 = r15
2354
+ if r16
2355
+ r16 = SyntaxNode.new(input, (index-1)...index) if r16 == true
2356
+ r0 = r16
2229
2357
  r0.extend(SrvRecord4)
2230
2358
  else
2231
- i29, s29 = index, []
2232
- r30 = _nt_host
2233
- s29 << r30
2234
- if r30
2235
- r31 = _nt_space
2236
- s29 << r31
2237
- if r31
2238
- r32 = _nt_ttl
2239
- s29 << r32
2240
- if r32
2241
- if (match_len = has_terminal?("SRV", false, index))
2242
- r33 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2243
- @index += match_len
2244
- else
2245
- terminal_parse_failure('"SRV"')
2246
- r33 = nil
2247
- end
2248
- s29 << r33
2249
- if r33
2250
- r34 = _nt_space
2251
- s29 << r34
2252
- if r34
2253
- r35 = _nt_integer
2254
- s29 << r35
2255
- if r35
2256
- r36 = _nt_space
2257
- s29 << r36
2258
- if r36
2259
- r37 = _nt_integer
2260
- s29 << r37
2261
- if r37
2262
- r38 = _nt_space
2263
- s29 << r38
2264
- if r38
2265
- r39 = _nt_integer
2266
- s29 << r39
2267
- if r39
2268
- r40 = _nt_space
2269
- s29 << r40
2270
- if r40
2271
- r41 = _nt_host
2272
- s29 << r41
2359
+ i31, s31 = index, []
2360
+ r32 = _nt_host
2361
+ s31 << r32
2362
+ if r32
2363
+ r33 = _nt_space
2364
+ s31 << r33
2365
+ if r33
2366
+ r34 = _nt_ms_age
2367
+ s31 << r34
2368
+ if r34
2369
+ r35 = _nt_ttl
2370
+ s31 << r35
2371
+ if r35
2372
+ if (match_len = has_terminal?("SRV", false, index))
2373
+ r36 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2374
+ @index += match_len
2375
+ else
2376
+ terminal_parse_failure('"SRV"')
2377
+ r36 = nil
2378
+ end
2379
+ s31 << r36
2380
+ if r36
2381
+ r37 = _nt_space
2382
+ s31 << r37
2383
+ if r37
2384
+ r38 = _nt_integer
2385
+ s31 << r38
2386
+ if r38
2387
+ r39 = _nt_space
2388
+ s31 << r39
2389
+ if r39
2390
+ r40 = _nt_integer
2391
+ s31 << r40
2392
+ if r40
2393
+ r41 = _nt_space
2394
+ s31 << r41
2395
+ if r41
2396
+ r42 = _nt_integer
2397
+ s31 << r42
2398
+ if r42
2399
+ r43 = _nt_space
2400
+ s31 << r43
2401
+ if r43
2402
+ r44 = _nt_host
2403
+ s31 << r44
2404
+ end
2273
2405
  end
2274
2406
  end
2275
2407
  end
@@ -2281,60 +2413,60 @@ module DNS
2281
2413
  end
2282
2414
  end
2283
2415
  end
2284
- if s29.last
2285
- r29 = instantiate_node(SyntaxNode,input, i29...index, s29)
2286
- r29.extend(SrvRecord2)
2416
+ if s31.last
2417
+ r31 = instantiate_node(SyntaxNode,input, i31...index, s31)
2418
+ r31.extend(SrvRecord2)
2287
2419
  else
2288
- @index = i29
2289
- r29 = nil
2420
+ @index = i31
2421
+ r31 = nil
2290
2422
  end
2291
- if r29
2292
- r29 = SyntaxNode.new(input, (index-1)...index) if r29 == true
2293
- r0 = r29
2423
+ if r31
2424
+ r31 = SyntaxNode.new(input, (index-1)...index) if r31 == true
2425
+ r0 = r31
2294
2426
  r0.extend(SrvRecord4)
2295
2427
  else
2296
- i42, s42 = index, []
2297
- r43 = _nt_host
2298
- s42 << r43
2299
- if r43
2300
- r44 = _nt_space
2301
- s42 << r44
2302
- if r44
2303
- r45 = _nt_klass
2304
- s42 << r45
2305
- if r45
2428
+ i45, s45 = index, []
2429
+ r46 = _nt_host
2430
+ s45 << r46
2431
+ if r46
2432
+ r47 = _nt_space
2433
+ s45 << r47
2434
+ if r47
2435
+ r48 = _nt_klass
2436
+ s45 << r48
2437
+ if r48
2306
2438
  if (match_len = has_terminal?("SRV", false, index))
2307
- r46 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2439
+ r49 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2308
2440
  @index += match_len
2309
2441
  else
2310
2442
  terminal_parse_failure('"SRV"')
2311
- r46 = nil
2443
+ r49 = nil
2312
2444
  end
2313
- s42 << r46
2314
- if r46
2315
- r47 = _nt_space
2316
- s42 << r47
2317
- if r47
2318
- r48 = _nt_integer
2319
- s42 << r48
2320
- if r48
2321
- r49 = _nt_space
2322
- s42 << r49
2323
- if r49
2324
- r50 = _nt_integer
2325
- s42 << r50
2326
- if r50
2327
- r51 = _nt_space
2328
- s42 << r51
2329
- if r51
2330
- r52 = _nt_integer
2331
- s42 << r52
2332
- if r52
2333
- r53 = _nt_space
2334
- s42 << r53
2335
- if r53
2336
- r54 = _nt_host
2337
- s42 << r54
2445
+ s45 << r49
2446
+ if r49
2447
+ r50 = _nt_space
2448
+ s45 << r50
2449
+ if r50
2450
+ r51 = _nt_integer
2451
+ s45 << r51
2452
+ if r51
2453
+ r52 = _nt_space
2454
+ s45 << r52
2455
+ if r52
2456
+ r53 = _nt_integer
2457
+ s45 << r53
2458
+ if r53
2459
+ r54 = _nt_space
2460
+ s45 << r54
2461
+ if r54
2462
+ r55 = _nt_integer
2463
+ s45 << r55
2464
+ if r55
2465
+ r56 = _nt_space
2466
+ s45 << r56
2467
+ if r56
2468
+ r57 = _nt_host
2469
+ s45 << r57
2338
2470
  end
2339
2471
  end
2340
2472
  end
@@ -2346,16 +2478,16 @@ module DNS
2346
2478
  end
2347
2479
  end
2348
2480
  end
2349
- if s42.last
2350
- r42 = instantiate_node(SyntaxNode,input, i42...index, s42)
2351
- r42.extend(SrvRecord3)
2481
+ if s45.last
2482
+ r45 = instantiate_node(SyntaxNode,input, i45...index, s45)
2483
+ r45.extend(SrvRecord3)
2352
2484
  else
2353
- @index = i42
2354
- r42 = nil
2485
+ @index = i45
2486
+ r45 = nil
2355
2487
  end
2356
- if r42
2357
- r42 = SyntaxNode.new(input, (index-1)...index) if r42 == true
2358
- r0 = r42
2488
+ if r45
2489
+ r45 = SyntaxNode.new(input, (index-1)...index) if r45 == true
2490
+ r0 = r45
2359
2491
  r0.extend(SrvRecord4)
2360
2492
  else
2361
2493
  @index = i0
@@ -2379,20 +2511,24 @@ module DNS
2379
2511
  elements[1]
2380
2512
  end
2381
2513
 
2382
- def ttl
2514
+ def ms_age
2383
2515
  elements[2]
2384
2516
  end
2385
2517
 
2386
- def klass
2518
+ def ttl
2387
2519
  elements[3]
2388
2520
  end
2389
2521
 
2522
+ def klass
2523
+ elements[4]
2524
+ end
2525
+
2390
2526
  def space2
2391
- elements[5]
2527
+ elements[6]
2392
2528
  end
2393
2529
 
2394
2530
  def data
2395
- elements[6]
2531
+ elements[7]
2396
2532
  end
2397
2533
  end
2398
2534
 
@@ -2400,6 +2536,10 @@ module DNS
2400
2536
  def to_s
2401
2537
  "#{host} #{ttl} #{klass} SPF #{data}"
2402
2538
  end
2539
+
2540
+ def record_type
2541
+ "SPF"
2542
+ end
2403
2543
  end
2404
2544
 
2405
2545
  def _nt_spf_record
@@ -2420,26 +2560,30 @@ module DNS
2420
2560
  r2 = _nt_space
2421
2561
  s0 << r2
2422
2562
  if r2
2423
- r3 = _nt_ttl
2563
+ r3 = _nt_ms_age
2424
2564
  s0 << r3
2425
2565
  if r3
2426
- r4 = _nt_klass
2566
+ r4 = _nt_ttl
2427
2567
  s0 << r4
2428
2568
  if r4
2429
- if (match_len = has_terminal?("SPF", false, index))
2430
- r5 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2431
- @index += match_len
2432
- else
2433
- terminal_parse_failure('"SPF"')
2434
- r5 = nil
2435
- end
2569
+ r5 = _nt_klass
2436
2570
  s0 << r5
2437
2571
  if r5
2438
- r6 = _nt_space
2572
+ if (match_len = has_terminal?("SPF", false, index))
2573
+ r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2574
+ @index += match_len
2575
+ else
2576
+ terminal_parse_failure('"SPF"')
2577
+ r6 = nil
2578
+ end
2439
2579
  s0 << r6
2440
2580
  if r6
2441
- r7 = _nt_txt_data
2581
+ r7 = _nt_space
2442
2582
  s0 << r7
2583
+ if r7
2584
+ r8 = _nt_txt_data
2585
+ s0 << r8
2586
+ end
2443
2587
  end
2444
2588
  end
2445
2589
  end
@@ -2469,20 +2613,24 @@ module DNS
2469
2613
  elements[1]
2470
2614
  end
2471
2615
 
2472
- def ttl
2616
+ def ms_age
2473
2617
  elements[2]
2474
2618
  end
2475
2619
 
2476
- def klass
2620
+ def ttl
2477
2621
  elements[3]
2478
2622
  end
2479
2623
 
2624
+ def klass
2625
+ elements[4]
2626
+ end
2627
+
2480
2628
  def space2
2481
- elements[5]
2629
+ elements[6]
2482
2630
  end
2483
2631
 
2484
2632
  def data
2485
- elements[6]
2633
+ elements[7]
2486
2634
  end
2487
2635
  end
2488
2636
 
@@ -2490,6 +2638,10 @@ module DNS
2490
2638
  def to_s
2491
2639
  "#{host} #{ttl} #{klass} TXT #{data}"
2492
2640
  end
2641
+
2642
+ def record_type
2643
+ "TXT"
2644
+ end
2493
2645
  end
2494
2646
 
2495
2647
  def _nt_txt_record
@@ -2510,26 +2662,30 @@ module DNS
2510
2662
  r2 = _nt_space
2511
2663
  s0 << r2
2512
2664
  if r2
2513
- r3 = _nt_ttl
2665
+ r3 = _nt_ms_age
2514
2666
  s0 << r3
2515
2667
  if r3
2516
- r4 = _nt_klass
2668
+ r4 = _nt_ttl
2517
2669
  s0 << r4
2518
2670
  if r4
2519
- if (match_len = has_terminal?("TXT", false, index))
2520
- r5 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2521
- @index += match_len
2522
- else
2523
- terminal_parse_failure('"TXT"')
2524
- r5 = nil
2525
- end
2671
+ r5 = _nt_klass
2526
2672
  s0 << r5
2527
2673
  if r5
2528
- r6 = _nt_space
2674
+ if (match_len = has_terminal?("TXT", false, index))
2675
+ r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2676
+ @index += match_len
2677
+ else
2678
+ terminal_parse_failure('"TXT"')
2679
+ r6 = nil
2680
+ end
2529
2681
  s0 << r6
2530
2682
  if r6
2531
- r7 = _nt_txt_data
2683
+ r7 = _nt_space
2532
2684
  s0 << r7
2685
+ if r7
2686
+ r8 = _nt_ms_txt_data
2687
+ s0 << r8
2688
+ end
2533
2689
  end
2534
2690
  end
2535
2691
  end
@@ -2997,12 +3153,7 @@ module DNS
2997
3153
  break
2998
3154
  end
2999
3155
  end
3000
- if s2.empty?
3001
- @index = i2
3002
- r2 = nil
3003
- else
3004
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3005
- end
3156
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3006
3157
  s1 << r2
3007
3158
  if r2
3008
3159
  if (match_len = has_terminal?(".", false, index))
@@ -3604,6 +3755,111 @@ module DNS
3604
3755
  r0
3605
3756
  end
3606
3757
 
3758
+ module MsAge0
3759
+ def space
3760
+ elements[3]
3761
+ end
3762
+ end
3763
+
3764
+ module MsAge1
3765
+ def to_s
3766
+ text_value
3767
+ end
3768
+ end
3769
+
3770
+ def _nt_ms_age
3771
+ start_index = index
3772
+ if node_cache[:ms_age].has_key?(index)
3773
+ cached = node_cache[:ms_age][index]
3774
+ if cached
3775
+ node_cache[:ms_age][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3776
+ @index = cached.interval.end
3777
+ end
3778
+ return cached
3779
+ end
3780
+
3781
+ i0 = index
3782
+ i1, s1 = index, []
3783
+ if (match_len = has_terminal?("[AGE:", false, index))
3784
+ r2 = instantiate_node(SyntaxNode,input, index...(index + match_len))
3785
+ @index += match_len
3786
+ else
3787
+ terminal_parse_failure('"[AGE:"')
3788
+ r2 = nil
3789
+ end
3790
+ s1 << r2
3791
+ if r2
3792
+ s3, i3 = [], index
3793
+ loop do
3794
+ if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
3795
+ r4 = true
3796
+ @index += 1
3797
+ else
3798
+ terminal_parse_failure('[\\d]')
3799
+ r4 = nil
3800
+ end
3801
+ if r4
3802
+ s3 << r4
3803
+ else
3804
+ break
3805
+ end
3806
+ end
3807
+ if s3.empty?
3808
+ @index = i3
3809
+ r3 = nil
3810
+ else
3811
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
3812
+ end
3813
+ s1 << r3
3814
+ if r3
3815
+ if (match_len = has_terminal?("]", false, index))
3816
+ r5 = true
3817
+ @index += match_len
3818
+ else
3819
+ terminal_parse_failure('"]"')
3820
+ r5 = nil
3821
+ end
3822
+ s1 << r5
3823
+ if r5
3824
+ r6 = _nt_space
3825
+ s1 << r6
3826
+ end
3827
+ end
3828
+ end
3829
+ if s1.last
3830
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3831
+ r1.extend(MsAge0)
3832
+ else
3833
+ @index = i1
3834
+ r1 = nil
3835
+ end
3836
+ if r1
3837
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
3838
+ r0 = r1
3839
+ r0.extend(MsAge1)
3840
+ else
3841
+ if (match_len = has_terminal?('', false, index))
3842
+ r7 = true
3843
+ @index += match_len
3844
+ else
3845
+ terminal_parse_failure('\'\'')
3846
+ r7 = nil
3847
+ end
3848
+ if r7
3849
+ r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
3850
+ r0 = r7
3851
+ r0.extend(MsAge1)
3852
+ else
3853
+ @index = i0
3854
+ r0 = nil
3855
+ end
3856
+ end
3857
+
3858
+ node_cache[:ms_age][start_index] = r0
3859
+
3860
+ r0
3861
+ end
3862
+
3607
3863
  module Ttl0
3608
3864
  def time_interval
3609
3865
  elements[0]
@@ -3820,6 +4076,123 @@ module DNS
3820
4076
  r0
3821
4077
  end
3822
4078
 
4079
+ module MsTxtData0
4080
+ def data
4081
+ elements[2]
4082
+ end
4083
+
4084
+ end
4085
+
4086
+ module MsTxtData1
4087
+ def data
4088
+ elements[0]
4089
+ end
4090
+ end
4091
+
4092
+ module MsTxtData2
4093
+ def to_s
4094
+ data.to_s
4095
+ end
4096
+ end
4097
+
4098
+ def _nt_ms_txt_data
4099
+ start_index = index
4100
+ if node_cache[:ms_txt_data].has_key?(index)
4101
+ cached = node_cache[:ms_txt_data][index]
4102
+ if cached
4103
+ node_cache[:ms_txt_data][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4104
+ @index = cached.interval.end
4105
+ end
4106
+ return cached
4107
+ end
4108
+
4109
+ i0 = index
4110
+ i1, s1 = index, []
4111
+ if (match_len = has_terminal?("(", false, index))
4112
+ r2 = true
4113
+ @index += match_len
4114
+ else
4115
+ terminal_parse_failure('"("')
4116
+ r2 = nil
4117
+ end
4118
+ s1 << r2
4119
+ if r2
4120
+ s3, i3 = [], index
4121
+ loop do
4122
+ r4 = _nt_space
4123
+ if r4
4124
+ s3 << r4
4125
+ else
4126
+ break
4127
+ end
4128
+ end
4129
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
4130
+ s1 << r3
4131
+ if r3
4132
+ r5 = _nt_txt_data
4133
+ s1 << r5
4134
+ if r5
4135
+ s6, i6 = [], index
4136
+ loop do
4137
+ r7 = _nt_space
4138
+ if r7
4139
+ s6 << r7
4140
+ else
4141
+ break
4142
+ end
4143
+ end
4144
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
4145
+ s1 << r6
4146
+ if r6
4147
+ if (match_len = has_terminal?(")", false, index))
4148
+ r8 = true
4149
+ @index += match_len
4150
+ else
4151
+ terminal_parse_failure('")"')
4152
+ r8 = nil
4153
+ end
4154
+ s1 << r8
4155
+ end
4156
+ end
4157
+ end
4158
+ end
4159
+ if s1.last
4160
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4161
+ r1.extend(MsTxtData0)
4162
+ else
4163
+ @index = i1
4164
+ r1 = nil
4165
+ end
4166
+ if r1
4167
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
4168
+ r0 = r1
4169
+ r0.extend(MsTxtData2)
4170
+ else
4171
+ i9, s9 = index, []
4172
+ r10 = _nt_txt_data
4173
+ s9 << r10
4174
+ if s9.last
4175
+ r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
4176
+ r9.extend(MsTxtData1)
4177
+ else
4178
+ @index = i9
4179
+ r9 = nil
4180
+ end
4181
+ if r9
4182
+ r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
4183
+ r0 = r9
4184
+ r0.extend(MsTxtData2)
4185
+ else
4186
+ @index = i0
4187
+ r0 = nil
4188
+ end
4189
+ end
4190
+
4191
+ node_cache[:ms_txt_data][start_index] = r0
4192
+
4193
+ r0
4194
+ end
4195
+
3823
4196
  module TxtData0
3824
4197
  def space
3825
4198
  elements[0]