summaryrefslogtreecommitdiff
path: root/python
AgeCommit message (Collapse)Author
2026-06-25geoip: T8987: Support updates via source-address/vrfsarthurdev
2026-06-25Merge pull request #5294 from jestabro/configtree-thread-safe-initJohn Estabrook
T9015: fix thread safety of configtree read/write_cache
2026-06-25Merge pull request #5291 from jestabro/reference-tree-thread-safe-initJohn Estabrook
T8993: initialize ReferenceTree module from string not file
2026-06-25Merge pull request #5155 from sarthurdev/geoipViacheslav Hletenko
geoip: T5746: Add GeoIP ASN support
2026-06-24T9015: use file operations on Python side for read/write_cache to fileJohn Estabrook
For thread-safe calls, move file operations to the Python side, leaving only string operations for calls to ctypes bindings.
2026-06-24T8993: initialize ReferenceTree module from string not fileJohn Estabrook
Avoid initialization error in threaded applications, for example when calling libvyosconfig functions from FastAPI background tasks. The read_internal function from file relies on the inherently non thread-safe Unix module; read string first and pass to lib read_string.
2026-06-23ipsec: T8975: lock vti-up-down state DB to prevent lost updates under ↵Robert Navarro
concurrent rekey The vti-up-down hook and vpn_ipsec.py modify a flat-file DB (/tmp/ipsec_vti_interfaces) through three context managers that do an unlocked read-modify-write. During a coordinated rekey, strongSwan fires the hook for many VTIs concurrently, so the writers lost-update each other: an interface whose up-client add is overwritten is left admin-down while its CHILD_SA stays installed. Serialise all DB access by reusing vyos.utils.locking.Lock. A new _vti_updown_db_lock() context manager wraps the three public context managers, and remove_vti_updown_db() holds the lock across both the DB processing and the os.unlink() to close the create/delete race. Make the helpers absence-safe under the lock so callers no longer compose a separate existence check with a locked operation: open_vti_updown_db_readonly() yields None when the DB does not exist and remove_vti_updown_db() is a no-op when it is absent. Drop the now-redundant unlocked vti_updown_db_exists() pre-checks in vti.py and vpn_ipsec.py and handle the None yield.
2026-06-23Merge pull request #5267 from vyos/T8099-strongswan-6.0John Estabrook
T8099: strongswan: 6.0.6 + Post quantum options
2026-06-23Merge pull request #5252 from natali-rs1985/T8913Daniil Baturin
vpp: T8913: Skip bond teardown for non-structural config changes
2026-06-22T8099: strongswan: Post quantum optionsKyrylo Yatsenko
Add options for mlkem*
2026-06-22pseudo-ethernet: T8540: Add anycast-gateway support for EVPNOleksandr Kuchmystyi
Introduce 'anycast-gateway' leafNode for pseudo-ethernet interfaces. When set, a local FDB entry is installed on the parent bridge to prevent the shared anycast MAC from leaking over the VXLAN overlay.
2026-06-22Merge pull request #5280 from natali-rs1985/T8603Viacheslav Hletenko
vpp: T8603: Expand ACL support to logical interfaces
2026-06-19Merge pull request #5075 from vyos/fix/mutable-default-argsJohn Estabrook
config: T8858: fix mutable default argument in config API methods
2026-06-18Merge pull request #5279 from sarthurdev/T8546Christian Breunig
firewall: T8546: Fix conntrack_required for global state-policy
2026-06-18vpp: T8979: Fix defunct interface retaining IP addresses after crashNataliia Solomko
flush_ip() used flush_addr(label=iface_name) which only matches addresses whose label equals exactly the interface name. Secondary IP addresses are assigned with :N suffixed labels (e.g. defunct_eth0:2, defunct_eth0:3) and are not matched, so they remain on the interface. Fix by flushing addresses by interface index instead of label, which removes all addresses regardless of their label.
2026-06-17vpp: T8603: Expand ACL support to logical interfacesNataliia Solomko
2026-06-17firewall: T8546: Fix conntrack_required for global state-policysarthurdev
2026-06-17Merge pull request #5277 from c-po/can-not-cannotViacheslav Hletenko
T8923: normalize "can not" to "cannot" and other typo fixes
2026-06-16template: T8923: fix typo in function argument "formater" -> "formatter"Christian Breunig
2026-06-16configdict: T8923: fix typo in comment "restat" -> "restart"Christian Breunig
2026-06-16T8923: normalize "can not" to "cannot"Christian Breunig
Replace two-word "can not" / "Can not" with "cannot" across comments, ConfigError messages, CLI help text, and op-mode output. Standard SNMP MIB files under mibs/ are left unchanged.
2026-06-16T8972: VPP: sync LCP interface VRF table bindingRuslan Volodin
2026-06-12T8980: add convenience function to apply exlusion list to config treeJohn Estabrook
2026-06-12T8980: refactor functions out of config_mgmt.pyJohn Estabrook
This is no real need to have these in config_mgmt; moving to config_sync will localize needed modifications to local/remote configs for exclusion mask.
2026-06-12T8980: add util get_saved_config_treeJohn Estabrook
Add util for commonly used retrieval of ConfigTree of the saved config.
2026-06-09ethtool: T8964: Fix crash when NIC does not support ring-buffer configurationNataliia Solomko
2026-06-05Merge pull request #5232 from natali-rs1985/T8936Christian Breunig
vrf: T8936: Specify `pref 1998` when deleting fwmark routing rules on VRF removal
2026-06-05Merge pull request #5187 from jestabro/clean-up-configtreeJohn Estabrook
T8503: clean up linting errors, reformatting, and minor refactoring
2026-06-05Merge pull request #5250 from vyos/fix/T8956-remote-url-credential-leakViacheslav Hletenko
remote: T8956: stop leaking URL credentials in TftpC.upload()
2026-06-05vrf: T8936: Specify `pref 1998` when deleting fwmark routing rules on VRF ↵Nataliia Solomko
removal
2026-06-05vpp: T8913: Skip bond teardown for non-structural config changesNataliia Solomko
VPP bond teardown was triggered on every commit regardless of what changed, dropping all subinterfaces and BGP sessions even for trivial changes like descriptions or IP addresses. Only mode, hash-policy and mac_address require full recreation since VPP has no in-place update API for these; all other changes are now applied incrementally.
2026-06-04remote: T8956: stop leaking URL credentials in TftpC.upload()Yuriy Andamasov
TftpC.upload() printed `{command} "{urlstring}"` to stdout before running the command. This was debug code from the time where VRF support was added. As TFTP has no authentication - no credentials got leaked.
2026-06-04Merge pull request #5255 from natali-rs1985/T7931Christian Breunig
frr: T7931: Do not restart FRR on unrelated config changes when VRF protocols are configured
2026-06-04Merge pull request #5195 from natali-rs1985/T8492Christian Breunig
T8492: CRL generated by VyOS PKI lacks X.509 extensions required for strongSwan validation
2026-06-04geoip: T5746: Add GeoIP ASN supportsarthurdev
2026-06-04frr: T7931: Do not restart FRR on unrelated config changes when VRF ↵Nataliia Solomko
protocols are configured FRR was restarted on every commit when VRF protocols were configured, even when no routing-related configuration changed. Root cause: the rendering loop mutated `config_dict` in-place by injecting a `vrf` key into each VRF protocol sub-dict, polluting `cached_config_dict` which holds a reference to the same object, causing the equality check to always fail on the next commit.
2026-06-04T8503: clean up of linting warnings, reformatting, and minor refactoringJohn Estabrook
2026-05-28nat: T8939: fix KeyError: 'group' exceptionChristian Breunig
Prevent access to missing dictionary key by probing for availability. On removal of inbound-interface or outbound-interface name CLI node, there was a guard missing when accessing the CLI dictionary containing the config data.
2026-05-28Merge pull request #5109 from statio/fix/vrf-aware-port-checkDaniil Baturin
T8454: fix VRF-bind port availability check in service_https
2026-05-28T8916: allow passing ReferenceTree instance to subtree_from_partialJohn Estabrook
For use in nosetests or other, allow passing ReferenceTree from an internal cache in a non-standard location.
2026-05-28T8502: add server support for config-sync excluded pathsJohn Estabrook
2026-05-28T8502: add library support for config-sync exclude pathsJohn Estabrook
2026-05-28T8502: add list of global config-sync exclude pathsJohn Estabrook
2026-05-27T8454: fix VRF-bind port availability check in service_httpsLee Clements
When service https is configured with a listen-address on a VRF interface, adding or changing the vrf option causes the commit to fail with "TCP port 443 is used by another service!" even though no conflict exists. Root cause: check_port_availability() performs a socket.bind() in the default network namespace. When the listen-address belongs to a VRF interface the address is unreachable from the default namespace, so the bind fails with OSError which is misinterpreted as "port in use". The secondary check via is_listen_port_bind_service() also fails because psutil cannot see sockets bound inside a VRF. Fix: add an optional vrf parameter to check_port_availability(). When set, the test socket is bound to the VRF master device via SO_BINDTODEVICE before the bind() call, so that the address is resolved in the correct L3 domain. This is done in-process (no subprocess) and works for both IPv4 and IPv6. service_https verify() now passes the configured VRF (if any) to check_port_availability(). Non-VRF configurations are unaffected. Add smoke test for HTTPS with listen-address inside a VRF. Co-authored-by: Christian Breunig <christian@breunig.cc>
2026-05-26Merge pull request #5157 from xTITUSMAXIMUSX/currentJohn Estabrook
geoip: T8590: fix initialization failure and set clobbering on boot and commit
2026-05-22wwan: T8412: Fix commit failure when modem is absent or not connectedNataliia Solomko
`mmcli --simple-disconnect` can be called when the modem bearer is not active. This causes cmd() to raise a `PermissionError` and abort the commit. Handle the case gracefully so the configuration can be committed before the modem is physically present or fully connected.
2026-05-22Merge pull request #5198 from indrajitr/T8862-dhcpv6-reservation-multiViacheslav Hletenko
dhcpv6: T8862: Allow multiple addresses and prefixes for reservations
2026-05-20load-balancing: T7928: Fix port conflict check to respect `listen-address` ↵Alexandr K.
(#5186) The port availability check in `verify()` was using `front_config.get('address')` which always resolved to `None`, causing the validator to treat any process holding a given port number as a conflict regardless of which IP it was bound to.
2026-05-20T7880: Add NTP hardware timestamp receive-filter compatibility check (#5160)Nataliia S.
Add a check to determine whether the NIC supports hardware timestamp receive filters required for NTP timestamping. Implement the query in a new python/vyos/netlink/timestamp.py module using pyroute2 generic netlink ETHTOOL_MSG_TSINFO_GET, avoiding ethtool output parsing.
2026-05-19geoip: T8590: skip recursive dict search in imported config dictssarthurdev