MCPcopy Create free account
hub / github.com/PierreGode/Ragnar / encode_name

Function encode_name

pager_lib/nmb/utils.py:5–27  ·  view source on GitHub ↗

Perform first and second level encoding of name as specified in RFC 1001 (Section 4)

(name, type, scope = None)

Source from the content-addressed store, hash-verified

3
4
5def encode_name(name, type, scope = None):
6 """
7 Perform first and second level encoding of name as specified in RFC 1001 (Section 4)
8 """
9 if name == '*':
10 name = name + '\0' * 15
11 elif len(name) > 15:
12 name = name[:15] + chr(type)
13 else:
14 name = name.ljust(15) + chr(type)
15
16 def _do_first_level_encoding(m):
17 s = ord(m.group(0))
18 return string.ascii_uppercase[s >> 4] + string.ascii_uppercase[s & 0x0f]
19
20 encoded_name = chr(len(name) * 2) + re.sub('.', _do_first_level_encoding, name)
21 if scope:
22 encoded_scope = ''
23 for s in string.split(scope, '.'):
24 encoded_scope = encoded_scope + chr(len(s)) + s
25 return bytes(encoded_name + encoded_scope + '\0', 'ascii')
26 else:
27 return bytes(encoded_name + '\0', 'ascii')
28
29
30def decode_name(name):

Callers 3

requestNMBSessionMethod · 0.85
prepareNameQueryMethod · 0.85
prepareNetNameQueryMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected