| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- /*
- * FreeRTOS+TCP V2.3.2 LTS Patch 1
- * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of
- * this software and associated documentation files (the "Software"), to deal in
- * the Software without restriction, including without limitation the rights to
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
- * the Software, and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
- * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * http://aws.amazon.com/freertos
- * http://www.FreeRTOS.org
- */
- #ifndef FREERTOS_DNS_H
- #define FREERTOS_DNS_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* Application level configuration options. */
- #include "FreeRTOSIPConfig.h"
- #include "IPTraceMacroDefaults.h"
- /* The Link-local Multicast Name Resolution (LLMNR)
- * is included.
- * Note that a special MAC address is required in addition to the NIC's actual
- * MAC address: 01:00:5E:00:00:FC
- *
- * The target IP address will be 224.0.0.252
- */
- #if ( ipconfigBYTE_ORDER == pdFREERTOS_BIG_ENDIAN )
- #define ipLLMNR_IP_ADDR 0xE00000FCUL
- #else
- #define ipLLMNR_IP_ADDR 0xFC0000E0UL
- #endif /* ipconfigBYTE_ORDER == pdFREERTOS_BIG_ENDIAN */
- #define ipLLMNR_PORT 5355 /* Standard LLMNR port. */
- #define ipDNS_PORT 53 /* Standard DNS port. */
- #define ipDHCP_CLIENT 67
- #define ipDHCP_SERVER 68
- #define ipNBNS_PORT 137 /* NetBIOS Name Service. */
- #define ipNBDGM_PORT 138 /* Datagram Service, not included. */
- #if ( ipconfigUSE_LLMNR == 1 ) || ( ipconfigUSE_NBNS == 1 )
- /*
- * The following function should be provided by the user and return true if it
- * matches the domain name.
- */
- extern BaseType_t xApplicationDNSQueryHook( const char * pcName );
- #endif /* ( ipconfigUSE_LLMNR == 1 ) || ( ipconfigUSE_NBNS == 1 ) */
- /*
- * LLMNR is very similar to DNS, so is handled by the DNS routines.
- */
- uint32_t ulDNSHandlePacket( const NetworkBufferDescriptor_t * pxNetworkBuffer );
- #if ( ipconfigUSE_LLMNR == 1 )
- /* The LLMNR MAC address is 01:00:5e:00:00:fc */
- extern const MACAddress_t xLLMNR_MacAdress;
- #endif /* ipconfigUSE_LLMNR */
- #if ( ipconfigUSE_NBNS != 0 )
- /*
- * Inspect a NetBIOS Names-Service message. If the name matches with ours
- * (xApplicationDNSQueryHook returns true) an answer will be sent back.
- * Note that LLMNR is a better protocol for name services on a LAN as it is
- * less polluted
- */
- uint32_t ulNBNSHandlePacket( NetworkBufferDescriptor_t * pxNetworkBuffer );
- #endif /* ipconfigUSE_NBNS */
- #if ( ipconfigUSE_DNS_CACHE != 0 )
- /* Look for the indicated host name in the DNS cache. Returns the IPv4
- * address if present, or 0x0 otherwise. */
- uint32_t FreeRTOS_dnslookup( const char * pcHostName );
- /* Remove all entries from the DNS cache. */
- void FreeRTOS_dnsclear( void );
- #endif /* ipconfigUSE_DNS_CACHE != 0 */
- #if ( ipconfigDNS_USE_CALLBACKS != 0 )
- /*
- * Users may define this type of function as a callback.
- * It will be called when a DNS reply is received or when a timeout has been reached.
- */
- typedef void (* FOnDNSEvent ) ( const char * /* pcName */,
- void * /* pvSearchID */,
- uint32_t /* ulIPAddress */ );
- /*
- * Asynchronous version of gethostbyname()
- * xTimeout is in units of ms.
- */
- uint32_t FreeRTOS_gethostbyname_a( const char * pcHostName,
- FOnDNSEvent pCallback,
- void * pvSearchID,
- TickType_t uxTimeout );
- void FreeRTOS_gethostbyname_cancel( void * pvSearchID );
- #endif /* if ( ipconfigDNS_USE_CALLBACKS != 0 ) */
- /*
- * Lookup a IPv4 node in a blocking-way.
- * It returns a 32-bit IP-address, 0 when not found.
- * gethostbyname() is already deprecated.
- */
- uint32_t FreeRTOS_gethostbyname( const char * pcHostName );
- #if ( ipconfigDNS_USE_CALLBACKS == 1 )
- /*
- * The function vDNSInitialise() initialises the DNS module.
- * It will be called "internally", by the IP-task.
- */
- void vDNSInitialise( void );
- #endif /* ( ipconfigDNS_USE_CALLBACKS == 1 ) */
- #if ( ipconfigDNS_USE_CALLBACKS == 1 )
- /*
- * A function local to the library.
- */
- extern void vDNSCheckCallBack( void * pvSearchID );
- #endif
- #ifdef __cplusplus
- } /* extern "C" */
- #endif
- #endif /* FREERTOS_DNS_H */
|