1 /**
2  * @file
3  * MDNS responder
4  */
5 
6  /*
7  * Copyright (c) 2015 Verisure Innovation AB
8  * All rights reserved.
9  *
10  * Redistribution and use in source and binary forms, with or without modification,
11  * are permitted provided that the following conditions are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright notice,
14  *    this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright notice,
16  *    this list of conditions and the following disclaimer in the documentation
17  *    and/or other materials provided with the distribution.
18  * 3. The name of the author may not be used to endorse or promote products
19  *    derived from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
22  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
23  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
24  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
26  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
29  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
30  * OF SUCH DAMAGE.
31  *
32  * This file is part of the lwIP TCP/IP stack.
33  *
34  * Author: Erik Ekman <erik@kryo.se>
35  * Author: Jasper Verschueren <jasper.verschueren@apart-audio.com>
36  *
37  */
38 
39 #ifndef LWIP_HDR_APPS_MDNS_OPTS_H
40 #define LWIP_HDR_APPS_MDNS_OPTS_H
41 
42 #include "lwip/opt.h"
43 
44 /**
45  * @defgroup mdns_opts Options
46  * @ingroup mdns
47  * @{
48  */
49 
50 /**
51  * LWIP_MDNS_RESPONDER==1: Turn on multicast DNS module. UDP must be available for MDNS
52  * transport. IGMP is needed for IPv4 multicast.
53  */
54 #ifndef LWIP_MDNS_RESPONDER
55 #define LWIP_MDNS_RESPONDER             0
56 #endif /* LWIP_MDNS_RESPONDER */
57 
58 /** The maximum number of services per netif */
59 #ifndef MDNS_MAX_SERVICES
60 #define MDNS_MAX_SERVICES               1
61 #endif
62 
63 /** The minimum delay between probes in ms. RFC 6762 require 250ms.
64  * In noisy WiFi environment, adding 30-50ms to this value help a lot for
65  * a successful Apple BCT tests.
66  */
67 #ifndef MDNS_PROBE_DELAY_MS
68 #define MDNS_PROBE_DELAY_MS           250
69 #endif
70 
71 /** The maximum number of received packets stored in chained list of known
72  * answers for pending truncated questions. This value define the size of
73  * the MDNS_PKTS mempool.
74  * Up to MDNS_MAX_STORED_PKTS pbuf can be stored in addition to TC questions
75  * that are pending.
76  */
77 #ifndef MDNS_MAX_STORED_PKTS
78 #define MDNS_MAX_STORED_PKTS            4
79 #endif
80 
81 /** Payload size allocated for each outgoing UDP packet. Will be allocated with
82  * PBUF_RAM and freed after packet was sent.
83  * According to RFC 6762, there is no reason to retain the 512 bytes restriction
84  * for link-local multicast packet.
85  * 512 bytes isn't enough when 2 services need to be probed.
86  */
87 #ifndef MDNS_OUTPUT_PACKET_SIZE
88 #define MDNS_OUTPUT_PACKET_SIZE      ((MDNS_MAX_SERVICES == 1) ? 512 : 1450)
89 #endif
90 
91 /** MDNS_RESP_USENETIF_EXTCALLBACK==1: register an ext_callback on the netif
92  * to automatically restart probing/announcing on status or address change.
93  */
94 #ifndef MDNS_RESP_USENETIF_EXTCALLBACK
95 #define MDNS_RESP_USENETIF_EXTCALLBACK  LWIP_NETIF_EXT_STATUS_CALLBACK
96 #endif
97 
98 /**
99  * LWIP_MDNS_SEARCH==1: Turn on search over multicast DNS module.
100  */
101 #ifndef LWIP_MDNS_SEARCH
102 #define LWIP_MDNS_SEARCH                1
103 #endif
104 
105 /** The maximum number of running requests */
106 #ifndef MDNS_MAX_REQUESTS
107 #define MDNS_MAX_REQUESTS               2
108 #endif
109 
110 /**
111  * MDNS_DEBUG: Enable debugging for multicast DNS.
112  */
113 #ifndef MDNS_DEBUG
114 #define MDNS_DEBUG                       LWIP_DBG_OFF
115 #endif
116 
117 /**
118  * @}
119  */
120 
121 #endif /* LWIP_HDR_APPS_MDNS_OPTS_H */
122