mdns: fix compiler errors and coding style

This commit is contained in:
Simon Goldschmidt 2019-01-30 20:15:26 +01:00
parent b4be0d8808
commit 8e86555f93
4 changed files with 38 additions and 31 deletions

View File

@ -36,6 +36,15 @@
#include "lwipopts_test.h" #include "lwipopts_test.h"
#else /* LWIP_OPTTEST_FILE */ #else /* LWIP_OPTTEST_FILE */
//#define LWIP_HAVE_MBEDTLS
#define ALTCP_MBEDTLS_USE_SESSION_TICKETS 1
#define ALTCP_MBEDTLS_USE_SESSION_CACHE 1
/*
* struct lwip_sock *tryget_socket_unconn_nouse(int fd);
*/
#define LWIP_SOCKET_EXTERNAL_ALLOC 0//1
#define LWIP_IPV4 1 #define LWIP_IPV4 1
#define LWIP_IPV6 1 #define LWIP_IPV6 1
@ -47,7 +56,7 @@
#define LWIP_IGMP LWIP_IPV4 #define LWIP_IGMP LWIP_IPV4
#define LWIP_ICMP LWIP_IPV4 #define LWIP_ICMP LWIP_IPV4
#define LWIP_SNMP LWIP_UDP #define LWIP_SNMP 0//LWIP_UDP
#define MIB2_STATS LWIP_SNMP #define MIB2_STATS LWIP_SNMP
#ifdef LWIP_HAVE_MBEDTLS #ifdef LWIP_HAVE_MBEDTLS
#define LWIP_SNMP_V3 (LWIP_SNMP) #define LWIP_SNMP_V3 (LWIP_SNMP)

View File

