Index | Thread | Search

From:
Klemens Nanni <kn@openbsd.org>
Subject:
openfact: pull fix for new interfaces.*.flags fact
To:
ports <ports@openbsd.org>
Cc:
Stuart Henderson <stu@spacehopper.org>, Christian Weisgerber <naddy@mips.inka.de>
Date:
Sun, 19 Apr 2026 18:29:29 +0000

Download raw body.

Thread
Not critical, but trivial and nice to have for release.

Starting with 5.6.0 interface flags from ifconfig(8) output are available,
but the code creating those facts was too strict by loooking for decimal
values.

But flags values be hexadecimal, so the new fact did not appear for those.

Upstream already merged the fix below (incl. more tests);  result:

	 $ ifconfig vlan42 | grep flags
	 vlan42: a08843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF6,AUTOCONF4 mtu 1500
	 $ facter networking.interfaces.vlan42.flags | jq -c
	-
	+["UP","BROADCAST","RUNNING","SIMPLEX","MULTICAST","AUTOCONF6","AUTOCONF4"]

OK for 7.9?


Index: Makefile
===================================================================
RCS file: /cvs/ports/sysutils/ruby-openfact/Makefile,v
diff -u -p -r1.13 Makefile
--- Makefile	11 Apr 2026 14:17:39 -0000	1.13
+++ Makefile	19 Apr 2026 18:03:21 -0000
@@ -3,6 +3,7 @@
 
 COMMENT =		system inventory tool
 DISTNAME =		openfact-5.6.0
+REVISION =		0
 CATEGORIES =		sysutils
 
 HOMEPAGE =		https://github.com/OpenVoxProject/openfact/
Index: patches/patch-lib_facter_resolvers_networking_rb
===================================================================
RCS file: patches/patch-lib_facter_resolvers_networking_rb
diff -N patches/patch-lib_facter_resolvers_networking_rb
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-lib_facter_resolvers_networking_rb	19 Apr 2026 18:11:44 -0000
@@ -0,0 +1,15 @@
+post-5.6.0 merged "interfaces: parse flags radix correctly"
+https://github.com/OpenVoxProject/openfact/pull/110
+
+Index: lib/facter/resolvers/networking.rb
+--- lib/facter/resolvers/networking.rb.orig
++++ lib/facter/resolvers/networking.rb
+@@ -64,7 +64,7 @@ module Facter
+         end
+ 
+         def extract_flags(raw_data, parsed_interface_data)
+-          flags = raw_data.match(/flags=\d+<(.+)>/)&.captures&.first
++          flags = raw_data.match(/flags=\h+<(.+)>/)&.captures&.first
+           parsed_interface_data[:flags] = flags.split(',') unless flags.nil?
+         end
+