Changeset 862 for trunk/server/source3/utils/net_dns.c
- Timestamp:
- May 13, 2014, 11:39:04 AM (11 years ago)
- Location:
- trunk/server
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server
- Property svn:mergeinfo changed
/vendor/current merged: 860
- Property svn:mergeinfo changed
-
trunk/server/source3/utils/net_dns.c
r745 r862 23 23 #include "utils/net.h" 24 24 #include "../lib/addns/dns.h" 25 #include "utils/net_dns.h" 25 26 26 27 #if defined(WITH_DNS_UPDATES) 27 /* 28 * Silly prototype to get rid of a warning 29 28 29 /********************************************************************* 30 *********************************************************************/ 30 31 31 32 DNS_ERROR DoDNSUpdate(char *pszServerName, 32 33 const char *pszDomainName, const char *pszHostName, 33 const struct sockaddr_storage *sslist, 34 size_t num_addrs ); 35 36 /********************************************************************* 37 *********************************************************************/ 38 39 DNS_ERROR DoDNSUpdate(char *pszServerName, 40 const char *pszDomainName, const char *pszHostName, 41 const struct sockaddr_storage *sslist, size_t num_addrs ) 34 const struct sockaddr_storage *sslist, size_t num_addrs, 35 uint32_t flags) 42 36 { 43 37 DNS_ERROR err; … … 47 41 struct dns_update_request *req, *resp; 48 42 43 DEBUG(10,("DoDNSUpdate called with flags: 0x%08x\n", flags)); 44 45 if (!(flags & DNS_UPDATE_SIGNED) && 46 !(flags & DNS_UPDATE_UNSIGNED) && 47 !(flags & DNS_UPDATE_PROBE)) { 48 return ERROR_DNS_INVALID_PARAMETER; 49 } 50 49 51 if ( (num_addrs <= 0) || !sslist ) { 50 52 return ERROR_DNS_INVALID_PARAMETER; … … 60 62 } 61 63 62 /* 63 * Probe if everything's fine 64 */ 65 66 err = dns_create_probe(mem_ctx, pszDomainName, pszHostName, 67 num_addrs, sslist, &req); 68 if (!ERR_DNS_IS_OK(err)) goto error; 69 70 err = dns_update_transaction(mem_ctx, conn, req, &resp); 71 if (!ERR_DNS_IS_OK(err)) goto error; 72 73 if (dns_response_code(resp->flags) == DNS_NO_ERROR) { 74 TALLOC_FREE(mem_ctx); 75 return ERROR_DNS_SUCCESS; 76 } 77 78 /* 79 * First try without signing 80 */ 81 82 err = dns_create_update_request(mem_ctx, pszDomainName, pszHostName, 83 sslist, num_addrs, &req); 84 if (!ERR_DNS_IS_OK(err)) goto error; 85 86 err = dns_update_transaction(mem_ctx, conn, req, &resp); 87 if (!ERR_DNS_IS_OK(err)) goto error; 88 89 if (dns_response_code(resp->flags) == DNS_NO_ERROR) { 90 TALLOC_FREE(mem_ctx); 91 return ERROR_DNS_SUCCESS; 64 if (flags & DNS_UPDATE_PROBE) { 65 66 /* 67 * Probe if everything's fine 68 */ 69 70 err = dns_create_probe(mem_ctx, pszDomainName, pszHostName, 71 num_addrs, sslist, &req); 72 if (!ERR_DNS_IS_OK(err)) goto error; 73 74 err = dns_update_transaction(mem_ctx, conn, req, &resp); 75 if (!ERR_DNS_IS_OK(err)) goto error; 76 77 if (!ERR_DNS_IS_OK(err)) { 78 DEBUG(3,("DoDNSUpdate: failed to probe DNS\n")); 79 } 80 81 if ((dns_response_code(resp->flags) == DNS_NO_ERROR) && 82 (flags & DNS_UPDATE_PROBE_SUFFICIENT)) { 83 TALLOC_FREE(mem_ctx); 84 return ERROR_DNS_SUCCESS; 85 } 86 } 87 88 if (flags & DNS_UPDATE_UNSIGNED) { 89 90 /* 91 * First try without signing 92 */ 93 94 err = dns_create_update_request(mem_ctx, pszDomainName, pszHostName, 95 sslist, num_addrs, &req); 96 if (!ERR_DNS_IS_OK(err)) goto error; 97 98 err = dns_update_transaction(mem_ctx, conn, req, &resp); 99 if (!ERR_DNS_IS_OK(err)) goto error; 100 101 if (!ERR_DNS_IS_OK(err)) { 102 DEBUG(3,("DoDNSUpdate: unsigned update failed\n")); 103 } 104 105 if ((dns_response_code(resp->flags) == DNS_NO_ERROR) && 106 (flags & DNS_UPDATE_UNSIGNED_SUFFICIENT)) { 107 TALLOC_FREE(mem_ctx); 108 return ERROR_DNS_SUCCESS; 109 } 92 110 } 93 111 … … 95 113 * Okay, we have to try with signing 96 114 */ 97 {115 if (flags & DNS_UPDATE_SIGNED) { 98 116 gss_ctx_id_t gss_context; 99 117 char *keyname; 118 119 err = dns_create_update_request(mem_ctx, pszDomainName, pszHostName, 120 sslist, num_addrs, &req); 121 if (!ERR_DNS_IS_OK(err)) goto error; 100 122 101 123 if (!(keyname = dns_generate_keyname( mem_ctx ))) { … … 129 151 err = (dns_response_code(resp->flags) == DNS_NO_ERROR) ? 130 152 ERROR_DNS_SUCCESS : ERROR_DNS_UPDATE_FAILED; 153 154 if (!ERR_DNS_IS_OK(err)) { 155 DEBUG(3,("DoDNSUpdate: signed update failed\n")); 156 } 131 157 } 132 158 … … 177 203 return count; 178 204 } 179 180 /*181 * Silly prototype to get rid of a warning182 */183 184 DNS_ERROR do_gethostbyname(const char *server, const char *host);185 205 186 206 DNS_ERROR do_gethostbyname(const char *server, const char *host)
Note:
See TracChangeset
for help on using the changeset viewer.