@ -1800,6 +1800,8 @@ mdns_handle_response(struct mdns_packet *pkt, struct netif *netif)
req = mdns_lookup_request(&ans.info); req = mdns_lookup_request(&ans.info);
} }
if (req && req->result_fn) { if (req && req->result_fn) {
u16_t offset;
struct pbuf *p;
int flags = (first ? MDNS_SEARCH_RESULT_FIRST : 0) | int flags = (first ? MDNS_SEARCH_RESULT_FIRST : 0) |
(!total_answers_left ? MDNS_SEARCH_RESULT_LAST : 0); (!total_answers_left ? MDNS_SEARCH_RESULT_LAST : 0);
if (req->only_ptr) { if (req->only_ptr) {
@ -1807,10 +1809,8 @@ mdns_handle_response(struct mdns_packet *pkt, struct netif *netif)
continue; /* Ignore non matching answer type */ continue; /* Ignore non matching answer type */
flags = MDNS_SEARCH_RESULT_FIRST | MDNS_SEARCH_RESULT_LAST; flags = MDNS_SEARCH_RESULT_FIRST | MDNS_SEARCH_RESULT_LAST;
} }
u16_t offset; p = pbuf_skip(pkt->pbuf, ans.rd_offset, &offset);
struct pbuf *p = pbuf_skip(pkt->pbuf, ans.rd_offset, &offset); if (ans.info.type == DNS_RRTYPE_PTR || ans.info.type == DNS_RRTYPE_SRV) {
if (ans.info.type == DNS_RRTYPE_PTR || ans.info.type == DNS_RRTYPE_SRV)
{
/* Those RR types have compressed domain name. Must uncompress here, /* Those RR types have compressed domain name. Must uncompress here,
since cannot be done without pbuf. */ since cannot be done without pbuf. */
struct { struct {
@ -1825,21 +1825,16 @@ mdns_handle_response(struct mdns_packet *pkt, struct netif *netif)
memcpy(&data.dom, (const char *)p->payload + offset + off, data.dom.length); memcpy(&data.dom, (const char *)p->payload + offset + off, data.dom.length);
} }
/* Adjust len/off according RR type */ /* Adjust len/off according RR type */
if (ans.info.type == DNS_RRTYPE_SRV) if (ans.info.type == DNS_RRTYPE_SRV) {
{
memcpy(&data, (const char *)p->payload + offset, 6); memcpy(&data, (const char *)p->payload + offset, 6);
len = data.dom.length + 6; len = data.dom.length + 6;
off = 0; off = 0;
} } else {
else
{
len = data.dom.length; len = data.dom.length;
off = 6; off = 6;
} }
req->result_fn(&ans, (const char *)&data + off, len, flags, req->arg); req->result_fn(&ans, (const char *)&data + off, len, flags, req->arg);
} } else {
else
{
/* Direct call result_fn with varpart pointing in pbuf payload */ /* Direct call result_fn with varpart pointing in pbuf payload */
req->result_fn(&ans, (const char *)p->payload + offset, ans.rd_length, flags, req->arg); req->result_fn(&ans, (const char *)p->payload + offset, ans.rd_length, flags, req->arg);
} }
@ -2513,10 +2508,12 @@ mdns_resp_add_service_txtitem(struct mdns_service *service, const char *txt, u8_
void void
mdns_search_stop(s8_t request_id) mdns_search_stop(s8_t request_id)
{ {
struct mdns_request *req;
LWIP_ASSERT("mdns_search_stop: bad request_id", (request_id >= 0) && (request_id < MDNS_MAX_REQUESTS)); LWIP_ASSERT("mdns_search_stop: bad request_id", (request_id >= 0) && (request_id < MDNS_MAX_REQUESTS));
struct mdns_request *req = &mdns_requests[request_id]; req = &mdns_requests[request_id];
if (req && req->result_fn) if (req && req->result_fn) {
req->result_fn = NULL; req->result_fn = NULL;
}
} }
/** /**
@ -2538,11 +2535,11 @@ mdns_search_service(const char *name, const char *service, enum mdns_sd_proto pr
struct netif *netif, search_result_fn_t result_fn, void *arg, struct netif *netif, search_result_fn_t result_fn, void *arg,
s8_t *request_id) s8_t *request_id)
{ {
int i; s8_t i, slot = -1;
s8_t slot = -1;
struct mdns_request *req; struct mdns_request *req;
if (name) if (name) {
LWIP_ERROR("mdns_search_service: Name too long", (strlen(name) <= MDNS_LABEL_MAXLEN), return ERR_VAL); LWIP_ERROR("mdns_search_service: Name too long", (strlen(name) <= MDNS_LABEL_MAXLEN), return ERR_VAL);
}
LWIP_ERROR("mdns_search_service: Service too long", (strlen(service) < MDNS_DOMAIN_MAXLEN), return ERR_VAL); LWIP_ERROR("mdns_search_service: Service too long", (strlen(service) < MDNS_DOMAIN_MAXLEN), return ERR_VAL);
LWIP_ERROR("mdns_search_service: Bad reqid pointer", request_id, return ERR_VAL); LWIP_ERROR("mdns_search_service: Bad reqid pointer", request_id, return ERR_VAL);
LWIP_ERROR("mdns_search_service: Bad proto (need TCP or UDP)", (proto == DNSSD_PROTO_TCP || proto == DNSSD_PROTO_UDP), return ERR_VAL); LWIP_ERROR("mdns_search_service: Bad proto (need TCP or UDP)", (proto == DNSSD_PROTO_TCP || proto == DNSSD_PROTO_UDP), return ERR_VAL);
@ -2552,9 +2549,10 @@ mdns_search_service(const char *name, const char *service, enum mdns_sd_proto pr
break; break;
} }
} }
if (slot < 0) if (slot < 0) {
/* Don't assert if no more space in mdns_request table. Just return an error. */ /* Don't assert if no more space in mdns_request table. Just return an error. */
return ERR_MEM; return ERR_MEM;
}
req = &mdns_requests[slot]; req = &mdns_requests[slot];
memset(req, 0, sizeof(struct mdns_request)); memset(req, 0, sizeof(struct mdns_request));
@ -2562,11 +2560,13 @@ mdns_search_service(const char *name, const char *service, enum mdns_sd_proto pr
req->arg = arg; req->arg = arg;
req->proto = (u16_t)proto; req->proto = (u16_t)proto;
req->qtype = DNS_RRTYPE_PTR; req->qtype = DNS_RRTYPE_PTR;
if (proto == DNSSD_PROTO_UDP && strcmp(service, "_services._dns-sd") == 0) if (proto == DNSSD_PROTO_UDP && strcmp(service, "_services._dns-sd") == 0) {
req->only_ptr = 1; /* don't check other answers */ req->only_ptr = 1; /* don't check other answers */
}
mdns_domain_add_string(&req->service, service); mdns_domain_add_string(&req->service, service);
if (name) if (name) {
MEMCPY(&req->name, name, LWIP_MIN(MDNS_LABEL_MAXLEN, strlen(name))); MEMCPY(&req->name, name, LWIP_MIN(MDNS_LABEL_MAXLEN, strlen(name)));
}
/* save request id (slot) in pointer provided by caller */ /* save request id (slot) in pointer provided by caller */
*request_id = slot; *request_id = slot;
/* now prepare a MDNS request and send it (on specified interface) */ /* now prepare a MDNS request and send it (on specified interface) */

View File

@ -145,7 +145,7 @@ mdns_domain_add_label_pbuf(struct mdns_domain *domain, const struct pbuf *p, u16
err_t err_t
mdns_domain_add_domain(struct mdns_domain *domain, struct mdns_domain *source) mdns_domain_add_domain(struct mdns_domain *domain, struct mdns_domain *source)
{ {
u8_t len = source->length; u16_t len = source->length;
if (len > 0 && (1 + len + domain->length >= MDNS_DOMAIN_MAXLEN)) { if (len > 0 && (1 + len + domain->length >= MDNS_DOMAIN_MAXLEN)) {
return ERR_VAL; return ERR_VAL;
} }
@ -157,10 +157,9 @@ mdns_domain_add_domain(struct mdns_domain *domain, struct mdns_domain *source)
/* Copy partial domain */ /* Copy partial domain */
MEMCPY(&domain->name[domain->length], source->name, len); MEMCPY(&domain->name[domain->length], source->name, len);
domain->length += len; domain->length += len;
} } else {
else {
/* Add zero marker */ /* Add zero marker */
domain->name[domain->length] = len; domain->name[domain->length] = 0;
domain->length++; domain->length++;
} }
return ERR_OK; return ERR_OK;
@ -184,15 +183,15 @@ mdns_domain_add_string(struct mdns_domain *domain, const char *source)
len = start++; len = start++;
*len = 0; *len = 0;
source++; source++;
} } else {
else {
*start++ = *source++; *start++ = *source++;
*len = *len + 1; *len = *len + 1;
} }
} }
if (start == end) if (start == end) {
return ERR_VAL; return ERR_VAL;
domain->length = start - &domain->name[0]; }
domain->length = (u16_t)(start - &domain->name[0]);
return ERR_OK; return ERR_OK;
} }

View File

@ -62,8 +62,7 @@ enum mdns_sd_proto {
struct mdns_host; struct mdns_host;
struct mdns_service; struct mdns_service;
/* Domain structs - also visible for unit tests */ /* Domain structs */
struct mdns_domain { struct mdns_domain {
/* Encoded domain name */ /* Encoded domain name */
u8_t name[MDNS_DOMAIN_MAXLEN]; u8_t name[MDNS_DOMAIN_MAXLEN];