mbed-os5 only for TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Committer:
kenjiArai
Date:
Tue Dec 31 06:02:27 2019 +0000
Revision:
1:9db0e321a9f4
Parent:
0:5b88d5760320
updated based on mbed-os5.15.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:5b88d5760320 1 /*
kenjiArai 0:5b88d5760320 2 * Original work Copyright (c) 2013 Henry Leinen (henry[dot]leinen [at] online [dot] de)
kenjiArai 0:5b88d5760320 3 * Modified work Copyright (c) 2015 ARM Limited
kenjiArai 0:5b88d5760320 4 *
kenjiArai 0:5b88d5760320 5 * Licensed under the Apache License, Version 2.0 (the "License");
kenjiArai 0:5b88d5760320 6 * you may not use this file except in compliance with the License.
kenjiArai 0:5b88d5760320 7 * You may obtain a copy of the License at
kenjiArai 0:5b88d5760320 8 *
kenjiArai 0:5b88d5760320 9 * http://www.apache.org/licenses/LICENSE-2.0
kenjiArai 0:5b88d5760320 10 *
kenjiArai 0:5b88d5760320 11 * Unless required by applicable law or agreed to in writing, software
kenjiArai 0:5b88d5760320 12 * distributed under the License is distributed on an "AS IS" BASIS,
kenjiArai 0:5b88d5760320 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kenjiArai 0:5b88d5760320 14 * See the License for the specific language governing permissions and
kenjiArai 0:5b88d5760320 15 * limitations under the License.
kenjiArai 0:5b88d5760320 16 */
kenjiArai 0:5b88d5760320 17
kenjiArai 0:5b88d5760320 18 /** \addtogroup netsocket */
kenjiArai 0:5b88d5760320 19 /** @{*/
kenjiArai 0:5b88d5760320 20
kenjiArai 0:5b88d5760320 21 #ifndef NSAPI_DNS_H
kenjiArai 0:5b88d5760320 22 #define NSAPI_DNS_H
kenjiArai 0:5b88d5760320 23
kenjiArai 0:5b88d5760320 24 #include "nsapi_types.h"
kenjiArai 0:5b88d5760320 25 #ifdef __cplusplus
kenjiArai 0:5b88d5760320 26 #include "netsocket/NetworkStack.h"
kenjiArai 0:5b88d5760320 27 #endif
kenjiArai 0:5b88d5760320 28
kenjiArai 0:5b88d5760320 29 #ifndef __cplusplus
kenjiArai 0:5b88d5760320 30
kenjiArai 0:5b88d5760320 31
kenjiArai 0:5b88d5760320 32 /** Query a domain name server for an IP address of a given hostname
kenjiArai 0:5b88d5760320 33 *
kenjiArai 0:5b88d5760320 34 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 35 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 36 * @param addr Destination for the host address
kenjiArai 0:5b88d5760320 37 * @param version IP version to resolve
kenjiArai 0:5b88d5760320 38 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 39 * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 40 */
kenjiArai 0:5b88d5760320 41 nsapi_error_t nsapi_dns_query(nsapi_stack_t *stack, const char *host,
kenjiArai 0:5b88d5760320 42 nsapi_addr_t *addr, nsapi_version_t version);
kenjiArai 0:5b88d5760320 43
kenjiArai 0:5b88d5760320 44 /** Query a domain name server for multiple IP address of a given hostname
kenjiArai 0:5b88d5760320 45 *
kenjiArai 0:5b88d5760320 46 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 47 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 48 * @param addr Array for the host addresses
kenjiArai 0:5b88d5760320 49 * @param addr_count Number of addresses allocated in the array
kenjiArai 0:5b88d5760320 50 * @param version IP version to resolve
kenjiArai 0:5b88d5760320 51 * @return Number of addresses found on success, negative error code on failure
kenjiArai 0:5b88d5760320 52 * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 53 */
kenjiArai 0:5b88d5760320 54 nsapi_size_or_error_t nsapi_dns_query_multiple(nsapi_stack_t *stack, const char *host,
kenjiArai 0:5b88d5760320 55 nsapi_addr_t *addr, nsapi_size_t addr_count, nsapi_version_t version);
kenjiArai 0:5b88d5760320 56
kenjiArai 0:5b88d5760320 57 /** Add a domain name server to list of servers to query
kenjiArai 0:5b88d5760320 58 *
kenjiArai 0:5b88d5760320 59 * @param addr Destination for the host address
kenjiArai 0:5b88d5760320 60 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 61 */
kenjiArai 0:5b88d5760320 62 nsapi_error_t nsapi_dns_add_server(nsapi_addr_t addr, const char *interface_name);
kenjiArai 0:5b88d5760320 63
kenjiArai 0:5b88d5760320 64
kenjiArai 0:5b88d5760320 65 #else
kenjiArai 0:5b88d5760320 66
kenjiArai 0:5b88d5760320 67 typedef mbed::Callback<nsapi_error_t (int delay_ms, mbed::Callback<void()> user_cb)> call_in_callback_cb_t;
kenjiArai 0:5b88d5760320 68
kenjiArai 0:5b88d5760320 69 /** Query a domain name server for an IP address of a given hostname
kenjiArai 0:5b88d5760320 70 *
kenjiArai 0:5b88d5760320 71 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 72 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 73 * @param addr Destination for the host address
kenjiArai 0:5b88d5760320 74 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 75 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 76 * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 77 */
kenjiArai 0:5b88d5760320 78 nsapi_error_t nsapi_dns_query(NetworkStack *stack, const char *host,
kenjiArai 0:5b88d5760320 79 SocketAddress *addr, nsapi_version_t version = NSAPI_IPv4);
kenjiArai 0:5b88d5760320 80
kenjiArai 0:5b88d5760320 81 /** Query a domain name server for an IP address of a given hostname using Network interface name
kenjiArai 0:5b88d5760320 82 *
kenjiArai 0:5b88d5760320 83 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 84 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 85 * @param addr Destination for the host address
kenjiArai 0:5b88d5760320 86 * @param interface_name Network interface name
kenjiArai 0:5b88d5760320 87 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 1:9db0e321a9f4 88 * @return See @ref nsapi_dns_query_multiple
kenjiArai 0:5b88d5760320 89 */
kenjiArai 0:5b88d5760320 90 nsapi_error_t nsapi_dns_query(NetworkStack *stack, const char *host,
kenjiArai 0:5b88d5760320 91 SocketAddress *addr, const char *interface_name, nsapi_version_t version = NSAPI_IPv4);
kenjiArai 0:5b88d5760320 92
kenjiArai 0:5b88d5760320 93
kenjiArai 0:5b88d5760320 94 /** Query a domain name server for an IP address of a given hostname
kenjiArai 0:5b88d5760320 95 *
kenjiArai 0:5b88d5760320 96 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 97 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 98 * @param callback Callback that is called for result
kenjiArai 0:5b88d5760320 99 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 100 * @return 0 on success, negative error code on failure or an unique id that
kenjiArai 0:5b88d5760320 101 * represents the hostname translation operation and can be passed to
kenjiArai 0:5b88d5760320 102 * cancel, NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 103 */
kenjiArai 0:5b88d5760320 104 nsapi_error_t nsapi_dns_query_async(NetworkStack *stack, const char *host,
kenjiArai 0:5b88d5760320 105 NetworkStack::hostbyname_cb_t callback, call_in_callback_cb_t call_in_cb,
kenjiArai 0:5b88d5760320 106 nsapi_version_t version = NSAPI_IPv4);
kenjiArai 0:5b88d5760320 107
kenjiArai 0:5b88d5760320 108 /** Query a domain name server for an IP address of a given hostname using Network interface name
kenjiArai 0:5b88d5760320 109 *
kenjiArai 0:5b88d5760320 110 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 111 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 112 * @param callback Callback that is called for result
kenjiArai 0:5b88d5760320 113 * @param interface_name Network interface name
kenjiArai 0:5b88d5760320 114 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 115 * @return 0 on success, negative error code on failure or an unique id that
kenjiArai 0:5b88d5760320 116 * represents the hostname translation operation and can be passed to
kenjiArai 0:5b88d5760320 117 * cancel, NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 118 */
kenjiArai 0:5b88d5760320 119 nsapi_error_t nsapi_dns_query_async(NetworkStack *stack, const char *host,
kenjiArai 0:5b88d5760320 120 NetworkStack::hostbyname_cb_t callback, call_in_callback_cb_t call_in_cb,
kenjiArai 0:5b88d5760320 121 const char *interface_name, nsapi_version_t version = NSAPI_IPv4);
kenjiArai 0:5b88d5760320 122
kenjiArai 0:5b88d5760320 123 /** Query a domain name server for an IP address of a given hostname (asynchronous)
kenjiArai 0:5b88d5760320 124 *
kenjiArai 0:5b88d5760320 125 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 126 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 127 * @param addr Destination for the host address
kenjiArai 0:5b88d5760320 128 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 129 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 130 * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 131 */
kenjiArai 0:5b88d5760320 132 extern "C" nsapi_error_t nsapi_dns_query(nsapi_stack_t *stack, const char *host,
kenjiArai 0:5b88d5760320 133 nsapi_addr_t *addr, nsapi_version_t version = NSAPI_IPv4);
kenjiArai 0:5b88d5760320 134
kenjiArai 0:5b88d5760320 135 /** Query a domain name server for an IP address of a given hostname
kenjiArai 0:5b88d5760320 136 *
kenjiArai 0:5b88d5760320 137 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 138 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 139 * @param addr Destination for the host address
kenjiArai 0:5b88d5760320 140 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 141 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 142 * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 143 */
kenjiArai 0:5b88d5760320 144 template <typename S>
kenjiArai 0:5b88d5760320 145 nsapi_error_t nsapi_dns_query(S *stack, const char *host,
kenjiArai 0:5b88d5760320 146 SocketAddress *addr, nsapi_version_t version = NSAPI_IPv4)
kenjiArai 0:5b88d5760320 147 {
kenjiArai 0:5b88d5760320 148 return nsapi_dns_query(nsapi_create_stack(stack), host, addr, version);
kenjiArai 0:5b88d5760320 149 }
kenjiArai 0:5b88d5760320 150
kenjiArai 0:5b88d5760320 151 /** Query a domain name server for multiple IP address of a given hostname
kenjiArai 0:5b88d5760320 152 *
kenjiArai 0:5b88d5760320 153 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 154 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 155 * @param addr Array for the host addresses
kenjiArai 0:5b88d5760320 156 * @param addr_count Number of addresses allocated in the array
kenjiArai 0:5b88d5760320 157 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 1:9db0e321a9f4 158 * @return Positive number of addresses found on success
kenjiArai 1:9db0e321a9f4 159 * @retval NSAPI_ERROR_PARAMETER if provided parameters are invalid
kenjiArai 1:9db0e321a9f4 160 * @retval NSAPI_ERROR_NO_MEMORY if allocation fails due to lack of memory
kenjiArai 1:9db0e321a9f4 161 * @retval NSAPI_ERROR_DNS_FAILURE if DNS resolution fails
kenjiArai 1:9db0e321a9f4 162 * @retval NSAPI_ERROR_WOULD_BLOCK in case non-blocking mode is enabled and
kenjiArai 1:9db0e321a9f4 163 * DNS cannot be resolved immediately.
kenjiArai 0:5b88d5760320 164 */
kenjiArai 0:5b88d5760320 165 nsapi_size_or_error_t nsapi_dns_query_multiple(NetworkStack *stack, const char *host,
kenjiArai 0:5b88d5760320 166 SocketAddress *addr, nsapi_size_t addr_count, const char *interface_name, nsapi_version_t version = NSAPI_IPv4);
kenjiArai 0:5b88d5760320 167
kenjiArai 0:5b88d5760320 168 /** Query a domain name server for an IP address of a given hostname (asynchronous)
kenjiArai 0:5b88d5760320 169 *
kenjiArai 0:5b88d5760320 170 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 171 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 172 * @param callback Callback that is called for result
kenjiArai 0:5b88d5760320 173 * @param addr_count Number of addresses allocated in the array
kenjiArai 0:5b88d5760320 174 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 175 * @return 0 on success, negative error code on failure or an unique id that
kenjiArai 0:5b88d5760320 176 represents the hostname translation operation and can be passed to
kenjiArai 0:5b88d5760320 177 * cancel, NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 178 */
kenjiArai 0:5b88d5760320 179 nsapi_size_or_error_t nsapi_dns_query_multiple_async(NetworkStack *stack, const char *host,
kenjiArai 0:5b88d5760320 180 NetworkStack::hostbyname_cb_t callback, nsapi_size_t addr_count,
kenjiArai 0:5b88d5760320 181 call_in_callback_cb_t call_in_cb, const char *interface_name, nsapi_version_t version = NSAPI_IPv4);
kenjiArai 0:5b88d5760320 182
kenjiArai 0:5b88d5760320 183 /** Query a domain name server for multiple IP address of a given hostname
kenjiArai 0:5b88d5760320 184 *
kenjiArai 0:5b88d5760320 185 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 186 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 187 * @param addr Array for the host addresses
kenjiArai 0:5b88d5760320 188 * @param addr_count Number of addresses allocated in the array
kenjiArai 0:5b88d5760320 189 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 190 * @return Number of addresses found on success, negative error code on failure
kenjiArai 0:5b88d5760320 191 * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 192 */
kenjiArai 0:5b88d5760320 193 extern "C" nsapi_size_or_error_t nsapi_dns_query_multiple(nsapi_stack_t *stack, const char *host,
kenjiArai 0:5b88d5760320 194 nsapi_addr_t *addr, nsapi_size_t addr_count, const char *interface_name, nsapi_version_t version = NSAPI_IPv4);
kenjiArai 0:5b88d5760320 195
kenjiArai 0:5b88d5760320 196
kenjiArai 0:5b88d5760320 197 /** Query a domain name server for multiple IP address of a given hostname
kenjiArai 0:5b88d5760320 198 *
kenjiArai 0:5b88d5760320 199 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 200 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 201 * @param addr Array for the host addresses
kenjiArai 0:5b88d5760320 202 * @param addr_count Number of addresses allocated in the array
kenjiArai 0:5b88d5760320 203 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 204 * @return Number of addresses found on success, negative error code on failure
kenjiArai 0:5b88d5760320 205 * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 206 */
kenjiArai 0:5b88d5760320 207 template <typename S>
kenjiArai 0:5b88d5760320 208 nsapi_size_or_error_t nsapi_dns_query_multiple(S *stack, const char *host,
kenjiArai 0:5b88d5760320 209 SocketAddress *addr, nsapi_size_t addr_count, nsapi_version_t version = NSAPI_IPv4)
kenjiArai 0:5b88d5760320 210 {
kenjiArai 0:5b88d5760320 211 return nsapi_dns_query_multiple(nsapi_create_stack(stack),
kenjiArai 0:5b88d5760320 212 host, addr, addr_count, version);
kenjiArai 0:5b88d5760320 213 }
kenjiArai 0:5b88d5760320 214
kenjiArai 0:5b88d5760320 215 /** Cancels asynchronous hostname translation
kenjiArai 0:5b88d5760320 216 *
kenjiArai 0:5b88d5760320 217 * When translation is cancelled, callback will not be called.
kenjiArai 0:5b88d5760320 218 *
kenjiArai 0:5b88d5760320 219 * @param id Unique id of the hostname translation operation
kenjiArai 0:5b88d5760320 220 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 221 */
kenjiArai 1:9db0e321a9f4 222 nsapi_error_t nsapi_dns_query_async_cancel(nsapi_size_or_error_t id);
kenjiArai 0:5b88d5760320 223
kenjiArai 0:5b88d5760320 224 /** Set a call in callback
kenjiArai 0:5b88d5760320 225 *
kenjiArai 0:5b88d5760320 226 * Can be used to provide an application specific call in callback to
kenjiArai 0:5b88d5760320 227 * DNS resolver. When callback is set it is used instead of stack
kenjiArai 0:5b88d5760320 228 * specific call in callbacks.
kenjiArai 0:5b88d5760320 229 *
kenjiArai 0:5b88d5760320 230 * @param callback Callback
kenjiArai 0:5b88d5760320 231 */
kenjiArai 0:5b88d5760320 232 void nsapi_dns_call_in_set(call_in_callback_cb_t callback);
kenjiArai 0:5b88d5760320 233
kenjiArai 1:9db0e321a9f4 234 /**
kenjiArai 1:9db0e321a9f4 235 * @brief nsapi_dns_reset Resets all internal states and frees reserved memory, see NOTE!
kenjiArai 1:9db0e321a9f4 236 * Can be used to clean up system resources when there is no need for network connections.
kenjiArai 1:9db0e321a9f4 237 * NOTE: Does NOT clear asynchronous ongoing operations!
kenjiArai 1:9db0e321a9f4 238 * Currently only cleans up DNS cache (if used)
kenjiArai 1:9db0e321a9f4 239 */
kenjiArai 1:9db0e321a9f4 240 void nsapi_dns_reset();
kenjiArai 1:9db0e321a9f4 241
kenjiArai 0:5b88d5760320 242 /** Add a domain name server to list of servers to query
kenjiArai 0:5b88d5760320 243 *
kenjiArai 0:5b88d5760320 244 * @param addr Destination for the host address
kenjiArai 0:5b88d5760320 245 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 246 */
kenjiArai 0:5b88d5760320 247 extern "C" nsapi_error_t nsapi_dns_add_server(nsapi_addr_t addr, const char *interface_name);
kenjiArai 0:5b88d5760320 248
kenjiArai 0:5b88d5760320 249 /** Add a domain name server to list of servers to query
kenjiArai 0:5b88d5760320 250 *
kenjiArai 0:5b88d5760320 251 * @param addr Destination for the host address
kenjiArai 0:5b88d5760320 252 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 253 */
kenjiArai 0:5b88d5760320 254 static inline nsapi_error_t nsapi_dns_add_server(const SocketAddress &address, const char *interface_name)
kenjiArai 0:5b88d5760320 255 {
kenjiArai 0:5b88d5760320 256 return nsapi_dns_add_server(address.get_addr(), interface_name);
kenjiArai 0:5b88d5760320 257 }
kenjiArai 0:5b88d5760320 258
kenjiArai 0:5b88d5760320 259 /** Add a domain name server to list of servers to query
kenjiArai 0:5b88d5760320 260 *
kenjiArai 0:5b88d5760320 261 * @param addr Destination for the host address
kenjiArai 0:5b88d5760320 262 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 263 */
kenjiArai 0:5b88d5760320 264 static inline nsapi_error_t nsapi_dns_add_server(const char *address, const char *interface_name)
kenjiArai 0:5b88d5760320 265 {
kenjiArai 0:5b88d5760320 266 return nsapi_dns_add_server(SocketAddress(address), interface_name);
kenjiArai 0:5b88d5760320 267 }
kenjiArai 0:5b88d5760320 268
kenjiArai 0:5b88d5760320 269
kenjiArai 0:5b88d5760320 270 #endif
kenjiArai 0:5b88d5760320 271
kenjiArai 0:5b88d5760320 272 #endif
kenjiArai 0:5b88d5760320 273
kenjiArai 0:5b88d5760320 274 /** @}*/