mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-31 05:55:28 +00:00
supported a simple name with possible compression
git-svn-id: svn://bind10.isc.org/svn/bind10/trunk@1701 e5f2f494-b856-4b98-b285-d166d9295462
This commit is contained in:
25
src/lib/dns/tests/testdata/gen-wiredata.py.in
vendored
25
src/lib/dns/tests/testdata/gen-wiredata.py.in
vendored
@@ -60,15 +60,16 @@ def code_totext(code, dict):
|
|||||||
return dict[code] + '(' + str(code) + ')'
|
return dict[code] + '(' + str(code) + ')'
|
||||||
return str(code)
|
return str(code)
|
||||||
|
|
||||||
def encode_name(name):
|
def encode_name(name, absolute = True):
|
||||||
# make sure the name is dot-terminated. duplicate dots will be ignored
|
# make sure the name is dot-terminated. duplicate dots will be ignored
|
||||||
# below.
|
# below.
|
||||||
name += '.'
|
name += '.'
|
||||||
labels = name.split('.')
|
labels = name.split('.')
|
||||||
wire = ''
|
wire = ''
|
||||||
for l in labels:
|
for l in labels:
|
||||||
wire += '%02x' % len(l)
|
if absolute or len(l) > 0:
|
||||||
wire += ''.join(['%02x' % ord(ch) for ch in l])
|
wire += '%02x' % len(l)
|
||||||
|
wire += ''.join(['%02x' % ord(ch) for ch in l])
|
||||||
if len(l) == 0:
|
if len(l) == 0:
|
||||||
break
|
break
|
||||||
return wire
|
return wire
|
||||||
@@ -103,6 +104,21 @@ def print_header(f, input_file):
|
|||||||
###
|
###
|
||||||
''')
|
''')
|
||||||
|
|
||||||
|
class Name:
|
||||||
|
name = 'example.com'
|
||||||
|
pointer = -1 # no compression by default
|
||||||
|
def dump(self, f):
|
||||||
|
name_wire = encode_name(self.name,
|
||||||
|
True if self.pointer == -1 else False)
|
||||||
|
f.write('\n# DNS Name: %s' % self.name)
|
||||||
|
if self.pointer >= 0:
|
||||||
|
f.write(' + compression pointer: %d' % self.pointer)
|
||||||
|
f.write('\n')
|
||||||
|
f.write('%s' % name_wire)
|
||||||
|
if self.pointer >= 0:
|
||||||
|
f.write(' %04x' % (0xc000 | self.pointer))
|
||||||
|
f.write('\n')
|
||||||
|
|
||||||
class DNSHeader:
|
class DNSHeader:
|
||||||
id = 0x1035
|
id = 0x1035
|
||||||
(qr, aa, tc, rd, ra, ad, cd) = 0, 0, 0, 0, 0, 0, 0
|
(qr, aa, tc, rd, ra, ad, cd) = 0, 0, 0, 0, 0, 0, 0
|
||||||
@@ -316,7 +332,8 @@ class RRSIG:
|
|||||||
f.write('%04x %s %s\n' % (self.tag, name_wire, sig_wire))
|
f.write('%04x %s %s\n' % (self.tag, name_wire, sig_wire))
|
||||||
|
|
||||||
def get_config_param(section):
|
def get_config_param(section):
|
||||||
config_param = {'header' : (DNSHeader, header_xtables),
|
config_param = {'name' : (Name, {}),
|
||||||
|
'header' : (DNSHeader, header_xtables),
|
||||||
'question' : (DNSQuestion, question_xtables),
|
'question' : (DNSQuestion, question_xtables),
|
||||||
'edns' : (EDNS, {}), 'soa' : (SOA, {}), 'txt' : (TXT, {}),
|
'edns' : (EDNS, {}), 'soa' : (SOA, {}), 'txt' : (TXT, {}),
|
||||||
'rrsig' : (RRSIG, {}), 'nsec' : (NSEC, {})}
|
'rrsig' : (RRSIG, {}), 'nsec' : (NSEC, {})}
|
||||||
|
Reference in New Issue
Block a user