<feed xmlns='http://www.w3.org/2005/Atom'>
<title>vyos.vyos.git/plugins, branch fix/icmp-parse-attr-bug</title>
<subtitle>Ansible Network Collection for VyOS (mirror of https://github.com/vyos/vyos.vyos.git)
</subtitle>
<id>https://git.amelek.net/vyos/vyos.vyos.git/atom?h=fix%2Ficmp-parse-attr-bug</id>
<link rel='self' href='https://git.amelek.net/vyos/vyos.vyos.git/atom?h=fix%2Ficmp-parse-attr-bug'/>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/'/>
<updated>2026-06-25T20:05:34+00:00</updated>
<entry>
<title>Merge branch 'main' into fix/icmp-parse-attr-bug</title>
<updated>2026-06-25T20:05:34+00:00</updated>
<author>
<name>omnom62</name>
<email>75066712+omnom62@users.noreply.github.com</email>
</author>
<published>2026-06-25T20:05:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=921636e10fd8a4c765aa16049a4e45c2faca08e7'/>
<id>urn:sha1:921636e10fd8a4c765aa16049a4e45c2faca08e7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>T2295: vyos_user: quote plaintext-password in generated set commands (#480)</title>
<updated>2026-06-25T19:30:57+00:00</updated>
<author>
<name>Stavros Kroustouris</name>
<email>kroustou@users.noreply.github.com</email>
</author>
<published>2026-06-25T19:30:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=6d7a2184e970624f74f333931f7f70a1f900f7b5'/>
<id>urn:sha1:6d7a2184e970624f74f333931f7f70a1f900f7b5</id>
<content type='text'>
* vyos_user: quote plaintext-password in generated set commands

VyOS requires quoted values for passwords with special characters.
Align with encrypted-password and integration test conventions.

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;

* T2295: escape plaintext-password values in vyos_user set commands

Quote passwords for VyOS special-character handling and escape embedded
single quotes. Update RETURN sample, add unit tests, refresh changelog.

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;

* T2295: shorten changelog fragment for ansible-lint line-length

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;

* T2295: use shlex.quote() for plaintext-password values

Replace custom _quote_config_value() with stdlib shlex.quote() per
review feedback; update unit tests and RETURN sample accordingly.

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;

* T2295: add complex plaintext-password quoting unit test

Cover spaces, shell metacharacters, embedded quotes, and backslashes in
one password; assert command output matches shlex.quote().

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;

* T2295: assert explicit quoting in complex password unit test

Replace shlex.quote()-derived expectation with a fixed command string,
matching the other password quoting tests.

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;

* Fix RETURN doc sample, add docstrings and workflow permissions

- RETURN sample was missing the username token in the example command
- Add docstrings to all undocumented module-level functions to bring
  docstring coverage above the 80% threshold
- Add explicit permissions: contents: read to codecoverage.yml

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;

* Revert "Fix RETURN doc sample, add docstrings and workflow permissions"

This reverts commit 827809ee49cf472a8bf30ec0b24d347a75fcb083.

---------

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;
Co-authored-by: omnom62 &lt;75066712+omnom62@users.noreply.github.com&gt;
Co-authored-by: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;</content>
</entry>
<entry>
<title>rm_templates: T8609: fix slow parse() from group-quantifier patterns (#470)</title>
<updated>2026-06-19T13:02:27+00:00</updated>
<author>
<name>Robert Navarro</name>
<email>crshman@gmail.com</email>
</author>
<published>2026-06-19T13:02:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=5b80cd0cbddd014e54b01e7fa1cd0c0777d94724'/>
<id>urn:sha1:5b80cd0cbddd014e54b01e7fa1cd0c0777d94724</id>
<content type='text'>
* rm_templates: T8609: fix slow parse() from group-quantifier patterns

Running an Ansible playbook that manages BGP route-maps on my VyOS 1.4
edge routers, the vyos.vyos.vyos_route_maps task (state=gathered or
state=merged) takes ~50 seconds per host, sometimes 100s+, against
devices with only a handful of route-maps configured.  The persistent
connection times out before the module finishes and the failure
surfaces as a misleading "socket path does not exist".

Three related quantifier shapes in nine rm_templates files cause O(2^n)
regex backtracking on inputs that share a parser's prefix but don't
match overall.  parse() time on a representative 12-line route-map
config drops from ~50s to &lt;1ms post-fix.

* Trailing form (188 sites): `(?P&lt;X&gt;\S+)\n  *$"""` -&gt; `(?P&lt;X&gt;\S+)\s*$"""`.
  Under re.VERBOSE the literal newline+indent between `\S+` and `*$`
  is stripped at compile time, so the source compiled to `(\S+)*$`
  with the `*` quantifying the named group.

* Mid-pattern `(group containing \S+)*` (22 sites in snmp_server.py
  with a couple in bgp_global*.py): e.g.
  `(?P&lt;protocol&gt;protocol\s\S+)*` -&gt; `(?P&lt;protocol&gt;protocol\s\S+)?`.
  Different position from the trailing form, but the same shape
  underneath (a group whose content includes \S+, quantified with
  `*`), so the same O(2^n) backtracking on prefix-sharing inputs.

* Mid-pattern `(literal-only group)*` (14 sites in snmp_server.py,
  bgp_address_family*.py, bgp_global*.py): e.g.
  `(?P&lt;as_set&gt;as-set)*` -&gt; `(?P&lt;as_set&gt;as-set)?`.  No \S+ inside the
  quantified group, so the backtracking exposure is much smaller.
  On the inputs these patterns actually receive (no device line
  carries duplicate flags) `*` and `?` accept identical input sets,
  so changing to `?` is behavior-preserving.

The first draft of this fix made set_comm_list_delete's
`(?P&lt;delete&gt;\S+)` group required.  The parser's setval emits `set
comm-list delete` with no token after `delete`, so the parser stopped
matching its own output (no existing fixture covered this case, which
is why the regression initially shipped).  CodeRabbit caught it
during review.  Replaced `delete(?P&lt;delete&gt;\S+)\s*$` with
`\s(?P&lt;delete&gt;delete)\s*$` so the named group captures the literal
word `delete`; the result template `{{True if delete is defined}}`
continues to evaluate True.

Affects: route_maps[/_14], bgp_global[/_14], bgp_address_family[/_14],
snmp_server, ospf_interfaces[/_14].

Adds tests/unit/modules/network/vyos/test_rm_templates_perf.py with
a 1-second budget against fixture inputs that have realistic-length
identifiers, plus a round-trip test asserting set_comm_list_delete
matches its own setval-generated line, plus a Bgp_address_familyTemplate14
budget test for symmetry with the other "hot" template families.

* Fix regex backtracking issues in parse() method

Fix slow parse() to prevent regex backtracking on prefix-sharing inputs across multiple files. Add unit test for the bugfixes.

* Refactor bug fixes for regex backtracking improvements

Updated bug fixes to include details on regex backtracking issues in multiple files.

* Fix typo in bugfixes section of changelog

* Update bugfixes for regex backtracking issues

* rm_templates: T8609: route_maps.py: fix remaining trailing `*$` patterns

Five sites in route_maps.py still had the `(?P&lt;name&gt;...)\n  *$` shape that collapses to `(?P&lt;name&gt;...)*$` under `re.VERBOSE`, parsers `sequence`, `on_match_next`, `set_atomic_aggregate`, `set_extcommunity_bandwidth_non_transitive`, and `match_community_exact_match`.  Collapsed each to `\s*$` on the same line as the named group, matching the rest of the PR.

* rm_templates: T8609: route_maps.py: split overlong getval to satisfy E501

Line 517 was 161 chars (`set_extcommunity_bandwidth_non_transitive` parser) and tripped pycodestyle's E501 sanity test in CI.  Split the regex source across two lines at the `\d+)` boundary; under `re.VERBOSE` the literal newline and indent between regex tokens are stripped at compile time, so the engine sees the same pattern.  `\s*$` stays on the same line as the closing capture group, so the group-quantifier shape this PR fixes elsewhere isn't reintroduced.

---------

Co-authored-by: omnom62 &lt;75066712+omnom62@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>Merge branch 'main' into fix/icmp-parse-attr-bug</title>
<updated>2026-05-25T19:23:01+00:00</updated>
<author>
<name>omnom62</name>
<email>75066712+omnom62@users.noreply.github.com</email>
</author>
<published>2026-05-25T19:23:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=f715e2b1f3b77f546c641f140676a0c6210640f7'/>
<id>urn:sha1:f715e2b1f3b77f546c641f140676a0c6210640f7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>T6818: Add argument to vyos_config for controlling password filtering (#466)</title>
<updated>2026-05-25T11:44:54+00:00</updated>
<author>
<name>stronkbyte</name>
<email>262002943+stronkbyte@users.noreply.github.com</email>
</author>
<published>2026-05-25T11:44:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=29e47bb4b43d1888c79f54de2fbee90224e9652b'/>
<id>urn:sha1:29e47bb4b43d1888c79f54de2fbee90224e9652b</id>
<content type='text'>
This commit adds the argument `allow_password_change` in order to
control whether any configuration lines which would make changes to user
passwords should be filtered out or not.

Co-authored-by: Daniil Baturin &lt;daniil@baturin.org&gt;
Co-authored-by: omnom62 &lt;75066712+omnom62@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>Merge branch 'main' into fix/icmp-parse-attr-bug</title>
<updated>2026-05-22T21:21:00+00:00</updated>
<author>
<name>omnom62</name>
<email>75066712+omnom62@users.noreply.github.com</email>
</author>
<published>2026-05-22T21:21:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=475b26e8646a39a1d2aed6502b48ad1f21961919'/>
<id>urn:sha1:475b26e8646a39a1d2aed6502b48ad1f21961919</id>
<content type='text'>
</content>
</entry>
<entry>
<title>T8515: remove pre-1.3 deprecated code artifacts from vyos_bgp_global (#461)</title>
<updated>2026-05-13T13:23:39+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-05-13T13:23:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=be77e3b4b870ae2fb8ec4a75794a960c422a8449'/>
<id>urn:sha1:be77e3b4b870ae2fb8ec4a75794a960c422a8449</id>
<content type='text'>
* T8515: remove commented-out pre-1.3 parameter artifacts from vyos_bgp_global docs

* T8515: remove stale vrf.old backup file

* T8515: add changelog fragment for deprecated code cleanup

* T8515: fix grammar in ebgp_multihop description

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;

---------

Co-authored-by: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
Co-authored-by: omnom62 &lt;75066712+omnom62@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>T8520: fix vlan purge generating invalid commands for bare interfaces (#463)</title>
<updated>2026-05-01T18:43:03+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-05-01T18:43:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=a2ee09579a75165ae691efcbf3e952db83145b83'/>
<id>urn:sha1:a2ee09579a75165ae691efcbf3e952db83145b83</id>
<content type='text'>
Co-authored-by: Daniil Baturin &lt;daniil@baturin.org&gt;</content>
</entry>
<entry>
<title>T8512: fix isort import ordering violations (#454)</title>
<updated>2026-04-27T13:47:01+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-04-27T13:47:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=d3f981148e78c0dd31d35063f3407530278aa3a1'/>
<id>urn:sha1:d3f981148e78c0dd31d35063f3407530278aa3a1</id>
<content type='text'>
* T8512: fix isort import ordering violations

* T8512: add changelog fragment

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;

---------

Co-authored-by: omnom62 &lt;75066712+omnom62@users.noreply.github.com&gt;
Co-authored-by: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;</content>
</entry>
<entry>
<title>T8522: fix parse_icmp_attr() split delimiter and UnboundLocalError</title>
<updated>2026-04-16T03:55:37+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-04-16T03:55:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=3237ec79bae58908901b650dc48389cbbdd7ff26'/>
<id>urn:sha1:3237ec79bae58908901b650dc48389cbbdd7ff26</id>
<content type='text'>
- Use val.split("/") instead of val.split(".") when parsing type/code pairs
- In the numeric-only branch, use int(val) instead of the undefined type_no variable
- Cast both type and code to int for consistent typing

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
