+# Base class for our exceptions
+class DynDnsError(Exception):
+ pass
+
+class AuthError(DynDnsError):
+ returncode = 'badauth'
+
+class UsernameMissing(AuthError):
+ pass
+
+class UsernameInvalid(AuthError):
+ pass
+
+class PasswordMissing(AuthError):
+ pass
+
+class PasswordWrong(AuthError):
+ pass
+
+class HostnameError(DynDnsError):
+ returncode = 'notfqdn'
+
+class HostnameMissing(HostnameError):
+ pass
+
+class PasswordWrong(HostnameError):
+ pass
+
+class IpError(DynDnsError):
+ returncode = 'badip' # not documented at dyn.com
+
+class IpMissing(IpError):
+ pass
+
+class IpInvalid(IpError):
+ pass
+