home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import dns.exception as dns
- import dns.rdata as dns
- import dns.rdatatype as dns
- import dns.name as dns
-
- class NXT(dns.rdata.Rdata):
- __slots__ = [
- 'next',
- 'bitmap']
-
- def __init__(self, rdclass, rdtype, next, bitmap):
- super(NXT, self).__init__(rdclass, rdtype)
- self.next = next
- self.bitmap = bitmap
-
-
- def to_text(self, origin = None, relativize = True, **kw):
- next = self.next.choose_relativity(origin, relativize)
- bits = []
- for i in xrange(0, len(self.bitmap)):
- byte = ord(self.bitmap[i])
- for j in xrange(0, 8):
- if byte & 128 >> j:
- bits.append(dns.rdatatype.to_text(i * 8 + j))
- continue
-
-
- text = ' '.join(bits)
- return '%s %s' % (next, text)
-
-
- def from_text(cls, rdclass, rdtype, tok, origin = None, relativize = True):
- next = tok.get_name()
- next = next.choose_relativity(origin, relativize)
- bitmap = [
- '\x00',
- '\x00',
- '\x00',
- '\x00',
- '\x00',
- '\x00',
- '\x00',
- '\x00',
- '\x00',
- '\x00',
- '\x00',
- '\x00',
- '\x00',
- '\x00',
- '\x00',
- '\x00']
- while None:
- (ttype, value) = tok.get()
- if ttype == dns.tokenizer.EOL or ttype == dns.tokenizer.EOF:
- break
-
- if value.isdigit():
- nrdtype = int(value)
- else:
- nrdtype = dns.rdatatype.from_text(value)
- if nrdtype == 0:
- raise dns.exception.SyntaxError, 'NXT with bit 0'
- if nrdtype > 127:
- raise dns.exception.SyntaxError, 'NXT with bit > 127'
- nrdtype > 127
- i = nrdtype // 8
- bitmap[i] = chr(ord(bitmap[i]) | 128 >> nrdtype % 8)
- continue
- bitmap = dns.rdata._truncate_bitmap(bitmap)
- return cls(rdclass, rdtype, next, bitmap)
-
- from_text = classmethod(from_text)
-
- def to_wire(self, file, compress = None, origin = None):
- self.next.to_wire(file, None, origin)
- file.write(self.bitmap)
-
-
- def from_wire(cls, rdclass, rdtype, wire, current, rdlen, origin = None):
- (next, cused) = dns.name.from_wire(wire[:current + rdlen], current)
- current += cused
- rdlen -= cused
- bitmap = wire[current:current + rdlen]
- if origin is not None:
- next = next.relativize(origin)
-
- return cls(rdclass, rdtype, next, bitmap)
-
- from_wire = classmethod(from_wire)
-
- def choose_relativity(self, origin = None, relativize = True):
- self.next = self.next.choose_relativity(origin, relativize)
-
-
- def _cmp(self, other):
- v = cmp(self.next, other.next)
- if v == 0:
- v = cmp(self.bitmap, other.bitmap)
-
- return v
-
-
-