Lines Matching defs:outpkt
287 static err_t mdns_send_outpacket(struct mdns_outpacket *outpkt, u8_t flags);
832 * @param outpkt The outpacket to write to
837 mdns_write_domain(struct mdns_outpacket *outpkt, struct mdns_domain *domain)
847 u16_t offset = outpkt->domain_offsets[i];
849 u16_t len = mdns_compress_domain(outpkt->pbuf, &offset, domain);
860 res = pbuf_take_at(outpkt->pbuf, domain->name, writelen, outpkt->write_offset);
867 if (outpkt->domain_offsets[i] == 0) {
868 outpkt->domain_offsets[i] = outpkt->write_offset;
873 outpkt->write_offset += writelen;
878 res = pbuf_take_at(outpkt->pbuf, &jump, DOMAIN_JUMP_SIZE, outpkt->write_offset);
882 outpkt->write_offset += DOMAIN_JUMP_SIZE;
891 * @param outpkt The outpacket to write to
900 mdns_add_question(struct mdns_outpacket *outpkt, struct mdns_domain *domain, u16_t type, u16_t klass, u16_t unicast)
906 if (!outpkt->pbuf) {
908 outpkt->pbuf = pbuf_alloc(PBUF_TRANSPORT, OUTPACKET_SIZE, PBUF_RAM);
909 if (!outpkt->pbuf) {
912 outpkt->write_offset = SIZEOF_DNS_HDR;
917 if (outpkt->write_offset + question_len > outpkt->pbuf->tot_len) {
923 res = mdns_write_domain(outpkt, domain);
930 res = pbuf_take_at(outpkt->pbuf, &field16, sizeof(field16), outpkt->write_offset);
934 outpkt->write_offset += sizeof(field16);
941 res = pbuf_take_at(outpkt->pbuf, &field16, sizeof(field16), outpkt->write_offset);
945 outpkt->write_offset += sizeof(field16);
1309 mdns_send_outpacket(struct mdns_outpacket *outpkt, u8_t flags)
1314 struct mdns_host *mdns = NETIF_TO_HOST(outpkt->netif);
1319 if (outpkt->host_replies & REPLY_HOST_A) {
1320 res = mdns_add_a_answer(outpkt, outpkt->cache_flush, outpkt->netif);
1326 if (outpkt->host_replies & REPLY_HOST_PTR_V4) {
1327 res = mdns_add_hostv4_ptr_answer(outpkt, outpkt->cache_flush, outpkt->netif);
1335 if (outpkt->host_replies & REPLY_HOST_AAAA) {
1338 if (ip6_addr_isvalid(netif_ip6_addr_state(outpkt->netif, addrindex))) {
1339 res = mdns_add_aaaa_answer(outpkt, outpkt->cache_flush, outpkt->netif, addrindex);
1347 if (outpkt->host_replies & REPLY_HOST_PTR_V6) {
1348 u8_t rev_addrs = outpkt->host_reverse_v6_replies;
1352 res = mdns_add_hostv6_ptr_answer(outpkt, outpkt->cache_flush, outpkt->netif, addrindex);
1371 if (outpkt->serv_replies[i] & REPLY_SERVICE_TYPE_PTR) {
1372 res = mdns_add_servicetype_ptr_answer(outpkt, service);
1379 if (outpkt->serv_replies[i] & REPLY_SERVICE_NAME_PTR) {
1380 res = mdns_add_servicename_ptr_answer(outpkt, service);
1387 if (outpkt->serv_replies[i] & REPLY_SERVICE_SRV) {
1388 res = mdns_add_srv_answer(outpkt, outpkt->cache_flush, mdns, service);
1395 if (outpkt->serv_replies[i] & REPLY_SERVICE_TXT) {
1396 res = mdns_add_txt_answer(outpkt, outpkt->cache_flush, service);
1406 outpkt->answers += answers;
1408 outpkt->authoritative += answers;
1418 if (outpkt->serv_replies[i] & REPLY_SERVICE_NAME_PTR) {
1421 if (!(outpkt->serv_replies[i] & REPLY_SERVICE_SRV)) {
1422 res = mdns_add_srv_answer(outpkt, outpkt->cache_flush, mdns, service);
1426 outpkt->additional++;
1429 if (!(outpkt->serv_replies[i] & REPLY_SERVICE_TXT)) {
1430 res = mdns_add_txt_answer(outpkt, outpkt->cache_flush, service);
1434 outpkt->additional++;
1441 if ((outpkt->serv_replies[i] & (REPLY_SERVICE_NAME_PTR | REPLY_SERVICE_SRV)) ||
1442 (outpkt->host_replies & (REPLY_HOST_A | REPLY_HOST_AAAA))) {
1444 if (!(outpkt->host_replies & REPLY_HOST_AAAA)) {
1447 if (ip6_addr_isvalid(netif_ip6_addr_state(outpkt->netif, addrindex))) {
1448 res = mdns_add_aaaa_answer(outpkt, outpkt->cache_flush, outpkt->netif, addrindex);
1452 outpkt->additional++;
1458 if (!(outpkt->host_replies & REPLY_HOST_A) &&
1459 !ip4_addr_isany_val(*netif_ip4_addr(outpkt->netif))) {
1460 res = mdns_add_a_answer(outpkt, outpkt->cache_flush, outpkt->netif);
1464 outpkt->additional++;
1470 if (outpkt->pbuf) {
1477 hdr.numquestions = lwip_htons(outpkt->questions);
1478 hdr.numanswers = lwip_htons(outpkt->answers);
1479 hdr.numauthrr = lwip_htons(outpkt->authoritative);
1480 hdr.numextrarr = lwip_htons(outpkt->additional);
1481 hdr.id = lwip_htons(outpkt->tx_id);
1482 pbuf_take(outpkt->pbuf, &hdr, sizeof(hdr));
1485 pbuf_realloc(outpkt->pbuf, outpkt->write_offset);
1487 if (IP_IS_V6_VAL(outpkt->dest_addr)) {
1497 LWIP_DEBUGF(MDNS_DEBUG, ("MDNS: Sending packet, len=%d, unicast=%d\n", outpkt->write_offset, outpkt->unicast_reply));
1498 if (outpkt->unicast_reply) {
1499 res = udp_sendto_if(mdns_pcb, outpkt->pbuf, &outpkt->dest_addr, outpkt->dest_port, outpkt->netif);
1501 res = udp_sendto_if(mdns_pcb, outpkt->pbuf, mcast_destaddr, LWIP_IANA_PORT_MDNS, outpkt->netif);
1506 if (outpkt->pbuf) {
1507 pbuf_free(outpkt->pbuf);
1508 outpkt->pbuf = NULL;