From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: passt.top; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=FmcHcZ5f; dkim-atps=neutral Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by passt.top (Postfix) with ESMTPS id 8B06C5A0272 for ; Thu, 02 Apr 2026 22:34:01 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775162040; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UriYnDIZEeyhq0HV+CeGMxuq3OeFANG6+0ZCvLux53Q=; b=FmcHcZ5fQNbIwaYvmNMf/7qBFyziyH032Kcxuwcf9miWl+1Gk765pi1CcyFgYsCnoocLtt CYaDNZCe++BqjD7i1qhjmO744uPyXf3Rf20LvAjAbIEteOJmgsXJE8S8x2OPvxLsLSgVua Dtdr700xOIhHfwzBDBoRCZew3HOHn9M= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-82-q87cbLuDM8yhdLFhsIM5PA-1; Thu, 02 Apr 2026 16:33:59 -0400 X-MC-Unique: q87cbLuDM8yhdLFhsIM5PA-1 X-Mimecast-MFC-AGG-ID: q87cbLuDM8yhdLFhsIM5PA_1775162038 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-43cfbe041b2so1775803f8f.1 for ; Thu, 02 Apr 2026 13:33:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775162038; x=1775766838; h=date:content-transfer-encoding:mime-version:organization:references :in-reply-to:message-id:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=UriYnDIZEeyhq0HV+CeGMxuq3OeFANG6+0ZCvLux53Q=; b=Lhgs6Lg0MT6S4xPqUsMrEdgLdK+HSsZIXh2ZF1bAfWUnFngf2PP9CUVvavN1gOHuD0 PFA3rUbuClmtdGwuUreBfOV6H9C7uM5L5I3+dutw0I3C91swAS58rWOkJtHboFXdYk9U Thoqi5BGCERV/QxOwT5fAsKUSQPCDZM3CRTbMX5Qn893SrElpv7k5u89Ij5HmZXGCIb+ XIvPSlYLgyW/b3t5gpgeUYdyc04Zc4kVcV5kzm+XenkIkJTjjRj+ZLD171mU5UA8A+9A HYBl67bpCceXGHIBpxNnZx45GyT4kdapm5qcW/u9oIFgUZPu2zRzSUCe5nuOgwL0ECIt ClZg== X-Forwarded-Encrypted: i=1; AJvYcCXe01PmiZjBDl9ZJGCNqFjd4dOzOxFE9Rm+KR/rfVJ0ntclEpKaf4bSvhKP894L5WCuS4vMK9YHiD8=@passt.top X-Gm-Message-State: AOJu0YwI3EMjvA9muWar6nrjZwqY2P527YnbHcvlpgGVi+ZbO2JqJszR fJcWG33iIOtwIL1JXmPd9zRS8TtwvQE8nhlfJuevCDEGEx0II1MoP6ZRMkSoP2EcIcGu+V6qQgR zV8L9ZRzhTViqGe96N1w8HwK3x4SjtLjqgmPYBkxYHmfh/xwNPx2erA== X-Gm-Gg: AeBDieuvLaK0fD0sheKXSB6J+PQjhnvPYLQi4EKcxU4ZE/yX6+VFEm4Tqpg5kxMIT8p lVYAlkJNFJc9gNL/CSLgjgkZdkX/6k94u2WGbOW5s+CRCotmGL5/Zd8J1OcbkkswG0OCFRkx2Q8 Cjun+r1o5hwCv0G07ayIboZxGNS9IYLxtoFr9eGfBEuZLmTx85B8cahIpFiNWtm6s/XxUyQ1Iso jZ68asXmbLBlSsRfVwSWBVylAxs4RCjXl8D3mHH9IRg1iXMfvpmecNdYo31ZtZ5O7xM3iPvkPUo /lcDMbTWUJYmPBWmy0D0xslX6QW/S9WnM+LjIYg8/NbEtF8uXPvrHWz9evUUI2Zc1aLEEOVYVwz kzKffEC5Z5NLBrQfKLNuYzqPv148Nz0WjOcbWx2AwJZ1UFHt97g== X-Received: by 2002:a5d:5f56:0:b0:43b:5091:39db with SMTP id ffacd0b85a97d-43d28fe1d79mr962877f8f.13.1775162038068; Thu, 02 Apr 2026 13:33:58 -0700 (PDT) X-Received: by 2002:a5d:5f56:0:b0:43b:5091:39db with SMTP id ffacd0b85a97d-43d28fe1d79mr962830f8f.13.1775162037554; Thu, 02 Apr 2026 13:33:57 -0700 (PDT) Received: from maya.myfinge.rs (ifcgrfdd.trafficplex.cloud. [176.103.220.4]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d1e2a71f7sm11739137f8f.1.2026.04.02.13.33.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Apr 2026 13:33:57 -0700 (PDT) From: Stefano Brivio To: Jon Maloy Subject: Re: [PATCH v6 02/13] ip: Introduce unified multi-address data structures Message-ID: <20260402223355.24528e0f@elisabeth> In-Reply-To: <20260330235710.3b0570fe@elisabeth> References: <20260322004333.365713-1-jmaloy@redhat.com> <20260322004333.365713-3-jmaloy@redhat.com> <20260330235710.3b0570fe@elisabeth> Organization: Red Hat X-Mailer: Claws Mail 4.2.0 (GTK 3.24.49; x86_64-pc-linux-gnu) MIME-Version: 1.0 Date: Thu, 02 Apr 2026 22:33:56 +0200 (CEST) X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: qXjNnEq9L06sBoQZhJKQ8JbE3vAdvRb33fiMl2kos7E_1775162038 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Message-ID-Hash: AJ6CIG7HNHHXEESFBJEI6CDIU6VNCR2Q X-Message-ID-Hash: AJ6CIG7HNHHXEESFBJEI6CDIU6VNCR2Q X-MailFrom: sbrivio@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: david@gibson.dropbear.id.au, passt-dev@passt.top X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: On Mon, 30 Mar 2026 23:57:10 +0200 Stefano Brivio wrote: > On Sat, 21 Mar 2026 20:43:22 -0400 > Jon Maloy wrote: > > [...] > > > +/** > > + * fwd_get_addr() - Get guest address entry matching criteria > > + * @c: Execution context > > + * @af: Address family (AF_INET, AF_INET6, or 0 for any) > > + * @incl: Flags that must be present (any-match) > > + * @excl: Flags that must not be present > > + * > > + * Return: first address entry matching criteria, or NULL > > + */ > > +const struct guest_addr *fwd_get_addr(const struct ctx *c, sa_family_t af, > > + uint8_t incl, uint8_t excl) > > +{ > > + const struct guest_addr *a; > > + > > + for_each_addr(a, c, af) { > > + if (incl && !(a->flags & incl)) > > + continue; > > + if (a->flags & excl) > > + continue; > > Slightly less generic, but maybe good enough for this purpose: you > could admit a set of flags, or a negation of a flag (for example > ~CONF_ADDR_USER), in a single argument. > > See how conn_flag_do() does that. Here it would be something like: > > if (flags & (flags - 1)) { > if (a->flags & ~flag) > continue; > } else { > if (!(a->flags & flag)) > continue; > } > > ...it makes callers more readable in my opinion, for example: > > a = fwd_get_addr(c, AF_INET6, ~CONF_ADDR_LINKLOCAL); > > which makes it entirely clear you're selecting all addresses that are > link-local, compared to: > > a = fwd_get_addr(c, AF_INET6, 0, CONF_ADDR_LINKLOCAL); > > which forces the reader to look up the prototype. > > But again it's less generic, you can't exclude multiple flags like > that. Unless... you define a reserved bit which is always 0 in that > uint8_t, so that if you pass it as 1, you can conclude a negated set of > flags was passed. ...at least until I finally reached 9/13 where you pass both matching and non-matching flags, and my trick doesn't work anymore. Oops, sorry. -- Stefano