mbed-os5 only for TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Committer:
kenjiArai
Date:
Tue Dec 17 23:23:45 2019 +0000
Revision:
0:5b88d5760320
Child:
1:9db0e321a9f4
mbed-os5 only for TYBLE16

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 0:5b88d5760320 88 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 89 * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 90 */
kenjiArai 0:5b88d5760320 91 nsapi_error_t nsapi_dns_query(NetworkStack *stack, const char *host,
kenjiArai 0:5b88d5760320 92 SocketAddress *addr, const char *interface_name, nsapi_version_t version = NSAPI_IPv4);
kenjiArai 0:5b88d5760320 93
kenjiArai 0:5b88d5760320 94
kenjiArai 0:5b88d5760320 95 /** Query a domain name server for an IP address of a given hostname
kenjiArai 0:5b88d5760320 96 *
kenjiArai 0:5b88d5760320 97 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 98 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 99 * @param callback Callback that is called for result
kenjiArai 0:5b88d5760320 100 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 101 * @return 0 on success, negative error code on failure or an unique id that
kenjiArai 0:5b88d5760320 102 * represents the hostname translation operation and can be passed to
kenjiArai 0:5b88d5760320 103 * cancel, NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 104 */
kenjiArai 0:5b88d5760320 105 nsapi_error_t nsapi_dns_query_async(NetworkStack *stack, const char *host,
kenjiArai 0:5b88d5760320 106 NetworkStack::hostbyname_cb_t callback, call_in_callback_cb_t call_in_cb,
kenjiArai 0:5b88d5760320 107 nsapi_version_t version = NSAPI_IPv4);
kenjiArai 0:5b88d5760320 108
kenjiArai 0:5b88d5760320 109 /** Query a domain name server for an IP address of a given hostname using Network interface name
kenjiArai 0:5b88d5760320 110 *
kenjiArai 0:5b88d5760320 111 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 112 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 113 * @param callback Callback that is called for result
kenjiArai 0:5b88d5760320 114 * @param interface_name Network interface name
kenjiArai 0:5b88d5760320 115 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 116 * @return 0 on success, negative error code on failure or an unique id that
kenjiArai 0:5b88d5760320 117 * represents the hostname translation operation and can be passed to
kenjiArai 0:5b88d5760320 118 * cancel, NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 119 */
kenjiArai 0:5b88d5760320 120 nsapi_error_t nsapi_dns_query_async(NetworkStack *stack, const char *host,
kenjiArai 0:5b88d5760320 121 NetworkStack::hostbyname_cb_t callback, call_in_callback_cb_t call_in_cb,
kenjiArai 0:5b88d5760320 122 const char *interface_name, nsapi_version_t version = NSAPI_IPv4);
kenjiArai 0:5b88d5760320 123
kenjiArai 0:5b88d5760320 124 /** Query a domain name server for an IP address of a given hostname (asynchronous)
kenjiArai 0:5b88d5760320 125 *
kenjiArai 0:5b88d5760320 126 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 127 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 128 * @param addr Destination for the host address
kenjiArai 0:5b88d5760320 129 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 130 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 131 * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 132 */
kenjiArai 0:5b88d5760320 133 extern "C" nsapi_error_t nsapi_dns_query(nsapi_stack_t *stack, const char *host,
kenjiArai 0:5b88d5760320 134 nsapi_addr_t *addr, nsapi_version_t version = NSAPI_IPv4);
kenjiArai 0:5b88d5760320 135
kenjiArai 0:5b88d5760320 136 /** Query a domain name server for an IP address of a given hostname
kenjiArai 0:5b88d5760320 137 *
kenjiArai 0:5b88d5760320 138 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 139 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 140 * @param addr Destination for the host address
kenjiArai 0:5b88d5760320 141 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 142 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 143 * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 144 */
kenjiArai 0:5b88d5760320 145 template <typename S>
kenjiArai 0:5b88d5760320 146 nsapi_error_t nsapi_dns_query(S *stack, const char *host,
kenjiArai 0:5b88d5760320 147 SocketAddress *addr, nsapi_version_t version = NSAPI_IPv4)
kenjiArai 0:5b88d5760320 148 {
kenjiArai 0:5b88d5760320 149 return nsapi_dns_query(nsapi_create_stack(stack), host, addr, version);
kenjiArai 0:5b88d5760320 150 }
kenjiArai 0:5b88d5760320 151
kenjiArai 0:5b88d5760320 152 /** Query a domain name server for multiple IP address of a given hostname
kenjiArai 0:5b88d5760320 153 *
kenjiArai 0:5b88d5760320 154 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 155 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 156 * @param addr Array for the host addresses
kenjiArai 0:5b88d5760320 157 * @param addr_count Number of addresses allocated in the array
kenjiArai 0:5b88d5760320 158 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 159 * @return Number of addresses found on success, negative error code on failure
kenjiArai 0:5b88d5760320 160 * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 161 */
kenjiArai 0:5b88d5760320 162 nsapi_size_or_error_t nsapi_dns_query_multiple(NetworkStack *stack, const char *host,
kenjiArai 0:5b88d5760320 163 SocketAddress *addr, nsapi_size_t addr_count, const char *interface_name, nsapi_version_t version = NSAPI_IPv4);
kenjiArai 0:5b88d5760320 164
kenjiArai 0:5b88d5760320 165 /** Query a domain name server for an IP address of a given hostname (asynchronous)
kenjiArai 0:5b88d5760320 166 *
kenjiArai 0:5b88d5760320 167 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 168 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 169 * @param callback Callback that is called for result
kenjiArai 0:5b88d5760320 170 * @param addr_count Number of addresses allocated in the array
kenjiArai 0:5b88d5760320 171 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 172 * @return 0 on success, negative error code on failure or an unique id that
kenjiArai 0:5b88d5760320 173 represents the hostname translation operation and can be passed to
kenjiArai 0:5b88d5760320 174 * cancel, NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 175 */
kenjiArai 0:5b88d5760320 176 nsapi_size_or_error_t nsapi_dns_query_multiple_async(NetworkStack *stack, const char *host,
kenjiArai 0:5b88d5760320 177 NetworkStack::hostbyname_cb_t callback, nsapi_size_t addr_count,
kenjiArai 0:5b88d5760320 178 call_in_callback_cb_t call_in_cb, const char *interface_name, nsapi_version_t version = NSAPI_IPv4);
kenjiArai 0:5b88d5760320 179
kenjiArai 0:5b88d5760320 180 /** Query a domain name server for multiple IP address of a given hostname
kenjiArai 0:5b88d5760320 181 *
kenjiArai 0:5b88d5760320 182 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 183 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 184 * @param addr Array for the host addresses
kenjiArai 0:5b88d5760320 185 * @param addr_count Number of addresses allocated in the array
kenjiArai 0:5b88d5760320 186 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 187 * @return Number of addresses found on success, negative error code on failure
kenjiArai 0:5b88d5760320 188 * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 189 */
kenjiArai 0:5b88d5760320 190 extern "C" nsapi_size_or_error_t nsapi_dns_query_multiple(nsapi_stack_t *stack, const char *host,
kenjiArai 0:5b88d5760320 191 nsapi_addr_t *addr, nsapi_size_t addr_count, const char *interface_name, nsapi_version_t version = NSAPI_IPv4);
kenjiArai 0:5b88d5760320 192
kenjiArai 0:5b88d5760320 193
kenjiArai 0:5b88d5760320 194 /** Query a domain name server for multiple IP address of a given hostname
kenjiArai 0:5b88d5760320 195 *
kenjiArai 0:5b88d5760320 196 * @param stack Network stack as target for DNS query
kenjiArai 0:5b88d5760320 197 * @param host Hostname to resolve
kenjiArai 0:5b88d5760320 198 * @param addr Array for the host addresses
kenjiArai 0:5b88d5760320 199 * @param addr_count Number of addresses allocated in the array
kenjiArai 0:5b88d5760320 200 * @param version IP version to resolve (defaults to NSAPI_IPv4)
kenjiArai 0:5b88d5760320 201 * @return Number of addresses found on success, negative error code on failure
kenjiArai 0:5b88d5760320 202 * NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
kenjiArai 0:5b88d5760320 203 */
kenjiArai 0:5b88d5760320 204 template <typename S>
kenjiArai 0:5b88d5760320 205 nsapi_size_or_error_t nsapi_dns_query_multiple(S *stack, const char *host,
kenjiArai 0:5b88d5760320 206 SocketAddress *addr, nsapi_size_t addr_count, nsapi_version_t version = NSAPI_IPv4)
kenjiArai 0:5b88d5760320 207 {
kenjiArai 0:5b88d5760320 208 return nsapi_dns_query_multiple(nsapi_create_stack(stack),
kenjiArai 0:5b88d5760320 209 host, addr, addr_count, version);
kenjiArai 0:5b88d5760320 210 }
kenjiArai 0:5b88d5760320 211
kenjiArai 0:5b88d5760320 212 /** Cancels asynchronous hostname translation
kenjiArai 0:5b88d5760320 213 *
kenjiArai 0:5b88d5760320 214 * When translation is cancelled, callback will not be called.
kenjiArai 0:5b88d5760320 215 *
kenjiArai 0:5b88d5760320 216 * @param id Unique id of the hostname translation operation
kenjiArai 0:5b88d5760320 217 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 218 */
kenjiArai 0:5b88d5760320 219 nsapi_error_t nsapi_dns_query_async_cancel(nsapi_error_t id);
kenjiArai 0:5b88d5760320 220
kenjiArai 0:5b88d5760320 221 /** Set a call in callback
kenjiArai 0:5b88d5760320 222 *
kenjiArai 0:5b88d5760320 223 * Can be used to provide an application specific call in callback to
kenjiArai 0:5b88d5760320 224 * DNS resolver. When callback is set it is used instead of stack
kenjiArai 0:5b88d5760320 225 * specific call in callbacks.
kenjiArai 0:5b88d5760320 226 *
kenjiArai 0:5b88d5760320 227 * @param callback Callback
kenjiArai 0:5b88d5760320 228 */
kenjiArai 0:5b88d5760320 229 void nsapi_dns_call_in_set(call_in_callback_cb_t callback);
kenjiArai 0:5b88d5760320 230
kenjiArai 0:5b88d5760320 231 /** Add a domain name server to list of servers to query
kenjiArai 0:5b88d5760320 232 *
kenjiArai 0:5b88d5760320 233 * @param addr Destination for the host address
kenjiArai 0:5b88d5760320 234 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 235 */
kenjiArai 0:5b88d5760320 236 extern "C" nsapi_error_t nsapi_dns_add_server(nsapi_addr_t addr, const char *interface_name);
kenjiArai 0:5b88d5760320 237
kenjiArai 0:5b88d5760320 238 /** Add a domain name server to list of servers to query
kenjiArai 0:5b88d5760320 239 *
kenjiArai 0:5b88d5760320 240 * @param addr Destination for the host address
kenjiArai 0:5b88d5760320 241 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 242 */
kenjiArai 0:5b88d5760320 243 static inline nsapi_error_t nsapi_dns_add_server(const SocketAddress &address, const char *interface_name)
kenjiArai 0:5b88d5760320 244 {
kenjiArai 0:5b88d5760320 245 return nsapi_dns_add_server(address.get_addr(), interface_name);
kenjiArai 0:5b88d5760320 246 }
kenjiArai 0:5b88d5760320 247
kenjiArai 0:5b88d5760320 248 /** Add a domain name server to list of servers to query
kenjiArai 0:5b88d5760320 249 *
kenjiArai 0:5b88d5760320 250 * @param addr Destination for the host address
kenjiArai 0:5b88d5760320 251 * @return 0 on success, negative error code on failure
kenjiArai 0:5b88d5760320 252 */
kenjiArai 0:5b88d5760320 253 static inline nsapi_error_t nsapi_dns_add_server(const char *address, const char *interface_name)
kenjiArai 0:5b88d5760320 254 {
kenjiArai 0:5b88d5760320 255 return nsapi_dns_add_server(SocketAddress(address), interface_name);
kenjiArai 0:5b88d5760320 256 }
kenjiArai 0:5b88d5760320 257
kenjiArai 0:5b88d5760320 258
kenjiArai 0:5b88d5760320 259 #endif
kenjiArai 0:5b88d5760320 260
kenjiArai 0:5b88d5760320 261 #endif
kenjiArai 0:5b88d5760320 262
kenjiArai 0:5b88d5760320 263 /** @}*/