ReactOS 0.4.16-dev-258-g81860b4
mdns.h
Go to the documentation of this file.
1
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_H
40#define LWIP_HDR_APPS_MDNS_H
41
42#include "lwip/apps/mdns_opts.h"
43#include "lwip/netif.h"
44
45#ifdef __cplusplus
46extern "C" {
47#endif
48
49#if LWIP_MDNS_RESPONDER
50
51enum mdns_sd_proto {
52 DNSSD_PROTO_UDP = 0,
53 DNSSD_PROTO_TCP = 1
54};
55
56#define MDNS_PROBING_CONFLICT 0
57#define MDNS_PROBING_SUCCESSFUL 1
58
59#define MDNS_LABEL_MAXLEN 63
60#define MDNS_DOMAIN_MAXLEN 256
61
62struct mdns_host;
63struct mdns_service;
64
65/* Domain structs */
66struct mdns_domain {
67 /* Encoded domain name */
68 u8_t name[MDNS_DOMAIN_MAXLEN];
69 /* Total length of domain name, including zero */
71 /* Set if compression of this domain is not allowed */
72 u8_t skip_compression;
73};
74
77struct mdns_rr_info {
78 struct mdns_domain domain;
79 u16_t type;
80 u16_t klass;
81};
82
83struct mdns_answer {
84 struct mdns_rr_info info;
86 u16_t cache_flush;
87 /* Validity time in seconds */
88 u32_t ttl;
90 u16_t rd_length;
92 u16_t rd_offset;
93};
94
96typedef void (*service_get_txt_fn_t)(struct mdns_service *service, void *txt_userdata);
97
102typedef void (*mdns_name_result_cb_t)(struct netif* netif, u8_t result, s8_t slot);
103
104void *mdns_get_service_txt_userdata(struct netif *netif, s8_t slot);
105
106void mdns_resp_init(void);
107
108void mdns_resp_register_name_result_cb(mdns_name_result_cb_t cb);
109
110err_t mdns_resp_add_netif(struct netif *netif, const char *hostname);
111err_t mdns_resp_remove_netif(struct netif *netif);
112err_t mdns_resp_rename_netif(struct netif *netif, const char *hostname);
113int mdns_resp_netif_active(struct netif *netif);
114
115s8_t mdns_resp_add_service(struct netif *netif, const char *name, const char *service, enum mdns_sd_proto proto, u16_t port, service_get_txt_fn_t txt_fn, void *txt_userdata);
116err_t mdns_resp_del_service(struct netif *netif, u8_t slot);
117err_t mdns_resp_rename_service(struct netif *netif, u8_t slot, const char *name);
118
119err_t mdns_resp_add_service_txtitem(struct mdns_service *service, const char *txt, u8_t txt_len);
120
121void mdns_resp_restart_delay(struct netif *netif, uint32_t delay);
122void mdns_resp_restart(struct netif *netif);
123void mdns_resp_announce(struct netif *netif);
124
133#define mdns_resp_netif_settings_changed(netif) mdns_resp_announce(netif)
134
135#if LWIP_MDNS_SEARCH
136typedef void (*search_result_fn_t)(struct mdns_answer *answer, const char *varpart, int varlen, int flags, void *arg);
137/* flags bits, both can be set! */
138#define MDNS_SEARCH_RESULT_FIRST 1 /* First answer in received frame. */
139#define MDNS_SEARCH_RESULT_LAST 2 /* Last answer. */
140
141err_t mdns_search_service(const char *name, const char *service, enum mdns_sd_proto proto,
142 struct netif *netif, search_result_fn_t result_fn, void *arg,
143 u8_t *request_id);
144void mdns_search_stop(u8_t request_id);
145
146#endif /* LWIP_MDNS_SEARCH */
147
148#endif /* LWIP_MDNS_RESPONDER */
149
150#ifdef __cplusplus
151}
152#endif
153
154#endif /* LWIP_HDR_APPS_MDNS_H */
char * hostname
Definition: ftp.c:88
UINT32 uint32_t
Definition: types.h:75
USHORT port
Definition: uri.c:228
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLbitfield flags
Definition: glext.h:7161
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
GLuint64EXT * result
Definition: glext.h:11304
uint32_t u32_t
Definition: arch.h:129
uint8_t u8_t
Definition: arch.h:125
uint16_t u16_t
Definition: arch.h:127
int8_t s8_t
Definition: arch.h:126
s8_t err_t
Definition: err.h:96
static HMODULE MODULEINFO DWORD cb
Definition: module.c:33
Definition: vfat.h:185
Definition: cookie.c:42
Definition: name.c:39
Definition: netif.h:269
struct _slot slot
Definition: vfat.h:196
void * arg
Definition: msvc.h:10