1 # Copyright (C) 2003-2007, 2009, 2010 Nominum, Inc.
3 # Permission to use, copy, modify, and distribute this software and its
4 # documentation for any purpose with or without fee is hereby granted,
5 # provided that the above copyright notice and this permission notice
6 # appear in all copies.
8 # THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES
9 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR
11 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
14 # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20 class ISDN(dns
.rdata
.Rdata
):
23 @ivar address: the ISDN address
25 @ivar subaddress: the ISDN subaddress (or '' if not present)
26 @type subaddress: string
29 __slots__
= ['address', 'subaddress']
31 def __init__(self
, rdclass
, rdtype
, address
, subaddress
):
32 super(ISDN
, self
).__init
__(rdclass
, rdtype
)
33 self
.address
= address
34 self
.subaddress
= subaddress
36 def to_text(self
, origin
=None, relativize
=True, **kw
):
38 return '"%s" "%s"' % (dns
.rdata
._escapify
(self
.address
),
39 dns
.rdata
._escapify
(self
.subaddress
))
41 return '"%s"' % dns
.rdata
._escapify
(self
.address
)
43 def from_text(cls
, rdclass
, rdtype
, tok
, origin
= None, relativize
= True):
44 address
= tok
.get_string()
46 if not t
.is_eol_or_eof():
48 subaddress
= tok
.get_string()
53 return cls(rdclass
, rdtype
, address
, subaddress
)
55 from_text
= classmethod(from_text
)
57 def to_wire(self
, file, compress
= None, origin
= None):
62 file.write(self
.address
)
63 l
= len(self
.subaddress
)
68 file.write(self
.subaddress
)
70 def from_wire(cls
, rdclass
, rdtype
, wire
, current
, rdlen
, origin
= None):
71 l
= ord(wire
[current
])
75 raise dns
.exception
.FormError
76 address
= wire
[current
: current
+ l
]
80 l
= ord(wire
[current
])
84 raise dns
.exception
.FormError
85 subaddress
= wire
[current
: current
+ l
]
88 return cls(rdclass
, rdtype
, address
, subaddress
)
90 from_wire
= classmethod(from_wire
)
92 def _cmp(self
, other
):
93 v
= cmp(self
.address
, other
.address
)
95 v
= cmp(self
.subaddress
, other
.subaddress
)