From patchwork Mon Mar 20 23:00:16 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= X-Patchwork-Id: 741237 X-Patchwork-Delegate: zajec5@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3vnBJF4n7hz9s7l for ; Tue, 21 Mar 2017 10:01:01 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="am6DnqFJ"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="NMHiDqYI"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Subject:MIME-Version:References: In-Reply-To:Message-Id:Date:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=F2PWEgNNbzoOtFxOq/jlWzWUusb+3u9+qpzLUS1i6qQ=; b=am6DnqFJTax8XN 1kz1nI9HwukKCdJuIdGpO/iiS6J41MZ5j3vcThIWSAf8LYm9xkgM1d4IOI0n8aDON2mNujy8gfzAZ AdL27bxzlfakAObWh0LHjrwzfqKnXR17ObIgk8Z5cfKwp0gZGxQJvijmS7OqKauTRzkofeYKwBWe2 t9hJaFHhfVK6CVQMixwgfuStLkVuxmcJsDGnzWUKou20jq+1oGNyLmfffM576o+AZrEKHdeggvAF7 whzert4k3bbLAUVZ5ibJgaCEbDpeOm8uhjuzuGRcBHrBr7drnhDySuPJFYaQ0J8wC1KfvhNM/OAk0 us1eOK4mk/S3X9Q0ZTjg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1cq6IJ-0007VG-NW; Mon, 20 Mar 2017 23:00:55 +0000 Received: from mail-lf0-x244.google.com ([2a00:1450:4010:c07::244]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1cq6IF-0007TX-A0 for lede-dev@lists.infradead.org; Mon, 20 Mar 2017 23:00:53 +0000 Received: by mail-lf0-x244.google.com with SMTP id v2so11653671lfi.2 for ; Mon, 20 Mar 2017 16:00:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=JK40f9k1En5b0gtE85+NztZ72pd2kyvcSEe2tCms1ic=; b=NMHiDqYIukK/DbzG1Fq75Kl2GkQnsPFDBFMXoDjhT8cPwS9w3kL2NDOIxhWM1VaEi6 sk+A6fcBjxKBZ1CQmo+DayJWgbCylz5d1S4Aep9f/8rp/CRsrgIvepyMg5o1waTIxGJC ge+umYjkytN31ZlsIoPsb8B2zsGGx4A42jgJiQk4aT/ODNEZyr7HsLxpJF+T3p6L4QB0 xTmmZYRuDhGEGsEGenJmK4yN+jmIjRda76+HRe0MVOZIfGXPDrla1KmYwzhb69RAvnvh 2K4rwreNgiw/ruVDAMrPhy6PtzbGzVdVetO7Mfp3J+YR7aWZS2rOyFSyjtJdepOlwWoR iLaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JK40f9k1En5b0gtE85+NztZ72pd2kyvcSEe2tCms1ic=; b=uiupmZEHWs4tDljIFNY2DWC3YS5iOycQ+hgAWOWWPZo4O2hp0qDwduMGQ8SNlvbzYk N8qVRI3iCeTs4Fs75FXcQpVmjygRSc0ikaH/JkuNwGkAeCq70c71x6zW22s/k2MhYwUh dFF/T6xr5ChEawzAW44VXJYYSIEqUtoxBV5pgcDLy+jvhxNemVak7QuvYG8k6hxDizQr +U/KRTPnUuIgkrB4jObxAcI8p3bx4itu+BzcH+vUwkXuLlkjqpKGQGvf7U1laj2YugsB HC7frIWF55fmjO7FjavfcufO7/+HVdiBAqg/Rp02+GSjaB7FhYQkEBQ+7ip+DJLiGoTs ZwWA== X-Gm-Message-State: AFeK/H1yGJWjuSrAlcqI3MlbZ+VKu9ziK3tribfAwuXdhwCZzuj1qsksPFNgwq1CfVyFUw== X-Received: by 10.46.88.29 with SMTP id m29mr9674603ljb.92.1490050830620; Mon, 20 Mar 2017 16:00:30 -0700 (PDT) Received: from linux-samsung.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id v136sm3251993lfa.66.2017.03.20.16.00.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 20 Mar 2017 16:00:29 -0700 (PDT) From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= To: John Crispin Date: Tue, 21 Mar 2017 00:00:16 +0100 Message-Id: <20170320230016.23746-2-zajec5@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170320230016.23746-1-zajec5@gmail.com> References: <20170320230016.23746-1-zajec5@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170320_160051_581320_C90B9088 X-CRM114-Status: GOOD ( 10.92 ) X-Spam-Score: -2.5 (--) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (-2.5 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [2a00:1450:4010:c07:0:0:0:244 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (zajec5[at]gmail.com) 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (zajec5[at]gmail.com) -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain Subject: [LEDE-DEV] [PATCH umdns 2/2] Fix sending unicast questions on cache expire X-BeenThere: lede-dev@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= , lede-dev@lists.infradead.org Sender: "Lede-dev" Errors-To: lede-dev-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Rafał Miłecki Sending unicast questions requires passing IP address. Pass the one that was cached when caching DNS record. Signed-off-by: Rafał Miłecki --- announce.c | 2 +- cache.c | 8 ++++---- dns.c | 5 +++-- dns.h | 3 ++- interface.c | 4 ++-- ubus.c | 4 ++-- 6 files changed, 14 insertions(+), 12 deletions(-) diff --git a/announce.c b/announce.c index fed1b21..3c8ea16 100644 --- a/announce.c +++ b/announce.c @@ -46,7 +46,7 @@ announce_timer(struct uloop_timeout *timeout) case STATE_PROBE1: case STATE_PROBE2: case STATE_PROBE3: - dns_send_question(iface, mdns_hostname_local, TYPE_ANY, 1); + dns_send_question(iface, NULL, mdns_hostname_local, TYPE_ANY, 1); uloop_timeout_set(timeout, 250); iface->announce_state++; break; diff --git a/cache.c b/cache.c index fea9035..7d2aa8f 100644 --- a/cache.c +++ b/cache.c @@ -89,7 +89,7 @@ cache_gc_timer(struct uloop_timeout *timeout) continue; } r->refresh += 50; - dns_send_question(r->iface, r->record, r->type, 0); + dns_send_question(r->iface, (struct sockaddr *)&r->from, r->record, r->type, 0); } avl_for_each_element_safe(&services, s, avl, t) { @@ -102,7 +102,7 @@ cache_gc_timer(struct uloop_timeout *timeout) continue; } s->refresh += 50; - dns_send_question(s->iface, s->entry, TYPE_PTR, 0); + dns_send_question(s->iface, NULL, s->entry, TYPE_PTR, 0); } uloop_timeout_set(timeout, 10000); @@ -141,7 +141,7 @@ cache_update(void) vlist_for_each_element(&interfaces, iface, node) avl_for_each_element(&services, s, avl) - dns_send_question(iface, s->entry, TYPE_PTR, 0); + dns_send_question(iface, NULL, s->entry, TYPE_PTR, 0); } static struct cache_service* @@ -181,7 +181,7 @@ cache_service(struct interface *iface, char *entry, int hlen, int ttl) avl_insert(&services, &s->avl); if (!hlen) - dns_send_question(iface, entry, TYPE_PTR, iface->multicast); + dns_send_question(iface, NULL, entry, TYPE_PTR, iface->multicast); return s; } diff --git a/dns.c b/dns.c index 899b124..d384f58 100644 --- a/dns.c +++ b/dns.c @@ -68,7 +68,8 @@ dns_type_string(uint16_t type) } void -dns_send_question(struct interface *iface, const char *question, int type, int multicast) +dns_send_question(struct interface *iface, struct sockaddr *to, + const char *question, int type, int multicast) { static struct dns_header h; static struct dns_question q; @@ -98,7 +99,7 @@ dns_send_question(struct interface *iface, const char *question, int type, int m iov[1].iov_len = len; DBG(1, "Q <- %s %s\n", dns_type_string(type), question); - if (interface_send_packet(iface, NULL, iov, ARRAY_SIZE(iov)) < 0) + if (interface_send_packet(iface, to, iov, ARRAY_SIZE(iov)) < 0) perror("failed to send question"); } diff --git a/dns.h b/dns.h index 38ab41f..f1f0212 100644 --- a/dns.h +++ b/dns.h @@ -73,7 +73,8 @@ struct interface; extern int cfg_proto; extern int cfg_no_subnet; -void dns_send_question(struct interface *iface, const char *question, int type, int multicast); +void dns_send_question(struct interface *iface, struct sockaddr *to, + const char *question, int type, int multicast); void dns_init_answer(void); void dns_add_answer(int type, const uint8_t *rdata, uint16_t rdlength, int ttl); void dns_send_answer(struct interface *iface, struct sockaddr *to, const char *answer); diff --git a/interface.c b/interface.c index e898784..3904c89 100644 --- a/interface.c +++ b/interface.c @@ -441,7 +441,7 @@ reconnect_socket4(struct uloop_timeout *timeout) uloop_fd_add(&iface->fd, ULOOP_READ); if (iface->multicast) { - dns_send_question(iface, C_DNS_SD, TYPE_PTR, 0); + dns_send_question(iface, NULL, C_DNS_SD, TYPE_PTR, 0); announce_init(iface); } @@ -489,7 +489,7 @@ reconnect_socket6(struct uloop_timeout *timeout) uloop_fd_add(&iface->fd, ULOOP_READ); if (iface->multicast) { - dns_send_question(iface, C_DNS_SD, TYPE_PTR, 0); + dns_send_question(iface, NULL, C_DNS_SD, TYPE_PTR, 0); announce_init(iface); } diff --git a/ubus.c b/ubus.c index ba89fdd..7b1c811 100644 --- a/ubus.c +++ b/ubus.c @@ -201,10 +201,10 @@ umdns_query(struct ubus_context *ctx, struct ubus_object *obj, if (!strcmp(method, "query")) { if (iface_v4) - dns_send_question(iface_v4, question, type, 1); + dns_send_question(iface_v4, NULL, question, type, 1); if (iface_v6) - dns_send_question(iface_v6, question, type, 1); + dns_send_question(iface_v6, NULL, question, type, 1); return UBUS_STATUS_OK; } else if (!strcmp(method, "fetch")) {