<feed xmlns='http://www.w3.org/2005/Atom'>
<title>vyos-1x.git/src/etc, branch fix/T8955-http-api-verify-tls</title>
<subtitle>VyOS command definitions, scripts, and utilities (mirror of https://github.com/vyos/vyos-1x.git)
</subtitle>
<id>https://git.amelek.net/vyos/vyos-1x.git/atom?h=fix%2FT8955-http-api-verify-tls</id>
<link rel='self' href='https://git.amelek.net/vyos/vyos-1x.git/atom?h=fix%2FT8955-http-api-verify-tls'/>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-1x.git/'/>
<updated>2026-09-24T15:21:55+00:00</updated>
<entry>
<title>cli: T9077: quote expansions and send DSR to /dev/tty</title>
<updated>2026-09-24T15:21:55+00:00</updated>
<author>
<name>Brad Kollmyer</name>
<email>bradk@vitalsoft.com</email>
</author>
<published>2026-07-13T17:23:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-1x.git/commit/?id=412dfb9e933b9811b0731a60e4412af313d190ad'/>
<id>urn:sha1:412dfb9e933b9811b0731a60e4412af313d190ad</id>
<content type='text'>
Harden the quote-aware '?' handler: quote readline buffer expansions and
write the DSR query to /dev/tty so help still works when stdout is redirected.
</content>
</entry>
<entry>
<title>cli: T9077: insert literal '?' inside quoted values instead of triggering help</title>
<updated>2026-09-24T15:21:55+00:00</updated>
<author>
<name>Brad Kollmyer</name>
<email>bradk@vitalsoft.com</email>
</author>
<published>2026-07-11T00:20:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-1x.git/commit/?id=1ec6e664afc29957d9f3f596fd4433b4ebb1f7a7'/>
<id>urn:sha1:1ec6e664afc29957d9f3f596fd4433b4ebb1f7a7</id>
<content type='text'>
The '?' key is a raw readline binding (possible-completions), so a
literal question mark can never be typed into a value: readline
intercepts the keystroke before bash parsing begins and quoting cannot
protect it. Values like remote-group URLs with query strings get
silently corrupted ('.../blacklist?key=x' is stored as
'.../blacklistkey=x') with no error at any stage.

Rebind '?' to a bind -x handler that scans the line left of the cursor
for an open single/double quote or a pending backslash escape. Inside a
quote or escape the key self-inserts; otherwise it triggers the
standard help via a DSR round-trip (printf '\e[5n' with the terminal's
reply ESC [ 0 n bound to possible-completions), keeping the help path
and output identical to the previous behavior.

'set terminal key query-help enable' now restores the quote-aware
handler instead of the raw binding; 'disable' keeps its existing
self-insert override, which takes precedence at login as before.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>journald: T9183: stop forwarding journal entries to syslog</title>
<updated>2026-09-17T20:59:55+00:00</updated>
<author>
<name>Robert Navarro</name>
<email>crshman@gmail.com</email>
</author>
<published>2026-09-17T20:59:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-1x.git/commit/?id=011b53cbfe8a273a931069ea592ace7a5aa18dbc'/>
<id>urn:sha1:011b53cbfe8a273a931069ea592ace7a5aa18dbc</id>
<content type='text'>
rsyslog reads the journal directly through imjournal (rsyslog.conf.j2 loads
it alongside imuxsock), so journald forwarding the same entries to /dev/log
delivers every non-kernel message twice. Both copies land in /var/log files
and go to every remote syslog target, differing only in PID formatting.

Ship the setting as a journald drop-in here rather than as a full
journald.conf in vyos-build, so the image carries only the settings VyOS
actually overrides. MaxLevelSyslog=debug comes across from that file; the
rest of it was commented-out systemd defaults.

Tested on a live 2026.09.11 router: with the drop-in in place a single
logger event produces one entry, remote targets receive one copy, and
kernel messages (imklog) and HAProxy's own socket are unaffected.
</content>
</entry>
<entry>
<title>vbash: T7575: Trim trailing whitespace</title>
<updated>2026-09-09T22:36:33+00:00</updated>
<author>
<name>sarthurdev</name>
<email>965089+sarthurdev@users.noreply.github.com</email>
</author>
<published>2026-09-09T22:05:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-1x.git/commit/?id=1b76a46ad27fca9e9329386491a7cab3bcc6e84b'/>
<id>urn:sha1:1b76a46ad27fca9e9329386491a7cab3bcc6e84b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>vbash: T7575: Prevent re-declare readonly variable</title>
<updated>2026-09-09T22:36:33+00:00</updated>
<author>
<name>sarthurdev</name>
<email>965089+sarthurdev@users.noreply.github.com</email>
</author>
<published>2026-09-09T22:06:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-1x.git/commit/?id=610d2d876120b13f990fdd183a8fc1aa38229b21'/>
<id>urn:sha1:610d2d876120b13f990fdd183a8fc1aa38229b21</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge pull request #5446 from c-po/dhcp-static-route-flakiness</title>
<updated>2026-09-08T16:00:08+00:00</updated>
<author>
<name>Daniil Baturin</name>
<email>daniil@vyos.io</email>
</author>
<published>2026-09-08T16:00:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-1x.git/commit/?id=438463db0d290e58cb733893478cdb4537d922f8'/>
<id>urn:sha1:438463db0d290e58cb733893478cdb4537d922f8</id>
<content type='text'>
static: T9278: reconcile FRR config after every DHCP lease event</content>
</entry>
<entry>
<title>sysctl: T9283: stop low-level Kernel messages on the console</title>
<updated>2026-09-06T15:33:18+00:00</updated>
<author>
<name>Christian Breunig</name>
<email>christian@breunig.cc</email>
</author>
<published>2026-09-06T15:33:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-1x.git/commit/?id=fad6408ed13650ccc8c042fe9d85e614a841eac1'/>
<id>urn:sha1:fad6408ed13650ccc8c042fe9d85e614a841eac1</id>
<content type='text'>
kernel.printk was set to "4 4 1 7" by the vyos-build image build hook
08-sysconf.chroot, which rewrote the Debian conffile /etc/sysctl.conf
during ISO assembly. Move the setting to where the remaining kernel.*
defaults live so the image build no longer has to touch a Debian
conffile and the hook can be dropped.
</content>
</entry>
<entry>
<title>dhcp: T9278: do not append the VRF option twice to ip route commands</title>
<updated>2026-09-06T14:16:37+00:00</updated>
<author>
<name>Christian Breunig</name>
<email>christian@breunig.cc</email>
</author>
<published>2026-09-06T14:16:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-1x.git/commit/?id=599ebc0e23ec8f4415a6192d34d562cb663e4174'/>
<id>urn:sha1:599ebc0e23ec8f4415a6192d34d562cb663e4174</id>
<content type='text'>
01-vyos-cleanup builds its route deletion with an explicit "vrf &lt;name&gt;". The ip()
wrapper caught that command and delroute() appended $VRF_OPTION again, so both
"ip route show" and "ip route del" ran with "vrf red vrf red". The FRR-down
kernel fallback had the same flaw.

Add vrf_option(), yielding $VRF_OPTION only when the arguments carry no "vrf"
token, and use it in both places. The append cannot simply be dropped, as
delroute() is also reached without a VRF. iptovtysh() parses single fields and
was never affected.
</content>
</entry>
<entry>
<title>dhcp: T9278: move DHCP client hook tracing to a gated debug level</title>
<updated>2026-09-06T14:16:37+00:00</updated>
<author>
<name>Christian Breunig</name>
<email>christian@breunig.cc</email>
</author>
<published>2026-09-06T14:16:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-1x.git/commit/?id=3fc7b6e052402dba9bf13bbff54ff6d99a87fd8e'/>
<id>urn:sha1:3fc7b6e052402dba9bf13bbff54ff6d99a87fd8e</id>
<content type='text'>
Each lease event emitted some fifteen daemon.info lines tracing internal steps
rather than recording a change. Add a "debug" level to logmsg(), silenced unless
/tmp/vyos.dhclient.debug exists, following the flag file convention used for FRR
and ifconfig. Demoting alone would not help, as journald shows all priorities by
default. Fifteen tracing messages move to debug; the sixteen recording an actual
change stay at info.

Also fix logmsg(): "warn" had no case arm although it is used, and the global
LOG_PRIO leaked the preceding call's priority. It is now local.
</content>
</entry>
<entry>
<title>static: T9278: reconcile FRR config after every DHCP lease event</title>
<updated>2026-09-04T20:14:45+00:00</updated>
<author>
<name>Christian Breunig</name>
<email>christian@breunig.cc</email>
</author>
<published>2026-09-04T20:14:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-1x.git/commit/?id=9a7d5b27cd908473b7cd9e16fc0d1bbe7e983d2e'/>
<id>urn:sha1:9a7d5b27cd908473b7cd9e16fc0d1bbe7e983d2e</id>
<content type='text'>
The default route derived from "interfaces &lt;type&gt; &lt;ifname&gt; address dhcp" is
rendered from the DHCP lease file, so it is only known at lease time. Until now
the sole runtime path into staticd was the one-shot vtysh injection in
dhclient-enter-hooks.d/03-vyos-ipwrapper. That injection races the FRR reload of
the very commit which started the DHCP client: dhclient runs with "-nw", thus the
commit does not wait for a lease, and when BOUND arrives mid-reload frr_alive()
can report FRR as down. The route is then installed into the kernel only and FRR
never learns about it. Nothing recovers afterwards, as FRRender.generate()
short-circuits on an unchanged configuration dict.

The self-healing re-render used by "protocols static route &lt;prefix&gt;
dhcp-interface" was gated on /tmp/static_dhcp_interfaces, which never lists plain
"address dhcp" interfaces - protocols_static.py does not even run on an
interface-only commit, as no config-mode dependency points to it.

Derive the DHCP dependent interface list from the configuration dict itself, both
for the default VRF and for every named VRF, and use it for FRR change
detection. Drop the interface list gate in the dhclient exit hook so any lease
event requests a re-render.

Also poll for the lease and for the rendered route in the affected smoketests
instead of relying on a fixed sleep.
</content>
</entry>
</feed>
