<feed xmlns='http://www.w3.org/2005/Atom'>
<title>vyos.vyos.git/tests/unit, 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-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>T8518: add unit tests for vyos_vlan module (#471)</title>
<updated>2026-05-15T21:34:13+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-05-15T21:34:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=e8acd05dd327bd4eb2419de1b931960feddec427'/>
<id>urn:sha1:e8acd05dd327bd4eb2419de1b931960feddec427</id>
<content type='text'>
Adds 7 unit tests for vyos_vlan covering present, present_no_change,
absent, absent_no_change, aggregate, purge, and address scenarios.
Fixture data moved to dedicated .cfg files under fixtures/.

🤖 Generated by [robots](https://vyos.io)

Co-authored-by: omnom62 &lt;75066712+omnom62@users.noreply.github.com&gt;
Co-authored-by: Daniil Baturin &lt;daniil@baturin.org&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>T8522: add parsed test for legacy type/code ICMP format</title>
<updated>2026-04-16T04:18:36+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-04-16T04:18:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=768cca2ab06d481cf81ffcbcc72ec7f6dec6fedb'/>
<id>urn:sha1:768cca2ab06d481cf81ffcbcc72ec7f6dec6fedb</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title> T8205 Ensure the vyos_user module works when user properties are defined in… (#445)</title>
<updated>2026-04-07T11:46:41+00:00</updated>
<author>
<name>gideon-kuijt-northwave</name>
<email>gideon.kuijt@northwave-cybersecurity.com</email>
</author>
<published>2026-04-07T11:46:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=16e6f21de8e90833e2284aeab6cd39d2e1482155'/>
<id>urn:sha1:16e6f21de8e90833e2284aeab6cd39d2e1482155</id>
<content type='text'>
* Ensure the vyos_user module works when user properties are defined in aggregate

Ensure the vyos_user module works when user properties are defined in aggregate. Previously the value variable is not filled when a property is configured as a property of a user. This gives a python error when the value variable is called.

* Add unit test for aggregate vyos_user module

* Create vyos_user_aggregate_fix.yml

Create changelog for vyos_user aggregate bugfix

* Rename vyos_user_aggregate_fix.yml to  T8205_vyos_user_aggregate_fix.yml

* Rename  T8205_vyos_user_aggregate_fix.yml to T8205_vyos_user_aggregate_fix.yml

Remove unintended whitespace in changelog fragment: T8205_vyos_user_aggregate_fix.yml

---------

Co-authored-by: omnom62 &lt;75066712+omnom62@users.noreply.github.com&gt;
Co-authored-by: Daniil Baturin &lt;daniil@baturin.org&gt;</content>
</entry>
<entry>
<title>T6836 VRF module (#408)</title>
<updated>2026-03-04T09:51:16+00:00</updated>
<author>
<name>omnom62</name>
<email>75066712+omnom62@users.noreply.github.com</email>
</author>
<published>2026-03-04T09:51:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=a8e5dac21090e9b0ddf876214a9a1522079ecde1'/>
<id>urn:sha1:a8e5dac21090e9b0ddf876214a9a1522079ecde1</id>
<content type='text'>
* t6836 vfr module init

* argspec facts module for VRF

* T6834 static_route module to support interface_route (#398)

* t6834 init

* facts fixes, WIP

* T6834 - facts updates

* static_routes 1.3- config, facts, args and sanit and unit tests

* changelog

* changelog updates

* static_routes 1.4+

* static_routes v1.4 unit tests

* comment removed

* T6829 (area interfaces in OSPFv3 1.3-1.5) re-init (#399)

* T6829 re-init

* re-init T6829 ospfv3 area interface for 1.3-

* changelog

* changelog fix

* Doc is updated

* adding 1.4+ support

* ospfv3 area interfaces for 1.4+

* fixed ospfv3 facts and added area interface unit test for 1.4

* ospfv3 clean-up

* doc updates

* Resolve merge conflicts

* vrf parsers set_table

* more vrf paresers added

* vrf facts main code

* vrf data structures

* simple vrf config push

* simple vrf config push

* some work on vrf

* basic facts done

* vrf instance parsers wif

* ongoing parser testing

* vrf dev work

* testing with paresers

* all basic settings

* merged for vrf

* more states for VRF

* vrf deleted, overriden

* overriden

* sanity

* rst for vrf

* changelog

* fix changelog

* doc fix

* vrf delete idempotent

* deleted and overridden for VFR

* overriden

* overriden vrf idempotency

* asdvanced vrf settings

* afi for VRF facts

* VRF AFI config

* VRF AFI tests

* vrf dev work

* afi dev work

* afi and deep_merge fixes for VRF

* afi basic provisioning

* changelog

* vrf sanity fixes

* VRF AFI protocols and route-maps

* vrf parsed, gathered, rendered fixes

* docstrings VRF

* docstrings VRF

* docstring VRF

* module doc update

* vrf module examples

* VRF doc examples

* linter

* VRF unit tests init

* VRF unit tests init

* VRF unit tests updates

* fixed VRF overridden and deleted unit test cases

* VRF integration tests init

* VRF int tests rtt, merged, replaced

* VRF int testt gathered, rendered

* VRF int tests deleted, rendered, overridden and empty_config

* linter

* VRF int test misc fixes

* VRF global idepmotency

* fixing py3.13 runner deps

* fixing lint

* fixing sanity

* reverting previous fixes

* VRF protocols load_module and provisioning flow

* fixes to bgp VRF protocol methods

* VRF protocol facts init

* VRF protocol load_module works

* reworked VRF load_module routine

* vrf protocl static fixed

* Fixed static and ospf VRF protocol provisioning

* Fixed static and ospf VRF protocol provisioning

* VRF doc update

* VRF docs update

* VRF doc updates

* unit tests for VRF protocols

* VRF BGP protcol sanity check

* VRF protocol fixed sanity checks (DOCUMENTATION)

* sanity and doc for VRF fixed

* VRF unit tests mock

* VRF protocol integration parsed, rtt and merged init

* VRF protocols - rendered, overridden

* VRF protocols replaced

* fix accidental changes to test_vyos_config.py

* PR description

* fix image

* README fix

* Fixing linter

* Mid-result UAT overriden VRF

* Mid-result for VRF UAT

* VRF uat

* VRF obsolete features removed</content>
</entry>
<entry>
<title>add commit-confirm options to vyos_config  (#229)</title>
<updated>2026-02-23T12:25:35+00:00</updated>
<author>
<name>lucaelin</name>
<email>git@luca.lsys.ac</email>
</author>
<published>2026-02-23T12:25:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=e539028c2f9d062e7684abda5dd32affd92e9f08'/>
<id>urn:sha1:e539028c2f9d062e7684abda5dd32affd92e9f08</id>
<content type='text'>
* added vyos_config confirm options

* fix: update commit comment to match main

* fix: documentation example for automatic confirm

* fix: add tests for commit confirm and confirm_timeout options

* fix: add config_confirm changelog fragment

* fix: lint missing diff parameter for edit_config

* fix: add commit confirm integration test

---------

Co-authored-by: omnom62 &lt;75066712+omnom62@users.noreply.github.com&gt;</content>
</entry>
</feed>
