Fix mdnsresponder compilation issues (#481)
This commit is contained in:
parent
f67495f4f0
commit
6faf7c569d
2 changed files with 72 additions and 69 deletions
|
@ -25,6 +25,7 @@
|
||||||
#include <lwip/sys.h>
|
#include <lwip/sys.h>
|
||||||
#include <lwip/netdb.h>
|
#include <lwip/netdb.h>
|
||||||
#include <lwip/dns.h>
|
#include <lwip/dns.h>
|
||||||
|
#include <lwip/prot/dns.h>
|
||||||
#include <lwip/udp.h>
|
#include <lwip/udp.h>
|
||||||
#include <lwip/igmp.h>
|
#include <lwip/igmp.h>
|
||||||
#include <lwip/netif.h>
|
#include <lwip/netif.h>
|
||||||
|
@ -39,6 +40,7 @@
|
||||||
|
|
||||||
#define DNS_MULTICAST_ADDRESS "224.0.0.251" // RFC 6762
|
#define DNS_MULTICAST_ADDRESS "224.0.0.251" // RFC 6762
|
||||||
#define DNS_MDNS_PORT 5353 // RFC 6762
|
#define DNS_MDNS_PORT 5353 // RFC 6762
|
||||||
|
#define DNS_MSG_SIZE 512
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -480,13 +482,13 @@ void mdns_add_TXT(const char* rKey, u32_t ttl, const char* txStr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mdns_add_A(const char* rKey, u32_t ttl, struct ip_addr addr)
|
void mdns_add_A(const char* rKey, u32_t ttl, ip_addr_t addr)
|
||||||
{
|
{
|
||||||
mdns_add_response(rKey, DNS_RRTYPE_A, ttl, &addr, sizeof(addr));
|
mdns_add_response(rKey, DNS_RRTYPE_A, ttl, &addr, sizeof(addr));
|
||||||
}
|
}
|
||||||
|
|
||||||
void mdns_add_facility( const char* instanceName, // Friendly name, need not be unique
|
void mdns_add_facility( const char* instanceName, // Friendly name, need not be unique
|
||||||
const char* serviceName, // Must be _name
|
const char* serviceName, // Must be "name", e.g. "hap" or "http"
|
||||||
const char* addText, // Must be <key>=<value>
|
const char* addText, // Must be <key>=<value>
|
||||||
mdns_flags flags, // TCP or UDP
|
mdns_flags flags, // TCP or UDP
|
||||||
u16_t onPort, // port number
|
u16_t onPort, // port number
|
||||||
|
@ -500,26 +502,25 @@ void mdns_add_facility( const char* instanceName, // Friendly name, need not b
|
||||||
|
|
||||||
#ifdef qDebugLog
|
#ifdef qDebugLog
|
||||||
printf("\nmDNS advertising instance %s protocol %s text %s on port %d %s TTL %d secs\n",
|
printf("\nmDNS advertising instance %s protocol %s text %s on port %d %s TTL %d secs\n",
|
||||||
instanceName,serviceName,addText,onPort,(flags & mdns_UDP) ? "UDP" : "TCP", ttl);
|
instanceName, serviceName, addText, onPort, (flags & mdns_UDP) ? "UDP" : "TCP", ttl);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
snprintf(key,sizeof(key),"%s.%s.local.",serviceName,(flags & mdns_UDP) ? "_udp" :"_tcp");
|
snprintf(key, sizeof(key), "%s.%s.local.", serviceName, (flags & mdns_UDP) ? "_udp" :"_tcp");
|
||||||
snprintf(fullName,sizeof(fullName),"%s.%s",instanceName,key);
|
snprintf(fullName, sizeof(fullName), "%s.%s", instanceName, key);
|
||||||
snprintf(devName,sizeof(devName),"%s.local.",instanceName);
|
snprintf(devName, sizeof(devName), "%s.local.", instanceName);
|
||||||
|
|
||||||
if (!sdk_wifi_get_ip_info(STATION_IF,&ipInfo))
|
if (!sdk_wifi_get_ip_info(STATION_IF,&ipInfo))
|
||||||
ipInfo.ip.addr = IPADDR_NONE;
|
ipInfo.ip.addr = IPADDR_NONE;
|
||||||
|
|
||||||
// Order has significance for extraRR feature
|
// Order has significance for extraRR feature
|
||||||
mdns_add_TXT(fullName,ttl,addText);
|
mdns_add_TXT(fullName, ttl, addText);
|
||||||
mdns_add_A(devName,ttl,ipInfo.ip);
|
mdns_add_A(devName, ttl, ipInfo.ip);
|
||||||
mdns_add_SRV(fullName,ttl,onPort,devName);
|
mdns_add_SRV(fullName, ttl, onPort, devName);
|
||||||
mdns_add_PTR(key,ttl,fullName);
|
mdns_add_PTR(key, ttl, fullName);
|
||||||
|
|
||||||
// Optional, makes us browsable
|
// Optional, makes us browsable
|
||||||
if (flags & mdns_Browsable)
|
if (flags & mdns_Browsable)
|
||||||
mdns_add_PTR("_services._dns-sd._udp.local.",ttl,key);
|
mdns_add_PTR("_services._dns-sd._udp.local.",ttl,key);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mdns_update_ipaddr(struct ip_info* ipInfo)
|
static void mdns_update_ipaddr(struct ip_info* ipInfo)
|
||||||
|
@ -639,7 +640,7 @@ static void mdns_reply(struct mdns_hdr* hdrP)
|
||||||
|
|
||||||
qp = mdns_get_question(qBase, qp, qStr, &qClass, &qType, &qUnicast);
|
qp = mdns_get_question(qBase, qp, qStr, &qClass, &qType, &qUnicast);
|
||||||
if (qClass==DNS_RRCLASS_IN || qClass==DNS_RRCLASS_ANY) {
|
if (qClass==DNS_RRCLASS_IN || qClass==DNS_RRCLASS_ANY) {
|
||||||
rsrcP = mdns_match(qStr,qType);
|
rsrcP = mdns_match(qStr, qType);
|
||||||
if (rsrcP) {
|
if (rsrcP) {
|
||||||
respLen = mdns_add_to_answer(rsrcP, mdns_response, respLen);
|
respLen = mdns_add_to_answer(rsrcP, mdns_response, respLen);
|
||||||
rHdr->numanswers = htons( htons(rHdr->numanswers) + 1 );
|
rHdr->numanswers = htons( htons(rHdr->numanswers) + 1 );
|
||||||
|
@ -661,12 +662,12 @@ static void mdns_reply(struct mdns_hdr* hdrP)
|
||||||
respLen = mdns_add_to_answer(extra, mdns_response, respLen);
|
respLen = mdns_add_to_answer(extra, mdns_response, respLen);
|
||||||
rHdr->numextrarr = htons( htons(rHdr->numextrarr) + 1 );
|
rHdr->numextrarr = htons( htons(rHdr->numextrarr) + 1 );
|
||||||
}
|
}
|
||||||
mdns_send_mcast(mdns_response,respLen);
|
mdns_send_mcast(mdns_response, respLen);
|
||||||
}
|
}
|
||||||
free(mdns_response);
|
free(mdns_response);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mdns_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port)
|
static void mdns_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port)
|
||||||
// Callback from udp_recv
|
// Callback from udp_recv
|
||||||
{
|
{
|
||||||
UNUSED_ARG(pcb);
|
UNUSED_ARG(pcb);
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef __MDNSRESPONDER_H__
|
#ifndef __MDNSRESPONDER_H__
|
||||||
#define __MDNSRESPONDER_H__
|
#define __MDNSRESPONDER_H__
|
||||||
|
|
||||||
|
#include <lwip/ip_addr.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Basic multicast DNS responder
|
* Basic multicast DNS responder
|
||||||
*
|
*
|
||||||
|
@ -40,7 +42,7 @@ void mdns_add_facility( const char* instanceName, // Short user-friendly insta
|
||||||
void mdns_add_PTR(const char* rKey, u32_t ttl, const char* nameStr);
|
void mdns_add_PTR(const char* rKey, u32_t ttl, const char* nameStr);
|
||||||
void mdns_add_SRV(const char* rKey, u32_t ttl, u16_t rPort, const char* targname);
|
void mdns_add_SRV(const char* rKey, u32_t ttl, u16_t rPort, const char* targname);
|
||||||
void mdns_add_TXT(const char* rKey, u32_t ttl, const char* txtStr);
|
void mdns_add_TXT(const char* rKey, u32_t ttl, const char* txtStr);
|
||||||
void mdns_add_A (const char* rKey, u32_t ttl, struct ip_addr addr);
|
void mdns_add_A (const char* rKey, u32_t ttl, ip_addr_t addr);
|
||||||
|
|
||||||
/* Sample usage, advertising a secure web service
|
/* Sample usage, advertising a secure web service
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue