From patchwork Wed Mar 11 16:38:45 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gert Doering X-Patchwork-Id: 4813 Return-Path: Delivered-To: patchwork@openvpn.net Received: by 2002:a05:7000:1e24:b0:83c:d90d:321 with SMTP id ht36csp2740864mab; Wed, 11 Mar 2026 09:39:09 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCV9errFLSwpzDVXVPYRgAjBMOvNcQbGO+qRTDrv5jt4GvycHN3u8ArI6qMD+kxoJkGYVjOp/u+6HJk=@openvpn.net X-Received: by 2002:a05:7022:30d:b0:127:5cda:ab0f with SMTP id a92af1059eb24-128e779ef15mr1441498c88.5.1773247149587; Wed, 11 Mar 2026 09:39:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773247149; cv=none; d=google.com; s=arc-20240605; b=DXpTfmbVD9oQb3qWYY4qSsx2zBE2/IiK3FSx4QQbK40VeU6rw6prajVeBaI/yKHwiX 6O8E3SiQzuZ60Fyay+HiT5HfOlYWnLGy/WvmBRWiNcBZzputhkrFqL67yiWLZOs0IyoV p4yfzzYCt2CpLw39k5qtV97ldBxa46U9U8MNqnzCvyv5yZjWbl8izS9x+G3Dws9Ss7eL XVXumSmZ/9kt/t29qaVWCITjkgUaVnw7ER9Mk+CIYE8ZL/kpevDfnG0pviLakuKy+rae PE2zXQxgk/veoe7lcD5iBHIMfTTWovBid+Cq+QdBTiWHSsYyWEpLzw/C8cLJ1GcJXKRy N3fA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=errors-to:content-transfer-encoding:list-subscribe:list-help :list-post:list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:references:in-reply-to:message-id:date:to:from :dkim-signature:dkim-signature:dkim-signature; bh=96M5eHV1eT5fN/mO7JZ9eHoch3VephbLJpGD+l2L46E=; fh=4NbAC/LsuMLI0S0hprUlLSLCiHwg6SCAifhH718Jh0Q=; b=FE9RkhYUu/EmHSJ/A7Pc3JZTylrhZn1JfUYmBzaOHyx2Wg3kmfrGCp6gduXcnVJOZh nCB6Lftur32i8LtXMhAsH4h82LQWSNEcQGyCtB9q9O7NSzuxlIs2/VjmWjXsGFdfKPf2 7zImlyo4rQNMe7TqBms55Zv7OUaODB2f+rQnH75cWGK4cvVKorHCVOIq2gcPA3whLIQR XlMx0+lUxVx2n0/nayhNFxFAUOnAzNj73XE4z1pqbbJCeeIr6psBv6d6Zv3vHKF0cUZN 5xBNp3aPmFNU4fLdaVYlhljjaiyNf1CLlvB0Tr4mDe+Y1C1j5JUqYevAlBiX1KKU8rnE u44Q==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lists.sourceforge.net header.s=beta header.b="gC3f9/r6"; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b=jeER8NEr; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b=JaP9ba2M; spf=pass (google.com: domain of openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as permitted sender) smtp.mailfrom=openvpn-devel-bounces@lists.sourceforge.net; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=muc.de Received: from lists.sourceforge.net (lists.sourceforge.net. [216.105.38.7]) by mx.google.com with ESMTPS id a92af1059eb24-128e7bfa645si7090642c88.16.2026.03.11.09.39.08 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Mar 2026 09:39:09 -0700 (PDT) Received-SPF: pass (google.com: domain of openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as permitted sender) client-ip=216.105.38.7; Authentication-Results: mx.google.com; dkim=pass header.i=@lists.sourceforge.net header.s=beta header.b="gC3f9/r6"; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b=jeER8NEr; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b=JaP9ba2M; spf=pass (google.com: domain of openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as permitted sender) smtp.mailfrom=openvpn-devel-bounces@lists.sourceforge.net; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=muc.de DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.sourceforge.net; s=beta; h=Content-Transfer-Encoding:Content-Type: List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id: Subject:MIME-Version:References:In-Reply-To:Message-ID:Date:To:From:Sender: Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=96M5eHV1eT5fN/mO7JZ9eHoch3VephbLJpGD+l2L46E=; b=gC3f9/r6fRMiFdMt+6DhKIRPHC mwBdCkGoBD/SDoctAGZZHqFfY4ysBFrkOz7de2cKxncGuGpKhaKm1QsR+caYgyjPD7rPVqfrJf65A QAyAr2MMA99sp4KyKra9Vd0JWxxQt8Y0cebol7atdr7PcEMNu2Oyo33a7pkMVoXKgdxM=; Received: from [127.0.0.1] (helo=sfs-ml-4.v29.lw.sourceforge.com) by sfs-ml-4.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1w0MaN-0006tI-BC; Wed, 11 Mar 2026 16:39:03 +0000 Received: from [172.30.29.66] (helo=mx.sourceforge.net) by sfs-ml-4.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1w0MaM-0006tB-Jy for openvpn-devel@lists.sourceforge.net; Wed, 11 Mar 2026 16:39:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:To:From:Sender:Reply-To:Cc:Content-Type: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=7UM3yO9B/CyN/KXor6Up4oGjl/NwxucM6AuJygOoaxg=; b=jeER8NErsFTvkdhhhb55VZvho7 WFlA/RwMdQ5NWloL0/R+7MXcmULUDX7rdbgIAo/3xitmsBnjq03P0Oilf0H+BOt8Pee5I3K6nSioo lH6L3VVPIyUO8qAjM9gg+mkfWL5+Kx3/AUx1lBo8JnsdxrGpwPvHlSpm5y0KnbzCiaiU=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID: Date:Subject:To:From:Sender:Reply-To:Cc:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=7UM3yO9B/CyN/KXor6Up4oGjl/NwxucM6AuJygOoaxg=; b=JaP9ba2MdSjWalG7g9xvcX2xS1 UM7i0gSREPOJ43jhqS2U8WHz6NHSVcGIxmFJJtisWmsDB0JaFdmrQezFa9q3000ViosotoA+JuJ2Y 2zqx8hdgyPmAS96xTUrN5jW9ZZ5gpdnenosrlcK85D88GDV7Hfi3/1Md2i0jcqgklnhM=; Received: from [193.149.48.129] (helo=blue.greenie.muc.de) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1w0MaK-00018h-HU for openvpn-devel@lists.sourceforge.net; Wed, 11 Mar 2026 16:39:02 +0000 Received: from blue.greenie.muc.de (localhost [127.0.0.1]) by blue.greenie.muc.de (8.18.1/8.18.1) with ESMTP id 62BGcrhn021403 for ; Wed, 11 Mar 2026 17:38:53 +0100 Received: (from gert@localhost) by blue.greenie.muc.de (8.18.1/8.18.1/Submit) id 62BGcrAP021402 for openvpn-devel@lists.sourceforge.net; Wed, 11 Mar 2026 17:38:53 +0100 From: Gert Doering To: openvpn-devel@lists.sourceforge.net Date: Wed, 11 Mar 2026 17:38:45 +0100 Message-ID: <20260311163852.21387-1-gert@greenie.muc.de> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Score: 1.3 (+) X-Spam-Report: Spam detection software, running on the system "sfi-spamd-2.hosts.colo.sdot.me", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Frank Lichtenheld Previously we had a weird mix of int and DWORD. But the Win32 APIs seem to be consistent (they have different names, but NET_IFINDEX is ULONG is DWORD). So use that. Content analysis details: (1.3 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_DNSWL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to DNSWL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block for more information. [193.149.48.129 listed in list.dnswl.org] 1.3 RDNS_NONE Delivered to internal network by a host with no rDNS X-Headers-End: 1w0MaK-00018h-HU Subject: [Openvpn-devel] [PATCH v6] Win32: Make interface index DWORD consistently X-BeenThere: openvpn-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: openvpn-devel-bounces@lists.sourceforge.net X-getmail-retrieved-from-mailbox: Inbox X-GMAIL-THRID: =?utf-8?q?1859384402902683298?= X-GMAIL-MSGID: =?utf-8?q?1859384402902683298?= From: Frank Lichtenheld Previously we had a weird mix of int and DWORD. But the Win32 APIs seem to be consistent (they have different names, but NET_IFINDEX is ULONG is DWORD). So use that. Note that this fixes some smaller issues in surrounding code that are not strictly related but were found while scanning the code. Mostly about needlessly converting all DWORD values to int for printf(). Change-Id: I38bb2d1fa66c543e8bcf47b7d77b6154d1895f81 Signed-off-by: Frank Lichtenheld Acked-by: Gert Doering Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1519 --- This change was reviewed on Gerrit and approved by at least one developer. I request to merge it to master. Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1519 This mail reflects revision 6 of this Change. Acked-by according to Gerrit (reflected above): Gert Doering diff --git a/include/openvpn-msg.h b/include/openvpn-msg.h index a0cec53..34f50c8 100644 --- a/include/openvpn-msg.h +++ b/include/openvpn-msg.h @@ -66,7 +66,8 @@ typedef struct { - int index; +#define TUN_ADAPTER_INDEX_INVALID ((DWORD)-1) + DWORD index; char name[256]; } interface_t; diff --git a/src/openvpn/dns.c b/src/openvpn/dns.c index 4a4bb0c..a42d032 100644 --- a/src/openvpn/dns.c +++ b/src/openvpn/dns.c @@ -468,9 +468,10 @@ make_domain_list("dns search domains", search_domains, false, nrpt.search_domains, sizeof(nrpt.search_domains)); - msg(D_LOW, "%s NRPT DNS%s%s on '%s' (if_index = %d) using service", + msg(D_LOW, "%s NRPT DNS%s%s on '%s' (if_index = %lu) using service", (add ? "Setting" : "Deleting"), nrpt.resolve_domains[0] != 0 ? ", resolve domains" : "", - nrpt.search_domains[0] != 0 ? ", search domains" : "", nrpt.iface.name, nrpt.iface.index); + nrpt.search_domains[0] != 0 ? ", search domains" : "", + nrpt.iface.name, nrpt.iface.index); send_msg_iservice(o->msg_channel, &nrpt, sizeof(nrpt), &ack, "DNS"); } diff --git a/src/openvpn/route.c b/src/openvpn/route.c index b196713..1cfbf80 100644 --- a/src/openvpn/route.c +++ b/src/openvpn/route.c @@ -2389,8 +2389,8 @@ status = GetIpForwardTable(rt, &size, TRUE); if (status != NO_ERROR) { - msg(D_ROUTE, "NOTE: GetIpForwardTable returned error: %s (code=%u)", - strerror_win32(status, gc), (unsigned int)status); + msg(D_ROUTE, "NOTE: GetIpForwardTable returned error: %s (code=%lu)", + strerror_win32(status, gc), status); rt = NULL; } } @@ -2470,8 +2470,8 @@ } } - msg(D_ROUTE, "TEST ROUTES: %d/%d succeeded len=%d ret=%d a=%d u/d=%s", good, count, len, - (int)ret, ambig, adapter_up ? "up" : "down"); + msg(D_ROUTE, "TEST ROUTES: %d/%d succeeded len=%d ret=%u a=%d u/d=%s", + good, count, len, ret, ambig, adapter_up ? "up" : "down"); gc_free(&gc); return ret; @@ -2495,9 +2495,9 @@ const DWORD index = row->dwForwardIfIndex; const DWORD metric = row->dwForwardMetric1; - dmsg(D_ROUTE_DEBUG, "GDGR: route[%lu] %s/%s i=%d m=%d", i, + dmsg(D_ROUTE_DEBUG, "GDGR: route[%lu] %s/%s i=%lu m=%lu", i, print_in_addr_t((in_addr_t)net, 0, &gc), print_in_addr_t((in_addr_t)mask, 0, &gc), - (int)index, (int)metric); + index, metric); if (!net && !mask && metric < lowest_metric) { @@ -2508,7 +2508,7 @@ } } - dmsg(D_ROUTE_DEBUG, "GDGR: best=%d lm=%u", best, (unsigned int)lowest_metric); + dmsg(D_ROUTE_DEBUG, "GDGR: best=%d lm=%lu", best, lowest_metric); gc_free(&gc); return ret; @@ -2537,12 +2537,12 @@ status = GetBestInterfaceEx((struct sockaddr *)dest, &best_if_index); if (status != NO_ERROR) { - msg(D_ROUTE, "NOTE: GetBestInterfaceEx returned error: %s (code=%u)", - strerror_win32(status, gc), (unsigned int)status); + msg(D_ROUTE, "NOTE: GetBestInterfaceEx returned error: %s (code=%lu)", + strerror_win32(status, gc), status); goto done; } - msg(D_ROUTE_DEBUG, "GetBestInterfaceEx() returned if=%d", (int)best_if_index); + msg(D_ROUTE_DEBUG, "GetBestInterfaceEx() returned if=%lu", best_if_index); /* get the routing information (such as NextHop) for the destination and interface */ NET_LUID luid; @@ -2552,8 +2552,8 @@ status = GetBestRoute2(&luid, best_if_index, NULL, dest, 0, best_route, &best_src); if (status != NO_ERROR) { - msg(D_ROUTE, "NOTE: GetIpForwardEntry2 returned error: %s (code=%u)", - strerror_win32(status, gc), (unsigned int)status); + msg(D_ROUTE, "NOTE: GetIpForwardEntry2 returned error: %s (code=%lu)", + strerror_win32(status, gc), status); goto done; } @@ -2647,15 +2647,14 @@ print_in_addr_t(r->gateway, 0, &gc), count); } - dmsg(D_ROUTE_DEBUG, "DEBUG: route find if: on_tun=%d count=%d index=%d", on_tun, count, - (int)ret); + dmsg(D_ROUTE_DEBUG, "DEBUG: route find if: on_tun=%d count=%d index=%lu", + on_tun, count, ret); gc_free(&gc); return ret; } /* IPv6 implementation using GetBestRoute2() - * (TBD: dynamic linking so the binary can still run on XP?) * https://msdn.microsoft.com/en-us/library/windows/desktop/aa365922(v=vs.85).aspx * https://msdn.microsoft.com/en-us/library/windows/desktop/aa814411(v=vs.85).aspx */ @@ -2687,8 +2686,8 @@ print_in6_addr(BestRoute.DestinationPrefix.Prefix.Ipv6.sin6_addr, 0, &gc), BestRoute.DestinationPrefix.PrefixLength, print_in6_addr(BestRoute.NextHop.Ipv6.sin6_addr, 0, &gc)); - msg(D_ROUTE, "GDG6: Metric=%d, Loopback=%d, AA=%d, I=%d", (int)BestRoute.Metric, - (int)BestRoute.Loopback, (int)BestRoute.AutoconfigureAddress, (int)BestRoute.Immortal); + msg(D_ROUTE, "GDG6: Metric=%lu, Loopback=%u, AA=%u, I=%u", BestRoute.Metric, + BestRoute.Loopback, BestRoute.AutoconfigureAddress, BestRoute.Immortal); rgi6->gateway.addr_ipv6 = BestRoute.NextHop.Ipv6.sin6_addr; rgi6->adapter_index = BestRoute.InterfaceIndex; @@ -2753,8 +2752,8 @@ else { /* failed, try increasing the metric to work around Vista issue */ - const unsigned int forward_metric_limit = - 2048; /* iteratively retry higher metrics up to this limit */ + /* iteratively retry higher metrics up to this limit */ + const DWORD forward_metric_limit = 2048; for (; fr.dwForwardMetric1 <= forward_metric_limit; ++fr.dwForwardMetric1) { @@ -2767,8 +2766,8 @@ if (status == NO_ERROR) { msg(D_ROUTE, - "ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=%u and dwForwardType=%u", - (unsigned int)fr.dwForwardMetric1, (unsigned int)fr.dwForwardType); + "ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=%lu and dwForwardType=%lu", + fr.dwForwardMetric1, fr.dwForwardType); ret = RTA_SUCCESS; goto doublebreak; } @@ -2790,8 +2789,8 @@ { msg(M_WARN, "ERROR: route addition failed using CreateIpForwardEntry: " - "%s [status=%u if_index=%u]", - strerror_win32(status, &gc), (unsigned int)status, (unsigned int)if_index); + "%s [status=%lu if_index=%lu]", + strerror_win32(status, &gc), status, if_index); } } } @@ -2855,7 +2854,7 @@ ret = (ack.error_number == ERROR_OBJECT_ALREADY_EXISTS) ? RTA_EEXIST : RTA_ERROR; if (ret == RTA_ERROR) { - msg(M_WARN, "ERROR: route %s failed using service: %s [status=%u if_index=%d]", + msg(M_WARN, "ERROR: route %s failed using service: %s [status=%u if_index=%lu]", (add ? "addition" : "deletion"), strerror_win32(ack.error_number, &gc), ack.error_number, rt->iface.index); } @@ -2869,17 +2868,12 @@ return ret; } -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wsign-compare" -#endif - /* Returns RTA_SUCCESS on success, RTA_EEXIST if route exists, RTA_ERROR on error */ static int do_route_ipv4_service(const bool add, const struct route_ipv4 *r, const struct tuntap *tt) { DWORD if_index = windows_route_find_if_index(r, tt); - if (if_index == ~0) + if (if_index == TUN_ADAPTER_INDEX_INVALID) { return RTA_ERROR; } @@ -3023,10 +3017,6 @@ return status; } -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic pop -#endif - /* Returns RTA_SUCCESS on success, RTA_EEXIST if route exists, RTA_ERROR on error */ static int add_route_service(const struct route_ipv4 *r, const struct tuntap *tt) @@ -3057,14 +3047,14 @@ format_route_entry(const MIB_IPFORWARDROW *r, struct gc_arena *gc) { struct buffer out = alloc_buf_gc(256, gc); - buf_printf(&out, "%s %s %s p=%d i=%d t=%d pr=%d a=%d h=%d m=%d/%d/%d/%d/%d", + buf_printf(&out, "%s %s %s p=%lu i=%lu t=%lu pr=%lu a=%lu h=%lu m=%lu/%lu/%lu/%lu/%lu", print_in_addr_t(r->dwForwardDest, IA_NET_ORDER, gc), print_in_addr_t(r->dwForwardMask, IA_NET_ORDER, gc), - print_in_addr_t(r->dwForwardNextHop, IA_NET_ORDER, gc), (int)r->dwForwardPolicy, - (int)r->dwForwardIfIndex, (int)r->dwForwardType, (int)r->dwForwardProto, - (int)r->dwForwardAge, (int)r->dwForwardNextHopAS, (int)r->dwForwardMetric1, - (int)r->dwForwardMetric2, (int)r->dwForwardMetric3, (int)r->dwForwardMetric4, - (int)r->dwForwardMetric5); + print_in_addr_t(r->dwForwardNextHop, IA_NET_ORDER, gc), r->dwForwardPolicy, + r->dwForwardIfIndex, r->dwForwardType, r->dwForwardProto, + r->dwForwardAge, r->dwForwardNextHopAS, r->dwForwardMetric1, + r->dwForwardMetric2, r->dwForwardMetric3, r->dwForwardMetric4, + r->dwForwardMetric5); return BSTR(&out); } diff --git a/src/openvpn/tun.c b/src/openvpn/tun.c index 7f96602..64e3b45 100644 --- a/src/openvpn/tun.c +++ b/src/openvpn/tun.c @@ -158,7 +158,7 @@ if (ack.error_number != NO_ERROR) { - msg(M_WARN, "TUN: %s address failed using service: %s [status=%u if_index=%d]", + msg(M_WARN, "TUN: %s address failed using service: %s [status=%u if_index=%lu]", (add ? "adding" : "deleting"), strerror_win32(ack.error_number, &gc), ack.error_number, addr.iface.index); goto out; @@ -220,7 +220,7 @@ strncpy(dns.domains + dstlen, o->domain_search_list[i], srclen + 1); } - msg(D_LOW, "%s DNS domains on '%s' (if_index = %d) using service", + msg(D_LOW, "%s DNS domains on '%s' (if_index = %lu) using service", (add ? "Setting" : "Deleting"), dns.iface.name, dns.iface.index); if (!send_msg_iservice(o->msg_channel, &dns, sizeof(dns), &ack, "TUN")) { @@ -289,7 +289,7 @@ } } - msg(D_LOW, "%s %s dns servers on '%s' (if_index = %d) using service", + msg(D_LOW, "%s %s dns servers on '%s' (if_index = %lu) using service", (add ? "Setting" : "Deleting"), ip_proto_name, dns.iface.name, dns.iface.index); if (!send_msg_iservice(pipe, &dns, sizeof(dns), &ack, "TUN")) @@ -346,7 +346,7 @@ wins.addr[i].ipv4.s_addr = htonl(tt->options.wins[i]); } - msg(D_LOW, "%s WINS servers on '%s' (if_index = %d) using service", + msg(D_LOW, "%s WINS servers on '%s' (if_index = %lu) using service", (add ? "Setting" : "Deleting"), wins.iface.name, wins.iface.index); if (!send_msg_iservice(pipe, &wins, sizeof(wins), &ack, "TUN")) @@ -357,8 +357,8 @@ if (ack.error_number != NO_ERROR) { msg(M_WARN, "TUN: %s WINS failed using service: %s [status=%u if_name=%s]", - (add ? "adding" : "deleting"), strerror_win32(ack.error_number, &gc), ack.error_number, - wins.iface.name); + (add ? "adding" : "deleting"), strerror_win32(ack.error_number, &gc), + ack.error_number, wins.iface.name); goto out; } @@ -398,13 +398,13 @@ if (ack.error_number != NO_ERROR) { - msg(M_NONFATAL, "TUN: setting %s mtu using service failed: %s [status=%u if_index=%d]", + msg(M_NONFATAL, "TUN: setting %s mtu using service failed: %s [status=%u if_index=%lu]", family_name, strerror_win32(ack.error_number, &gc), ack.error_number, mtu_msg.iface.index); } else { - msg(M_INFO, "%s MTU set to %d on interface %d using service", family_name, mtu, + msg(M_INFO, "%s MTU set to %d on interface %lu using service", family_name, mtu, mtu_msg.iface.index); ret = true; } @@ -3428,7 +3428,7 @@ if (dev_info_set == INVALID_HANDLE_VALUE) { err = GetLastError(); - msg(M_FATAL, "Error [%u] opening device information set key: %s", (unsigned int)err, + msg(M_FATAL, "Error [%lu] opening device information set key: %s", err, strerror_win32(err, gc)); } @@ -4111,7 +4111,7 @@ if ((status = GetAdaptersInfo(NULL, &size)) != ERROR_BUFFER_OVERFLOW) { - msg(M_INFO, "GetAdaptersInfo #1 failed (status=%u) : %s", (unsigned int)status, + msg(M_INFO, "GetAdaptersInfo #1 failed (status=%lu) : %s", status, strerror_win32(status, gc)); } else @@ -4119,7 +4119,7 @@ pi = (PIP_ADAPTER_INFO)gc_malloc(size, false, gc); if ((status = GetAdaptersInfo(pi, &size)) != NO_ERROR) { - msg(M_INFO, "GetAdaptersInfo #2 failed (status=%u) : %s", (unsigned int)status, + msg(M_INFO, "GetAdaptersInfo #2 failed (status=%lu) : %s", status, strerror_win32(status, gc)); pi = NULL; } @@ -4138,19 +4138,19 @@ { if ((status = GetPerAdapterInfo(index, NULL, &size)) != ERROR_BUFFER_OVERFLOW) { - msg(M_INFO, "GetPerAdapterInfo #1 failed (status=%u) : %s", (unsigned int)status, + msg(M_INFO, "GetPerAdapterInfo #1 failed (status=%lu) : %s", status, strerror_win32(status, gc)); } else { pi = (PIP_PER_ADAPTER_INFO)gc_malloc(size, false, gc); - if ((status = GetPerAdapterInfo((ULONG)index, pi, &size)) == ERROR_SUCCESS) + if ((status = GetPerAdapterInfo(index, pi, &size)) == ERROR_SUCCESS) { return pi; } else { - msg(M_INFO, "GetPerAdapterInfo #2 failed (status=%u) : %s", (unsigned int)status, + msg(M_INFO, "GetPerAdapterInfo #2 failed (status=%lu) : %s", status, strerror_win32(status, gc)); } } @@ -4167,7 +4167,7 @@ if ((status = GetInterfaceInfo(NULL, &size)) != ERROR_INSUFFICIENT_BUFFER) { - msg(M_INFO, "GetInterfaceInfo #1 failed (status=%u) : %s", (unsigned int)status, + msg(M_INFO, "GetInterfaceInfo #1 failed (status=%lu) : %s", status, strerror_win32(status, gc)); } else @@ -4179,7 +4179,7 @@ } else { - msg(M_INFO, "GetInterfaceInfo #2 failed (status=%u) : %s", (unsigned int)status, + msg(M_INFO, "GetInterfaceInfo #2 failed (status=%lu) : %s", status, strerror_win32(status, gc)); } } @@ -4456,8 +4456,8 @@ list = list->Next; } - dmsg(D_ROUTE_DEBUG, "DEBUG: IP Locate: ip=%s nm=%s index=%d count=%d metric=%d", - print_in_addr_t(ip, 0, &gc), print_in_addr_t(highest_netmask, 0, &gc), (int)ret, + dmsg(D_ROUTE_DEBUG, "DEBUG: IP Locate: ip=%s nm=%s index=%lu count=%d metric=%d", + print_in_addr_t(ip, 0, &gc), print_in_addr_t(highest_netmask, 0, &gc), ret, count ? *count : -1, lowest_metric); if (ret == TUN_ADAPTER_INDEX_INVALID && count) @@ -4526,7 +4526,7 @@ DWORD status; const DWORD context = ip->Context; - if ((status = DeleteIPAddress((ULONG)context)) == NO_ERROR) + if ((status = DeleteIPAddress(context)) == NO_ERROR) { msg(M_INFO, "Successfully deleted previously set dynamic IP/netmask: %s/%s", ip->IpAddress.String, ip->IpMask.String); @@ -4537,8 +4537,8 @@ if (strcmp(ip->IpAddress.String, empty) || strcmp(ip->IpMask.String, empty)) { msg(M_INFO, - "NOTE: could not delete previously set dynamic IP/netmask: %s/%s (status=%u)", - ip->IpAddress.String, ip->IpMask.String, (unsigned int)status); + "NOTE: could not delete previously set dynamic IP/netmask: %s/%s (status=%lu)", + ip->IpAddress.String, ip->IpMask.String, status); } } ip = ip->Next; @@ -4634,7 +4634,7 @@ show_adapter(msglvl_t msglevel, const IP_ADAPTER_INFO *a, struct gc_arena *gc) { msg(msglevel, "%s", a->Description); - msg(msglevel, " Index = %d", (int)a->Index); + msg(msglevel, " Index = %lu", a->Index); msg(msglevel, " GUID = %s", a->AdapterName); msg(msglevel, " IP = %s", format_ip_addr_string(&a->IpAddressList, gc)); msg(msglevel, " MAC = %s", format_hex_ex(a->Address, a->AddressLength, 0, 1, ":", gc)); @@ -4810,8 +4810,8 @@ else { msg(M_WARN, - "NOTE: Release of DHCP-assigned IP address lease on TAP-Windows adapter failed: %s (code=%u)", - strerror_win32(status, &gc), (unsigned int)status); + "NOTE: Release of DHCP-assigned IP address lease on TAP-Windows adapter failed: %s (code=%lu)", + strerror_win32(status, &gc), status); } } @@ -4851,8 +4851,8 @@ else { msg(M_WARN, - "WARNING: Failed to renew DHCP IP address lease on TAP-Windows adapter: %s (code=%u)", - strerror_win32(status, &gc), (unsigned int)status); + "WARNING: Failed to renew DHCP IP address lease on TAP-Windows adapter: %s (code=%lu)", + strerror_win32(status, &gc), status); } } gc_free(&gc); @@ -5215,12 +5215,12 @@ if (ack.error_number != NO_ERROR) { - msg(M_NONFATAL, "TUN: enabling dhcp using service failed: %s [status=%u if_index=%d]", + msg(M_NONFATAL, "TUN: enabling dhcp using service failed: %s [status=%u if_index=%lu]", strerror_win32(ack.error_number, &gc), ack.error_number, dhcp.iface.index); } else { - msg(M_INFO, "DHCP enabled on interface %d using service", dhcp.iface.index); + msg(M_INFO, "DHCP enabled on interface %lu using service", dhcp.iface.index); ret = true; } @@ -5510,7 +5510,7 @@ /* flush arp cache */ if (tt->backend_driver == WINDOWS_DRIVER_TAP_WINDOWS6 && index != TUN_ADAPTER_INDEX_INVALID) { - DWORD status = -1; + DWORD status = (DWORD)-1; if (tt->options.msg_channel) { @@ -5534,7 +5534,7 @@ { msg(M_INFO, "Successful ARP Flush on interface [%lu] %s", index, device_guid); } - else if (status != -1) + else if (status != (DWORD)-1) { msg(D_TUNTAP_INFO, "NOTE: FlushIpNetTable failed on interface [%lu] %s (status=%lu) : %s", index, @@ -6232,11 +6232,12 @@ if (tt->ipapi_context_defined) { DWORD status; + if ((status = DeleteIPAddress(tt->ipapi_context)) != NO_ERROR) { msg(M_WARN, - "Warning: DeleteIPAddress[%u] failed on TAP-Windows adapter, status=%u : %s", - (unsigned int)tt->ipapi_context, (unsigned int)status, strerror_win32(status, &gc)); + "Warning: DeleteIPAddress[%lu] failed on TAP-Windows adapter, status=%lu : %s", + tt->ipapi_context, status, strerror_win32(status, &gc)); } } diff --git a/src/openvpn/tun.h b/src/openvpn/tun.h index 4d6dfbb..ecb5e88 100644 --- a/src/openvpn/tun.h +++ b/src/openvpn/tun.h @@ -61,8 +61,6 @@ #if defined(_WIN32) || defined(TARGET_ANDROID) || defined(DHCP_UNIT_TEST) -#define TUN_ADAPTER_INDEX_INVALID ((DWORD)-1) - /* time constants for --ip-win32 adaptive */ #define IPW32_SET_ADAPTIVE_DELAY_WINDOW 300 #define IPW32_SET_ADAPTIVE_TRY_NETSH 20 @@ -230,7 +228,7 @@ in_addr_t adapter_netmask; /* Windows adapter index for TAP-Windows adapter, - * ~0 if undefined */ + * TUN_ADAPTER_INDEX_INVALID if undefined */ DWORD adapter_index; int standby_iter; diff --git a/src/openvpn/win32.c b/src/openvpn/win32.c index ac449fd..b2a7331 100644 --- a/src/openvpn/win32.c +++ b/src/openvpn/win32.c @@ -1185,7 +1185,7 @@ if (ack.error_number != NO_ERROR) { msg(M_WARN, - "WFP block: %s block filters using service failed: %s [status=0x%x if_index=%d]", + "WFP block: %s block filters using service failed: %s [status=0x%x if_index=%lu]", (add ? "adding" : "deleting"), strerror_win32(ack.error_number, &gc), ack.error_number, data.iface.index); goto out; diff --git a/src/openvpnserv/interactive.c b/src/openvpnserv/interactive.c index 09c709e..b50aeb3 100644 --- a/src/openvpnserv/interactive.c +++ b/src/openvpnserv/interactive.c @@ -96,7 +96,7 @@ typedef struct { HANDLE engine; - int index; + DWORD index; int metric_v4; int metric_v6; } wfp_block_data_t; @@ -584,7 +584,7 @@ addr_row->Address = sockaddr_inet(msg->family, &msg->address); addr_row->OnLinkPrefixLength = (UINT8)msg->prefix_len; - if (msg->iface.index != -1) + if (msg->iface.index != TUN_ADAPTER_INDEX_INVALID) { addr_row->InterfaceIndex = msg->iface.index; } @@ -667,7 +667,7 @@ fwd_row->DestinationPrefix.PrefixLength = (UINT8)msg->prefix_len; fwd_row->NextHop = sockaddr_inet(msg->family, &msg->gateway); - if (msg->iface.index != -1) + if (msg->iface.index != TUN_ADAPTER_INDEX_INVALID) { fwd_row->InterfaceIndex = msg->iface.index; } @@ -1010,7 +1010,7 @@ * if action = "set" then "static" is added before $addr */ static DWORD -netsh_wins_cmd(const wchar_t *action, int if_index, const wchar_t *addr) +netsh_wins_cmd(const wchar_t *action, DWORD if_index, const wchar_t *addr) { DWORD err = 0; int timeout = 30000; /* in msec */ @@ -1036,7 +1036,7 @@ /* cmd template: * netsh interface ip $action wins $if_name $static $addr */ - const wchar_t *fmt = L"netsh interface ip %ls wins %d %ls %ls"; + const wchar_t *fmt = L"netsh interface ip %ls wins %lu %ls %ls"; /* max cmdline length in wchars -- include room for worst case and some */ size_t ncmdline = wcslen(fmt) + 11 /*if_index*/ + wcslen(action) + wcslen(addr) @@ -2984,7 +2984,7 @@ */ } - int *if_index = malloc(sizeof(msg->iface.index)); + PDWORD if_index = malloc(sizeof(msg->iface.index)); if (if_index) { *if_index = msg->iface.index; @@ -3017,7 +3017,7 @@ /* cmd template: * netsh interface ipv4 set address name=$if_index source=dhcp */ - const wchar_t *fmt = L"netsh interface ipv4 set address name=\"%d\" source=dhcp"; + const wchar_t *fmt = L"netsh interface ipv4 set address name=\"%lu\" source=dhcp"; /* max cmdline length in wchars -- include room for if index: * 10 chars for 32 bit int in decimal and +1 for NUL @@ -3250,7 +3250,7 @@ break; case undo_wins: - netsh_wins_cmd(L"delete", *(int *)item->data, NULL); + netsh_wins_cmd(L"delete", *(PDWORD)item->data, NULL); break; case wfp_block: