diff options
Diffstat (limited to 'source3/libaddns/dnsutils.c')
-rw-r--r-- | source3/libaddns/dnsutils.c | 151 |
1 files changed, 0 insertions, 151 deletions
diff --git a/source3/libaddns/dnsutils.c b/source3/libaddns/dnsutils.c deleted file mode 100644 index 37b862c7f0..0000000000 --- a/source3/libaddns/dnsutils.c +++ /dev/null @@ -1,151 +0,0 @@ -/* - Linux DNS client library implementation - - Copyright (C) 2006 Krishna Ganugapati <krishnag@centeris.com> - Copyright (C) 2006 Gerald Carter <jerry@samba.org> - - ** NOTE! The following LGPL license applies to the libaddns - ** library. This does NOT imply that all of Samba is released - ** under the LGPL - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, see <http://www.gnu.org/licenses/>. -*/ - -#include "dns.h" -#include <ctype.h> - -static DNS_ERROR LabelList( TALLOC_CTX *mem_ctx, - const char *name, - struct dns_domain_label **presult ) -{ - struct dns_domain_label *result; - const char *dot; - - for (dot = name; *dot != '\0'; dot += 1) { - char c = *dot; - - if (c == '.') - break; - - if (c == '-') continue; - if ((c >= 'a') && (c <= 'z')) continue; - if ((c >= 'A') && (c <= 'Z')) continue; - if ((c >= '0') && (c <= '9')) continue; - - return ERROR_DNS_INVALID_NAME; - } - - if ((dot - name) > 63) { - /* - * DNS labels can only be 63 chars long - */ - return ERROR_DNS_INVALID_NAME; - } - - if (!(result = TALLOC_ZERO_P(mem_ctx, struct dns_domain_label))) { - return ERROR_DNS_NO_MEMORY; - } - - if (*dot == '\0') { - /* - * No dot around, so this is the last component - */ - - if (!(result->label = talloc_strdup(result, name))) { - TALLOC_FREE(result); - return ERROR_DNS_NO_MEMORY; - } - result->len = strlen(result->label); - *presult = result; - return ERROR_DNS_SUCCESS; - } - - if (dot[1] == '.') { - /* - * Two dots in a row, reject - */ - - TALLOC_FREE(result); - return ERROR_DNS_INVALID_NAME; - } - - if (dot[1] != '\0') { - /* - * Something follows, get the rest - */ - - DNS_ERROR err = LabelList(result, dot+1, &result->next); - - if (!ERR_DNS_IS_OK(err)) { - TALLOC_FREE(result); - return err; - } - } - - result->len = (dot - name); - - if (!(result->label = talloc_strndup(result, name, result->len))) { - TALLOC_FREE(result); - return ERROR_DNS_NO_MEMORY; - } - - *presult = result; - return ERROR_DNS_SUCCESS; -} - -DNS_ERROR dns_domain_name_from_string( TALLOC_CTX *mem_ctx, - const char *pszDomainName, - struct dns_domain_name **presult ) -{ - struct dns_domain_name *result; - DNS_ERROR err; - - if (!(result = talloc(mem_ctx, struct dns_domain_name))) { - return ERROR_DNS_NO_MEMORY; - } - - err = LabelList( result, pszDomainName, &result->pLabelList ); - if (!ERR_DNS_IS_OK(err)) { - TALLOC_FREE(result); - return err; - } - - *presult = result; - return ERROR_DNS_SUCCESS; -} - -/********************************************************************* -*********************************************************************/ - -char *dns_generate_keyname( TALLOC_CTX *mem_ctx ) -{ - char *result = NULL; -#if defined(WITH_DNS_UPDATES) - - uuid_t uuid; - - /* - * uuid_unparse gives 36 bytes plus '\0' - */ - if (!(result = TALLOC_ARRAY(mem_ctx, char, 37))) { - return NULL; - } - - uuid_generate( uuid ); - uuid_unparse( uuid, result ); - -#endif - - return result; -} |