Lines Matching refs:service
133 /* Lookup for service types */
135 /* Lookup for instances of service */
137 /* Lookup for location of service instance */
139 /* Lookup for text info on service instance */
160 /** Description of a service */
164 /** Name of service, like 'myweb' */
166 /** Type of service, like '_http' */
167 char service[MDNS_LABEL_MAXLEN + 1];
176 /** Port of the service */
257 /* Reply bitmask per service */
489 * @param service The service to build TXT record for
492 mdns_prepare_txtdata(struct mdns_service *service)
494 memset(&service->txtdata, 0, sizeof(struct mdns_domain));
495 if (service->txt_fn) {
496 service->txt_fn(service, service->txt_userdata);
635 * Build domain name for a service
637 * @param service The service struct, containing service name, type and protocol
638 * @param include_name Whether to include the service name in the domain
639 * @return ERR_OK if domain was written. If service name is included,
644 mdns_build_service_domain(struct mdns_domain *domain, struct mdns_service *service, int include_name)
650 res = mdns_domain_add_label(domain, service->name, (u8_t)strlen(service->name));
653 res = mdns_domain_add_label(domain, service->service, (u8_t)strlen(service->service));
655 res = mdns_domain_add_label(domain, dnssd_protos[service->proto], (u8_t)strlen(dnssd_protos[service->proto]));
730 * Check which replies we should send for a service based on question
731 * @param service A registered MDNS service
736 check_service(struct mdns_service *service, struct mdns_rr_info *rr)
750 /* Request for all service types */
754 res = mdns_build_service_domain(&mydomain, service, 0);
757 /* Request for the instance of my service */
761 res = mdns_build_service_domain(&mydomain, service, 1);
763 /* Request for info about my service */
1216 mdns_add_servicetype_ptr_answer(struct mdns_outpacket *reply, struct mdns_service *service)
1219 mdns_build_service_domain(&service_type, service, 0);
1221 LWIP_DEBUGF(MDNS_DEBUG, ("MDNS: Responding with service type PTR record\n"));
1222 return mdns_add_answer(reply, &service_dnssd, DNS_RRTYPE_PTR, DNS_RRCLASS_IN, 0, service->dns_ttl, NULL, 0, &service_type);
1227 mdns_add_servicename_ptr_answer(struct mdns_outpacket *reply, struct mdns_service *service)
1230 mdns_build_service_domain(&service_type, service, 0);
1231 mdns_build_service_domain(&service_instance, service, 1);
1232 LWIP_DEBUGF(MDNS_DEBUG, ("MDNS: Responding with service name PTR record\n"));
1233 return mdns_add_answer(reply, &service_type, DNS_RRTYPE_PTR, DNS_RRCLASS_IN, 0, service->dns_ttl, NULL, 0, &service_instance);
1238 mdns_add_srv_answer(struct mdns_outpacket *reply, u16_t cache_flush, struct mdns_host *mdns, struct mdns_service *service)
1242 mdns_build_service_domain(&service_instance, service, 1);
1253 srvdata[2] = lwip_htons(service->port);
1255 return mdns_add_answer(reply, &service_instance, DNS_RRTYPE_SRV, DNS_RRCLASS_IN, cache_flush, service->dns_ttl,
1261 mdns_add_txt_answer(struct mdns_outpacket *reply, u16_t cache_flush, struct mdns_service *service)
1264 mdns_build_service_domain(&service_instance, service, 1);
1265 mdns_prepare_txtdata(service);
1267 return mdns_add_answer(reply, &service_instance, DNS_RRTYPE_TXT, DNS_RRCLASS_IN, cache_flush, service->dns_ttl,
1268 (u8_t *) &service->txtdata.name, service->txtdata.length, NULL);
1311 struct mdns_service *service;
1364 /* Write answers to service questions */
1366 service = mdns->services[i];
1367 if (!service) {
1372 res = mdns_add_servicetype_ptr_answer(outpkt, service);
1380 res = mdns_add_servicename_ptr_answer(outpkt, service);
1388 res = mdns_add_srv_answer(outpkt, outpkt->cache_flush, mdns, service);
1396 res = mdns_add_txt_answer(outpkt, outpkt->cache_flush, service);
1413 service = mdns->services[i];
1414 if (!service) {
1419 /* Our service instance requested, include SRV & TXT
1422 res = mdns_add_srv_answer(outpkt, outpkt->cache_flush, mdns, service);
1430 res = mdns_add_txt_answer(outpkt, outpkt->cache_flush, service);
1438 /* If service instance, SRV, record or an IP address is requested,
1564 struct mdns_service *service;
1601 service = mdns->services[i];
1602 if (!service) {
1605 reply.serv_replies[i] |= check_service(service, &q.info);
1692 service = mdns->services[i];
1693 if (!service) {
1696 match = reply.serv_replies[i] & check_service(service, &ans.info);
1697 if (match && (ans.ttl > (service->dns_ttl / 2))) {
1709 res = mdns_build_service_domain(&my_ans, service, 0);
1711 LWIP_DEBUGF(MDNS_DEBUG, ("MDNS: Skipping known answer: service type PTR\n"));
1716 res = mdns_build_service_domain(&my_ans, service, 1);
1718 LWIP_DEBUGF(MDNS_DEBUG, ("MDNS: Skipping known answer: service name PTR\n"));
1743 if (len != sizeof(field16) || lwip_ntohs(field16) != service->port) {
1757 mdns_prepare_txtdata(service);
1758 if (service->txtdata.length == ans.rd_length &&
1759 pbuf_memcmp(pkt->pbuf, ans.rd_offset, service->txtdata.name, ans.rd_length) == 0) {
1827 struct mdns_service* service = mdns->services[i];
1828 if (!service) {
1831 res = mdns_build_service_domain(&domain, service, 1);
1833 LWIP_DEBUGF(MDNS_DEBUG, ("MDNS: Probe response matches service domain!"));
1969 struct mdns_service* service = mdns->services[i];
1970 if (!service) {
1973 mdns_build_service_domain(&domain, service, 1);
2127 struct mdns_service *service = mdns->services[i];
2128 if (service) {
2129 mem_free(service);
2178 * Add a service to the selected network interface.
2179 * @param netif The network interface to publish this service on
2180 * @param name The name of the service
2181 * @param service The service type, like "_http"
2182 * @param proto The service protocol, DNSSD_PROTO_TCP for TCP ("_tcp") and DNSSD_PROTO_UDP
2184 * @param port The port the service listens to
2185 * @param dns_ttl Validity time in seconds to send out for service data in DNS replies
2189 * @return service_id if the service was added to the netif, an err_t otherwise
2192 mdns_resp_add_service(struct netif *netif, const char *name, const char *service, enum mdns_sd_proto proto, u16_t port, u32_t dns_ttl, service_get_txt_fn_t txt_fn, void *txt_data)
2205 LWIP_ERROR("mdns_resp_add_service: Service too long", (strlen(service) <= MDNS_LABEL_MAXLEN), return ERR_VAL);
2220 MEMCPY(&srv->service, service, LWIP_MIN(MDNS_LABEL_MAXLEN, strlen(service)));
2236 * Delete a service on the selected network interface.
2237 * @param netif The network interface on which service should be removed
2238 * @param slot The service slot number returned by mdns_resp_add_service
2239 * @return ERR_OK if the service was removed from the netif, an err_t otherwise
2260 * Update name for an MDNS service.
2262 * @param slot The service slot number returned by mdns_resp_add_service
2263 * @param name The new name for the service
2264 * @return ERR_OK if name could be set on service, an err_t otherwise
2296 * @param service The service provided to the get_txt callback
2302 mdns_resp_add_service_txtitem(struct mdns_service *service, const char *txt, u8_t txt_len)
2305 LWIP_ASSERT("mdns_resp_add_service_txtitem: service != NULL", service);
2308 return mdns_domain_add_label(&service->txtdata, txt, txt_len);