]>
git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests.recursor-dnssec/cookiesoption.py
9 class CookiesOption(dns
.edns
.Option
):
10 """Implementation of draft-ietf-dnsop-cookies-09.
13 def __init__(self
, client
, server
):
14 super(CookiesOption
, self
).__init
__(10)
17 raise Exception('invalid client cookie length')
19 if server
is not None and len(server
) != 0 and (len(server
) < 8 or len(server
) > 32):
20 raise Exception('invalid server cookie length')
25 def to_wire(self
, file):
26 """Create EDNS packet as defined in draft-ietf-dnsop-cookies-09."""
28 file.write(self
.client
)
29 if self
.server
and len(self
.server
) > 0:
30 file.write(self
.server
)
32 def from_wire(cls
, otype
, wire
, current
, olen
):
33 """Read EDNS packet as defined in draft-ietf-dnsop-cookies-09.
36 An instance of CookiesOption based on the EDNS packet
39 data
= wire
[current
:current
+ olen
]
40 if len(data
) != 8 and (len(data
) < 16 or len(data
) > 40):
41 raise Exception('Invalid EDNS Cookies option')
49 return cls(client
, server
)
51 from_wire
= classmethod(from_wire
)
54 return '%s(%s, %s)' % (
55 self
.__class
__.__name
__,
60 def __eq__(self
, other
):
61 if not isinstance(other
, CookiesOption
):
63 if self
.client
!= other
.client
:
65 if self
.server
!= other
.server
:
69 def __ne__(self
, other
):
70 return not self
.__eq
__(other
)
73 dns
.edns
._type
_to
_class
[0x000A] = CookiesOption