| Age | Commit message (Collapse) | Author |
|
vpp: T8416: Prevent interfaces from being assigned to xconnect and bridge/bonding at the same time
|
|
vpp: T8286: Uninitialized interfaces raise errors when added to VPP
|
|
|
|
bridge/bonding at the same time
|
|
vpp: T8432: Fix AttributeError for enabling vpp interface
|
|
- fix darker linter
|
|
Fix AttributeError in `_is_device_allowed` by using
iface parameter for `persist_config` lookup.
|
|
- convert to the simpler kea4_options dict
- add the smoketest
|
|
- update dict literal style
|
|
T8379: PBR commit fail with traceback if non-existing VRF added
|
|
T8410: Fix typos and mistakes for operational and configuration commands
|
|
vpp: T8422: Resolve inconsistent behavior with `allow-unsupported-nics` configuration option
|
|
configuration option
Prevents attachments of unsupported NICs when the allow-unsupported-nics option is removed.
|
|
firewall: T8277: Resolve migration issue when using `port-group` with protocol `all`
|
|
T8405: fix pppoe peer template - remove superfluous +
|
|
protocol 'all'
Updated the migration script to ensure that when migrating firewall rules,
if a `port-group` exists, the protocol will be set to 'tcp_udp' only
when its previous value is 'all'.
|
|
- Kea overloads the meaning of the boot-file-name option. When used on
its own, it represents the legacy bootp filename option. When option
67 is needed, boot-file-name must be included in an options block.
|
|
Commit 5c800be95 ("T8405: fix noipv6 emitted when dhcpv6-options configured
without ipv6 node") added a superfluous +, most likely due to a rebase or
merge error.
|
|
T8405: fix noipv6 emitted when dhcpv6-options configured without ipv6 node
|
|
Fix typos and mistakes in the commands and comments
No functional changes
|
|
vpp: T8355: Set MTU for vpp interfaces
|
|
T8188: Preserve static IPv4 addresses flushed by dhclient
|
|
login: T8415: show Warning() if default password is used when adding user
|
|
T8418: adjust permissions setting of config.boot for case of cloud-init
|
|
Group owner and write permission were set within a conditional block
that cloud-init does not see. Move settings outside of unneeded
conditional protection.
|
|
T8399: dhcpv6-server: move connectivity/overlap checks inside subnet loop
|
|
validators: T8384: ipv6-eui64-prefix: unhandled exception on eui-64 address validation
|
|
|
|
|
|
dhcpv6: T8414: missing prefix-delegation interface constraint
|
|
|
|
|
|
When a PPPoE interface has dhcpv6-options (e.g. prefix delegation)
configured but no explicit ipv6 node, the Jinja template writes
noipv6 into the PPP peer configuration. This prevents IPv6CP
negotiation, causing the ISP to silently ignore all DHCPv6 traffic.
Fix the peer template to also check for dhcpv6_options before emitting
noipv6, and add dhcpv6-options and ipv6 to the list of config nodes
that trigger a PPPoE session restart so the change takes effect
without manual disconnect/reconnect.
|
|
configverify: T8413: fix issue in duplex shaping (redirect to input interface)
|
|
When performing an image installation and the user chooses vyos as the default
password, a warning is emitted.
The combination vyos/vyos is used in brute force lists and have been seen
multiple times in the wild. When adding the user via:
set system login user vyos authentication plaintext-password vyos
a warning should be shown!
|
|
|
|
After commit 6eafdbf1a8 ("configdict: T8358: rename internal representation from
traffic_policy to qos) we uncovered a bug/added a feature in supporting QoS and
redirect on an interface.
The code in VyOS stream 2026.02 is:
if ('mirror' in config or 'redirect' in config) and
dict_search('traffic_policy.in', config) is not None:
and this got changed to:
if 'qos' in config and ('mirror' in config or 'redirect' in config):
in the commit mentioned above. When looking at the code in 2026.02 release
$ git describe --tags
2026.02
$ git grep traffic_policy
python/vyos/configdict.py: dict.update({'traffic_policy': {}})
python/vyos/configdict.py: dict['vif'][vif].update({'traffic_policy': {}})
python/vyos/configdict.py: dict['vif_s'][vif_s].update({'traffic_policy': {}})
python/vyos/configdict.py: dict['vif_s'][vif_s]['vif_c'][vif_c].update({'traffic_policy': {}})
python/vyos/configverify.py: if ('mirror' in config or 'redirect' in config) and dict_search('traffic_policy.in', config) is not None:
python/vyos/ifconfig/interface.py: if not 'traffic_policy' in self.config:
I never see traffic_policy.in set, so the check seems to have never worked in
the past at all.
During the QoS rewrite from 1.3 -> 1.4 CLI traffic-policy was renamed by me to
qos but we kept that synthetic key in the Python code. That is the root cause.
So it should have never worked (CLI wise) but during that bug it started to work
as expected, and even the Python code stated in a comment:
if 'qos' in config and ('mirror' in config or 'redirect' in config):
# XXX: support combination of limiting and redirect/mirror - this is an
# artificial limitation
raise ConfigError('Can not use QoS together with mirror/redirect!')
So we have enabled this feature for a long time by accident already.
|
|
validation
|
|
dict_search('ipv6.address', config) returns None when the ipv6 address
node is empty (e.g. after deleting autoconf), causing a TypeError on
the 'in' membership test. Use dict_search('ipv6.address.autoconf', config)
instead, which safely returns None for any missing path segment.
|
|
Implementing a daemon that listens for netlink messages in Python was discussed
for many years. This is a proof-of-concept implementation how we can listen for
netlink messages and process them in Python.
Python 3.10 minimum is required due to the use of case statements which mimics
C-style switch/case instructions.
Add example:
set interfaces ethernet eth1 vif 21 address dhcp
set interfaces ethernet eth1 vif 21 address dhcpv6
commit
If network cable is unplugged:
vyos-netlinkd[12681]: RTM_NEWLINK -> eth3.10, state=DOWN, mac=00:50:56:b3:9d:8e
vyos-netlinkd[12681]: Stopping dhclient@eth3.10.service...
vyos-netlinkd[12681]: Stopping dhcp6c@eth3.10.service...
If cable is plugged back in:
vyos-netlinkd[12681]: RTM_NEWLINK -> eth3.10, state=DOWN, mac=00:50:56:b3:9d:8e
vyos-netlinkd[12681]: RTM_NEWLINK -> eth3.10, state=UP, mac=00:50:56:b3:9d:8e
vyos-netlinkd[12681]: Restarting dhclient@eth3.10.service...
vyos-netlinkd[12681]: Restarting dhcp6c@eth3.10.service...
|
|
T8352: VPP add op-mode commands to show bonding interfaces
|
|
If we would like to get the CLI config path as a dot delimited string (instead
of whitespace) we can now request it. This is usefull when feeding in the result
of get_config_path() into dict_search().
|
|
When dhclient renews/rebinds a lease, it calls "ip -4 addr flush dev
<interface>". This removes ALL IPv4 addresses, including static
addresses configured via VyOS (e.g., "set interfaces ethernet eth0
address 192.168.1.1/24").
The updated hook logic now intercepts the "ip -4 addr flush" command and replaces
it with a selective flush that only removes addresses marked as
"dynamic" by the kernel. DHCP-assigned addresses have the "dynamic" flag
set automatically.
|
|
op-mode: T8400: remove calls to tshark binary for PCAP files
|
|
T8396: VPP op-mode "show interfaces vpp" missing ipv6 address
|
|
T8395: VPP add op-mode command for 'show mode'
|
|
|
|
|
|
|
|
T8386: fix locat_ts rendering in remote_access.j2
|