]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Add another helper for rdns
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 26 Aug 2016 14:58:51 +0000 (15:58 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 26 Aug 2016 14:58:51 +0000 (15:58 +0100)
contrib/librdns/rdns.h
contrib/librdns/util.c

index ff8eadcc6467ba0c46b07d307efc4c5bd6583a45..7e5843183e1d63ecac02e7abf34216c072b92f60 100644 (file)
@@ -359,6 +359,13 @@ const char *rdns_strtype (enum rdns_request_type type);
  */
 enum rdns_request_type rdns_type_fromstr (const char *str);
 
+/**
+ * Parse string and return error code
+ * @param str
+ * @return
+ */
+enum dns_rcode rdns_rcode_fromstr (const char *str);
+
 /**
  * Increase refcount for a request
  * @param req
index 1eb5410c3a0de6b70c59bb4284e8b8805bda4d9a..0f701f1bd9af4c04e91f4cb8aca0ada9cdef583f 100644 (file)
@@ -289,6 +289,51 @@ rdns_type_fromstr (const char *str)
        return -1;
 }
 
+enum dns_rcode
+rdns_rcode_fromstr (const char *str)
+{
+       if (str) {
+               if (strcmp (str, "noerror") == 0) {
+                       return RDNS_RC_NOERROR;
+               }
+               else if (strcmp (str, "formerr") == 0) {
+                       return RDNS_RC_FORMERR;
+               }
+               else if (strcmp (str, "servfail") == 0) {
+                       return RDNS_RC_SERVFAIL;
+               }
+               else if (strcmp (str, "notimp") == 0) {
+                       return RDNS_RC_NOTIMP;
+               }
+               else if (strcmp (str, "yxdomain") == 0) {
+                       return RDNS_RC_YXDOMAIN;
+               }
+               else if (strcmp (str, "yxrrset") == 0) {
+                       return RDNS_RC_YXRRSET;
+               }
+               else if (strcmp (str, "nxrrset") == 0) {
+                       return RDNS_RC_NXRRSET;
+               }
+               else if (strcmp (str, "notauth") == 0) {
+                       return RDNS_RC_NOTAUTH;
+               }
+               else if (strcmp (str, "notzone") == 0) {
+                       return RDNS_RC_NOTZONE;
+               }
+               else if (strcmp (str, "timeout") == 0) {
+                       return RDNS_RC_TIMEOUT;
+               }
+               else if (strcmp (str, "neterr") == 0) {
+                       return RDNS_RC_NETERR;
+               }
+               else if (strcmp (str, "norec") == 0) {
+                       return RDNS_RC_NOREC;
+               }
+       }
+
+       return -1;
+}
+
 uint16_t
 rdns_permutor_generate_id (void)
 {