Merge a8c7794f76
into 503e66a500
This commit is contained in:
commit
7ed2103bb8
13 changed files with 386 additions and 34 deletions
|
@ -78,7 +78,7 @@ Current status is alpha quality, actively developed. AP STATION mode (ie wifi cl
|
|||
## Open Source Components
|
||||
|
||||
* [FreeRTOS](http://www.freertos.org/) V10.2.0
|
||||
* [lwIP](http://lwip.wikia.com/wiki/LwIP_Wiki) v2.0.3, with [some modifications](https://github.com/ourairquality/lwip/).
|
||||
* [lwIP](http://lwip.wikia.com/wiki/LwIP_Wiki) v2.2.0, with [some modifications](https://github.com/ourairquality/lwip/).
|
||||
* [newlib](https://github.com/ourairquality/newlib) v3.0.0, with patches for xtensa support and locking stubs for thread-safe operation on FreeRTOS.
|
||||
|
||||
For details of how third party libraries are integrated, [see the wiki page](https://github.com/SuperHouse/esp-open-rtos/wiki/Third-Party-Libraries).
|
||||
|
|
|
@ -48,7 +48,7 @@ void user_init(void)
|
|||
*/
|
||||
static void telnetTask(void *pvParameters)
|
||||
{
|
||||
ip_addr_t first_client_ip;
|
||||
ip4_addr_t first_client_ip;
|
||||
IP4_ADDR(&first_client_ip, 172, 16, 0, 2);
|
||||
dhcpserver_start(&first_client_ip, 4);
|
||||
|
||||
|
|
|
@ -180,7 +180,7 @@ void wifiInit() {
|
|||
};
|
||||
sdk_wifi_softap_set_config(&ap_config);
|
||||
|
||||
ip_addr_t first_client_ip;
|
||||
ip4_addr_t first_client_ip;
|
||||
IP4_ADDR(&first_client_ip, 172, 16, 0, 2);
|
||||
dhcpserver_start(&first_client_ip, 4);
|
||||
dhcpserver_set_dns(&ap_ip.ip);
|
||||
|
|
1
examples/mdns-search/.gitignore
vendored
Normal file
1
examples/mdns-search/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
!local.mk
|
7
examples/mdns-search/FreeRTOSConfig.h
Normal file
7
examples/mdns-search/FreeRTOSConfig.h
Normal file
|
@ -0,0 +1,7 @@
|
|||
#define configUSE_TRACE_FACILITY 1
|
||||
#define configGENERATE_RUN_TIME_STATS 1
|
||||
#define portGET_RUN_TIME_COUNTER_VALUE() (RTC.COUNTER)
|
||||
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() {}
|
||||
|
||||
/* Use the defaults for everything else */
|
||||
#include_next<FreeRTOSConfig.h>
|
11
examples/mdns-search/Makefile
Normal file
11
examples/mdns-search/Makefile
Normal file
|
@ -0,0 +1,11 @@
|
|||
# Makefile for mDNS search example
|
||||
PROGRAM=mdns-search
|
||||
EXTRA_COMPONENTS=extras/dhcpserver extras/wificfg
|
||||
|
||||
# For the mDNS responder included with lwip:
|
||||
EXTRA_CFLAGS += -DLWIP_MDNS_RESPONDER=1 -DLWIP_NUM_NETIF_CLIENT_DATA=1 -DLWIP_NETIF_EXT_STATUS_CALLBACK=1 -DLWIP_MDNS_SEARCH=1
|
||||
|
||||
# Avoid writing the wifi state to flash when using wificfg.
|
||||
EXTRA_CFLAGS += -DWIFI_PARAM_SAVE=0
|
||||
|
||||
include ../../common.mk
|
1
examples/mdns-search/local.mk
Normal file
1
examples/mdns-search/local.mk
Normal file
|
@ -0,0 +1 @@
|
|||
FLASH_SIZE ?= 32
|
160
examples/mdns-search/mdsn-search.c
Normal file
160
examples/mdns-search/mdsn-search.c
Normal file
|
@ -0,0 +1,160 @@
|
|||
/*
|
||||
* Example mDNS service search.
|
||||
*
|
||||
* Copyright (C) 2019 OurAirQuality.org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0, January 2004 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/
|
||||
*
|
||||
* 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 CONTRIBUTORS 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 WITH THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <espressif/esp_common.h>
|
||||
#include <espressif/user_interface.h>
|
||||
#include <esp/uart.h>
|
||||
#include <FreeRTOS.h>
|
||||
#include <task.h>
|
||||
|
||||
#include "lwip/sockets.h"
|
||||
#include "lwip/apps/mdns.h"
|
||||
#include "lwip/prot/dns.h"
|
||||
#include "lwip/ip6.h"
|
||||
#include "lwip/ip6_addr.h"
|
||||
|
||||
#include "wificfg/wificfg.h"
|
||||
|
||||
#if !LWIP_MDNS_SEARCH
|
||||
#error "The LWIP_MDNS_SEARCH feature must be set."
|
||||
#endif
|
||||
|
||||
#define SEARCH_SERVICE "_http"
|
||||
#define SEARCH_PROTO DNSSD_PROTO_TCP
|
||||
|
||||
static void print_domain(const u8_t *src)
|
||||
{
|
||||
u8_t i;
|
||||
|
||||
while (*src) {
|
||||
u8_t label_len = *src;
|
||||
src++;
|
||||
for (i = 0; i < label_len; i++) {
|
||||
putchar(src[i]);
|
||||
}
|
||||
src += label_len;
|
||||
printf(".");
|
||||
}
|
||||
}
|
||||
|
||||
void result_fn(struct mdns_answer *answer, const char *varpart,
|
||||
int varlen, int flags, void *arg)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
printf("Domain ");
|
||||
print_domain(answer->info.domain->name);
|
||||
printf(" ");
|
||||
|
||||
switch (answer->info.type) {
|
||||
case DNS_RRTYPE_PTR:
|
||||
printf("PTR ");
|
||||
print_domain((u8_t *)varpart);
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case DNS_RRTYPE_SRV:
|
||||
/* Priority, weight, port fields. */
|
||||
printf("SRV ");
|
||||
print_domain((u8_t *)varpart + 6);
|
||||
printf(" port %u\n", ((u16_t)varpart[4] << 8) | varpart[5]);
|
||||
break;
|
||||
|
||||
case DNS_RRTYPE_TXT:
|
||||
printf("TXT \"%s\"\n", varpart);
|
||||
break;
|
||||
|
||||
case DNS_RRTYPE_A:
|
||||
if (varlen == sizeof(ip4_addr_t)) {
|
||||
ip4_addr_t addr;
|
||||
char buf[16];
|
||||
char *p;
|
||||
SMEMCPY(&addr, varpart, sizeof(ip4_addr_t));
|
||||
p = ip4addr_ntoa_r(&addr, buf, sizeof(buf));
|
||||
if (p) printf("A %s\n", p);
|
||||
}
|
||||
break;
|
||||
|
||||
#if LWIP_IPV6
|
||||
case DNS_RRTYPE_AAAA:
|
||||
if (varlen == sizeof(ip6_addr_p_t)) {
|
||||
ip6_addr_p_t addrp;
|
||||
ip6_addr_t addr;
|
||||
char buf[64];
|
||||
char *p;
|
||||
SMEMCPY(addrp.addr, varpart, sizeof(ip6_addr_p_t));
|
||||
ip6_addr_copy_from_packed(addr, addrp);
|
||||
p = ip6addr_ntoa_r(&addr, buf, sizeof(buf));
|
||||
if (p) printf("AAAA %s\n", p);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
printf("Unexpected type %u class %u, ans %p, part %p, len %d, flags %x, arg %p\n", answer->info.type, answer->info.klass, answer, varpart, varlen, flags, arg);
|
||||
for (i = 0; i < varlen; i++)
|
||||
printf(" %02x", varpart[i]);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
static void mdns_search_task(void *pvParameters)
|
||||
{
|
||||
err_t err;
|
||||
u8_t request_id;
|
||||
struct netif *station_netif = sdk_system_get_netif(STATION_IF);
|
||||
|
||||
if (station_netif == NULL) {
|
||||
vTaskDelete(NULL);
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
printf("Starting mDNS search for %s : ", SEARCH_SERVICE);
|
||||
LOCK_TCPIP_CORE();
|
||||
err = mdns_search_service(NULL, SEARCH_SERVICE,
|
||||
SEARCH_PROTO,
|
||||
station_netif,
|
||||
result_fn, NULL,
|
||||
&request_id);
|
||||
UNLOCK_TCPIP_CORE();
|
||||
printf("request_id %d, error %d\n", request_id, err);
|
||||
|
||||
vTaskDelay(10000 / portTICK_PERIOD_MS);
|
||||
printf("Stopping mDNS search\n");
|
||||
|
||||
LOCK_TCPIP_CORE();
|
||||
mdns_search_stop(request_id);
|
||||
UNLOCK_TCPIP_CORE();
|
||||
}
|
||||
}
|
||||
|
||||
void user_init(void)
|
||||
{
|
||||
uart_set_baud(0, 115200);
|
||||
printf("SDK version:%s\n", sdk_system_get_sdk_version());
|
||||
|
||||
wificfg_init(80, NULL);
|
||||
|
||||
xTaskCreate(&mdns_search_task, "mDNS search", 384, NULL, 1, NULL);
|
||||
}
|
|
@ -116,7 +116,7 @@ static void nonBlockingTCP(void *pvParameters)
|
|||
struct netbuf *netbuf = NULL; // To store incoming Data
|
||||
struct netconn *nc_in = NULL; // To accept incoming netconn
|
||||
//
|
||||
char buf[50];
|
||||
char buf[64];
|
||||
char* buffer;
|
||||
uint16_t len_buf;
|
||||
|
||||
|
@ -138,10 +138,9 @@ static void nonBlockingTCP(void *pvParameters)
|
|||
ip_addr_t client_addr; //Address port
|
||||
uint16_t client_port; //Client port
|
||||
netconn_peer(nc_in, &client_addr, &client_port);
|
||||
snprintf(buf, sizeof(buf), "Your address is %d.%d.%d.%d:%u.\r\n",
|
||||
ip4_addr1(&client_addr), ip4_addr2(&client_addr),
|
||||
ip4_addr3(&client_addr), ip4_addr4(&client_addr),
|
||||
client_port);
|
||||
char ip_addr_buf[48];
|
||||
ipaddr_ntoa_r(&client_addr, ip_addr_buf, sizeof(ip_addr_buf));
|
||||
snprintf(buf, sizeof(buf), "Your address is %s:%u.\r\n", ip_addr_buf, client_port);
|
||||
netconn_write(nc_in, buf, strlen(buf), NETCONN_COPY);
|
||||
}
|
||||
else if(events.nc->state != NETCONN_LISTEN) // If netconn is the client and receive data
|
||||
|
@ -191,7 +190,7 @@ void user_init(void)
|
|||
};
|
||||
sdk_wifi_softap_set_config(&ap_config);
|
||||
|
||||
ip_addr_t first_client_ip;
|
||||
ip4_addr_t first_client_ip;
|
||||
IP4_ADDR(&first_client_ip, 172, 16, 0, 2);
|
||||
dhcpserver_start(&first_client_ip, 4);
|
||||
printf("DHCP started\n");
|
||||
|
|
|
@ -1692,6 +1692,14 @@ static bool host_is_name(const char *host)
|
|||
}
|
||||
|
||||
|
||||
#if LWIP_MDNS_RESPONDER
|
||||
static void mdns_srv_txt(struct mdns_service *service, void *txt_userdata)
|
||||
{
|
||||
err_t res = mdns_resp_add_service_txtitem(service, "path=/", 6);
|
||||
LWIP_ERROR("mdns add service txt failed\n", (res == ERR_OK), return);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The http server uses a single thread to service all requests, one request at
|
||||
* a time, to keep peak resource usage to a minimum. Keeping connections open
|
||||
|
@ -1745,16 +1753,16 @@ static void server_task(void *pvParameters)
|
|||
LOCK_TCPIP_CORE();
|
||||
if (wifi_sta_mdns && station_netif) {
|
||||
LOCK_TCPIP_CORE();
|
||||
mdns_resp_add_netif(station_netif, hostname, 120);
|
||||
mdns_resp_add_netif(station_netif, hostname);
|
||||
mdns_resp_add_service(station_netif, hostname, "_http",
|
||||
DNSSD_PROTO_TCP, 80, 3600, NULL, NULL);
|
||||
DNSSD_PROTO_TCP, 80, mdns_srv_txt, NULL);
|
||||
UNLOCK_TCPIP_CORE();
|
||||
}
|
||||
if (wifi_ap_mdns && softap_netif) {
|
||||
LOCK_TCPIP_CORE();
|
||||
mdns_resp_add_netif(softap_netif, hostname, 120);
|
||||
mdns_resp_add_netif(softap_netif, hostname);
|
||||
mdns_resp_add_service(softap_netif, hostname, "_http",
|
||||
DNSSD_PROTO_TCP, 80, 3600, NULL, NULL);
|
||||
DNSSD_PROTO_TCP, 80, mdns_srv_txt, NULL);
|
||||
UNLOCK_TCPIP_CORE();
|
||||
}
|
||||
UNLOCK_TCPIP_CORE();
|
||||
|
|
|
@ -81,6 +81,10 @@ low_level_init(struct netif *netif)
|
|||
/* don't set NETIF_FLAG_ETHARP if this device is not an ethernet one */
|
||||
netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP | NETIF_FLAG_IGMP | NETIF_FLAG_MLD6;
|
||||
|
||||
#if LWIP_ACD
|
||||
netif->acd_list = NULL;
|
||||
#endif /* LWIP_ACD */
|
||||
|
||||
/* Do whatever else is needed to initialize interface. */
|
||||
}
|
||||
|
||||
|
@ -384,7 +388,7 @@ ethernetif_init(struct netif *netif)
|
|||
netif->name[0] = IFNAME0;
|
||||
netif->name[1] = IFNAME1;
|
||||
/* We directly use etharp_output() here to save a function call.
|
||||
* You can instead declare your own function an call etharp_output()
|
||||
* You can instead declare your own function and call etharp_output()
|
||||
* from it if you have to do some checks before sending (e.g. if link
|
||||
* is available...) */
|
||||
#if LWIP_IPV4
|
||||
|
|
|
@ -258,6 +258,8 @@ void sys_unlock_tcpip_core(void);
|
|||
* Since the received pbufs are enqueued, be sure to configure
|
||||
* PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive
|
||||
* packets even if the maximum amount of fragments is enqueued for reassembly!
|
||||
* When IPv4 *and* IPv6 are enabled, this even changes to
|
||||
* (PBUF_POOL_SIZE > 2 * IP_REASS_MAX_PBUFS)!
|
||||
*/
|
||||
#ifndef IP_REASS_MAX_PBUFS
|
||||
#define IP_REASS_MAX_PBUFS 2
|
||||
|
@ -290,17 +292,82 @@ void sys_unlock_tcpip_core(void);
|
|||
/**
|
||||
* DHCP_DOES_ARP_CHECK==1: Do an ARP check on the offered address.
|
||||
*/
|
||||
#ifndef DHCP_DOES_ARP_CHECK
|
||||
#define DHCP_DOES_ARP_CHECK ((LWIP_DHCP) && (LWIP_ARP))
|
||||
#ifndef LWIP_DHCP_DOES_ACD_CHECK
|
||||
#define LWIP_DHCP_DOES_ACD_CHECK LWIP_DHCP
|
||||
#endif
|
||||
|
||||
#define LWIP_DHCP_BOOTP_FILE 0
|
||||
|
||||
/**
|
||||
* LWIP_DHCP_GETS_NTP==1: Request NTP servers with discover/select. For each
|
||||
* response packet, an callback is called, which has to be provided by the port:
|
||||
* void dhcp_set_ntp_servers(u8_t num_ntp_servers, ip_addr_t* ntp_server_addrs);
|
||||
*/
|
||||
#ifndef LWIP_DHCP_GET_NTP_SRV
|
||||
#define LWIP_DHCP_GET_NTP_SRV 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* The maximum of NTP servers requested
|
||||
*/
|
||||
#ifndef LWIP_DHCP_MAX_NTP_SERVERS
|
||||
#define LWIP_DHCP_MAX_NTP_SERVERS 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LWIP_DHCP_MAX_DNS_SERVERS > 0: Request DNS servers with discover/select.
|
||||
* DNS servers received in the response are passed to DNS via @ref dns_setserver()
|
||||
* (up to the maximum limit defined here).
|
||||
*/
|
||||
#ifndef LWIP_DHCP_MAX_DNS_SERVERS
|
||||
#define LWIP_DHCP_MAX_DNS_SERVERS DNS_MAX_SERVERS
|
||||
#endif
|
||||
|
||||
/*
|
||||
------------------------------------
|
||||
---------- AUTOIP options ----------
|
||||
------------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
* LWIP_AUTOIP==1: Enable AUTOIP module.
|
||||
*/
|
||||
#ifndef LWIP_AUTOIP
|
||||
#define LWIP_AUTOIP 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LWIP_DHCP_AUTOIP_COOP==1: Allow DHCP and AUTOIP to be both enabled on
|
||||
* the same interface at the same time.
|
||||
*/
|
||||
#ifndef LWIP_DHCP_AUTOIP_COOP
|
||||
#define LWIP_DHCP_AUTOIP_COOP 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LWIP_DHCP_AUTOIP_COOP_TRIES: Set to the number of DHCP DISCOVER probes
|
||||
* that should be sent before falling back on AUTOIP (the DHCP client keeps
|
||||
* running in this case). This can be set as low as 1 to get an AutoIP address
|
||||
* very quickly, but you should be prepared to handle a changing IP address
|
||||
* when DHCP overrides AutoIP.
|
||||
*/
|
||||
#ifndef LWIP_DHCP_AUTOIP_COOP_TRIES
|
||||
#define LWIP_DHCP_AUTOIP_COOP_TRIES 9
|
||||
#endif
|
||||
|
||||
/*
|
||||
------------------------------------
|
||||
----------- ACD options ------------
|
||||
------------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
* LWIP_ACD==1: Enable ACD module. ACD module is needed when using AUTOIP.
|
||||
*/
|
||||
#ifndef LWIP_ACD
|
||||
#define LWIP_ACD (LWIP_AUTOIP || LWIP_DHCP_DOES_ACD_CHECK)
|
||||
#endif
|
||||
|
||||
/*
|
||||
----------------------------------
|
||||
----- SNMP MIB2 support -----
|
||||
|
@ -514,6 +581,12 @@ void sys_unlock_tcpip_core(void);
|
|||
*/
|
||||
#define PBUF_LINK_ENCAPSULATION_HLEN 36
|
||||
|
||||
/**
|
||||
* LWIP_PBUF_CUSTOM_DATA: Store private data on pbufs (e.g. timestamps)
|
||||
* This extends struct pbuf so user can store custom data on every pbuf.
|
||||
*/
|
||||
#define LWIP_PBUF_CUSTOM_DATA void *esf_buf;
|
||||
|
||||
/*
|
||||
------------------------------------------------
|
||||
---------- Network Interfaces options ----------
|
||||
|
@ -642,6 +715,26 @@ void sys_unlock_tcpip_core(void);
|
|||
#define LWIP_SOCKET_OFFSET 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LWIP_SOCKET_EXTERNAL_HEADERS==1: Use external headers instead of sockets.h
|
||||
* and inet.h. In this case, user must provide its own headers by setting the
|
||||
* values for LWIP_SOCKET_EXTERNAL_HEADER_SOCKETS_H and
|
||||
* LWIP_SOCKET_EXTERNAL_HEADER_INET_H to appropriate include file names and the
|
||||
* whole content of the default sockets.h and inet.h is skipped.
|
||||
*/
|
||||
#ifndef LWIP_SOCKET_EXTERNAL_HEADERS
|
||||
#define LWIP_SOCKET_EXTERNAL_HEADERS 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LWIP_TCP_KEEPALIVE==1: Enable TCP_KEEPIDLE, TCP_KEEPINTVL and TCP_KEEPCNT
|
||||
* options processing. Note that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set
|
||||
* in seconds. (does not require sockets.c, and will affect tcp.c)
|
||||
*/
|
||||
#ifndef LWIP_TCP_KEEPALIVE
|
||||
#define LWIP_TCP_KEEPALIVE 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LWIP_SO_SNDTIMEO==1: Enable send timeout for sockets/netconns and
|
||||
* SO_SNDTIMEO processing.
|
||||
|
@ -658,15 +751,6 @@ void sys_unlock_tcpip_core(void);
|
|||
#define LWIP_SO_RCVTIMEO 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LWIP_TCP_KEEPALIVE==1: Enable TCP_KEEPIDLE, TCP_KEEPINTVL and TCP_KEEPCNT
|
||||
* options processing. Note that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set
|
||||
* in seconds. (does not require sockets.c, and will affect tcp.c)
|
||||
*/
|
||||
#ifndef LWIP_TCP_KEEPALIVE
|
||||
#define LWIP_TCP_KEEPALIVE 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LWIP_SO_RCVBUF==1: Enable SO_RCVBUF processing.
|
||||
*/
|
||||
|
@ -674,6 +758,27 @@ void sys_unlock_tcpip_core(void);
|
|||
#define LWIP_SO_RCVBUF 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LWIP_SO_LINGER==1: Enable SO_LINGER processing.
|
||||
*/
|
||||
#ifndef LWIP_SO_LINGER
|
||||
#define LWIP_SO_LINGER 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* If LWIP_SO_RCVBUF is used, this is the default value for recv_bufsize.
|
||||
*/
|
||||
#ifndef RECV_BUFSIZE_DEFAULT
|
||||
#define RECV_BUFSIZE_DEFAULT INT_MAX
|
||||
#endif
|
||||
|
||||
/**
|
||||
* By default, TCP socket/netconn close waits 20 seconds max to send the FIN
|
||||
*/
|
||||
#ifndef LWIP_TCP_CLOSE_TIMEOUT_MS_DEFAULT
|
||||
#define LWIP_TCP_CLOSE_TIMEOUT_MS_DEFAULT 20000
|
||||
#endif
|
||||
|
||||
/**
|
||||
* SO_REUSE==1: Enable SO_REUSEADDR option.
|
||||
*/
|
||||
|
@ -681,6 +786,45 @@ void sys_unlock_tcpip_core(void);
|
|||
#define SO_REUSE 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* SO_REUSE_RXTOALL==1: Pass a copy of incoming broadcast/multicast packets
|
||||
* to all local matches if SO_REUSEADDR is turned on.
|
||||
* WARNING: Adds a memcpy for every packet if passing to more than one pcb!
|
||||
*/
|
||||
#ifndef SO_REUSE_RXTOALL
|
||||
#define SO_REUSE_RXTOALL 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LWIP_FIONREAD_LINUXMODE==0 (default): ioctl/FIONREAD returns the amount of
|
||||
* pending data in the network buffer. This is the way windows does it. It's
|
||||
* the default for lwIP since it is smaller.
|
||||
* LWIP_FIONREAD_LINUXMODE==1: ioctl/FIONREAD returns the size of the next
|
||||
* pending datagram in bytes. This is the way linux does it. This code is only
|
||||
* here for compatibility.
|
||||
*/
|
||||
#ifndef LWIP_FIONREAD_LINUXMODE
|
||||
#define LWIP_FIONREAD_LINUXMODE 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LWIP_SOCKET_SELECT==1 (default): enable select() for sockets (uses a netconn
|
||||
* callback to keep track of events).
|
||||
* This saves RAM (counters per socket) and code (netconn event callback), which
|
||||
* should improve performance a bit).
|
||||
*/
|
||||
#ifndef LWIP_SOCKET_SELECT
|
||||
#define LWIP_SOCKET_SELECT 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LWIP_SOCKET_POLL==1 (default): enable poll() for sockets (including
|
||||
* struct pollfd, nfds_t, and constants)
|
||||
*/
|
||||
#ifndef LWIP_SOCKET_POLL
|
||||
#define LWIP_SOCKET_POLL 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
----------------------------------------
|
||||
---------- Statistics options ----------
|
||||
|
@ -725,6 +869,21 @@ void sys_unlock_tcpip_core(void);
|
|||
#define LWIP_IPV6 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LWIP_ND6_QUEUEING==1: queue outgoing IPv6 packets while MAC address
|
||||
* is being resolved.
|
||||
*/
|
||||
#ifndef LWIP_ND6_QUEUEING
|
||||
#define LWIP_ND6_QUEUEING LWIP_IPV6
|
||||
#endif
|
||||
|
||||
/**
|
||||
* MEMP_NUM_ND6_QUEUE: Max number of IPv6 packets to queue during MAC resolution.
|
||||
*/
|
||||
#ifndef MEMP_NUM_ND6_QUEUE
|
||||
#define MEMP_NUM_ND6_QUEUE 5
|
||||
#endif
|
||||
|
||||
/*
|
||||
---------------------------------------
|
||||
---------- Hook options ---------------
|
||||
|
@ -737,14 +896,6 @@ void sys_unlock_tcpip_core(void);
|
|||
---------------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
* LWIP_MDNS_RESPONDER_QUEUE_ANNOUNCEMENTS==1: Unsolicited announcements are
|
||||
* queued and run from a timer callback.
|
||||
*/
|
||||
#ifndef LWIP_MDNS_RESPONDER_QUEUE_ANNOUNCEMENTS
|
||||
#define LWIP_MDNS_RESPONDER_QUEUE_ANNOUNCEMENTS 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
---------------------------------------
|
||||
---------- Debugging options ----------
|
||||
|
@ -918,6 +1069,11 @@ void sys_unlock_tcpip_core(void);
|
|||
*/
|
||||
#define AUTOIP_DEBUG LWIP_DBG_OFF
|
||||
|
||||
/**
|
||||
* ACD_DEBUG: Enable debugging in acd.c.
|
||||
*/
|
||||
#define ACD_DEBUG LWIP_DBG_OFF
|
||||
|
||||
/**
|
||||
* DNS_DEBUG: Enable debugging for DNS.
|
||||
*/
|
||||
|
@ -928,6 +1084,11 @@ void sys_unlock_tcpip_core(void);
|
|||
*/
|
||||
#define IP6_DEBUG LWIP_DBG_OFF
|
||||
|
||||
/**
|
||||
* DHCP6_DEBUG: Enable debugging in dhcp6.c.
|
||||
*/
|
||||
#define DHCP6_DEBUG LWIP_DBG_OFF
|
||||
|
||||
/**
|
||||
* MDNS_DEBUG: Enable debugging for multicast DNS.
|
||||
*/
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit d74e9ad2f7c9db996fb398cd41bf59ef463ae6fe
|
||||
Subproject commit 666a818a5d595db0d2bf42fb6e2992a2c80ef544
|
Loading…
Add table
Add a link
Reference in a new issue