Age | Commit message (Collapse) | Author |
|
Rename CLI options local-ip to source-address and remote-ip to remote to
get a consistent CLI experience for the user.
|
|
Interface.get_config() was always a pure helper which exposed a "per interface
type" dictionary which was then fed by the caller to create interfaces by
iproute2 which required additional options during creation time.
Such interfaces had been:
* tunnel
* vxlan
* geneve
* macsec
* wifi
* macvlan / pseudo-ethernet
The code was always duplicated to convert from the VyOS CLI based get_config_dict()
to a dict which can be used to feed iproute2.
This path has been removed and we now always feed in the entire dictionary
retrieved by get_config_dict() or in the interfaces case, it's high-level wrapper
get_interface_dict() to the interface we wan't to create.
This also adds the - personally long awaited - possibility to get rid of the
derived tunnel classes for e.g. GRE, IPIP, IPIP6 and so on.
|
|
|
|
Using an MTU less then the required 1280 bytes (as per RFC) on an interface
where IPv6 is not explicitly disabled by:
- set interfaces ethernet eth1 ipv6 address no-default-link-local
- not having any other IPv6 address configured
Will now trigger a commit error via verify() instead of raising
FileNotFoundError!
|
|
A lot of derived classes from Interface implemented their own get_config()
method which more or less was the same everywhere. We also hat different
qualifiers like @staticmethod or @classmethod.
This is now changed to only have the @classmethod in Interface base class which
will return the necessary dictionary keys for the required interfaces. This
change is a mid reduction in lines of code which is always a very nice thing!
|
|
|
|
|
|
The current VyOS CLI parser code written in Python contains a ton of duplicates
which I can also hold myself accountable for - or maybe mainly me - depends on
the angle of judge.
|
|
l2tpv3, wireguard, wirelessmodem, nat all require additional Kernel modules
to be present on the system. Each and every interface implemented their own
way of loading a module - by copying code.
Use a generic function, vyos.util.check_kmod() to load any arbitrary kernel
module passed as string or list.
|
|
airbag must now be explicitly installed.
the patch also allow to fully disables the installation of the logging
code at setup (and not just installing and doing nothing)
|
|
To make SLAAC and DHCPv6 work when forwarding=1, accept_ra must be 2
(default for accept_ra is 1).
|
|
- make error output more user friendly
- replace .format with f-strings
- split into lines less than ~80 characters long
|
|
Previously, the interface was always deleted and recreated, which
removed it from the bridge.
- always re-add the interface back to any bridge it is part of in
case it is deleted and recreated
|
|
Bridge members should not have any addresses assigned.
|
|
|
|
interfaces: T2362: IPv6 link-local and EUI64 address fixes
|
|
|
|
|
|
|
|
|
|
|
|
Commit 0e19d622a0410 ("bridge: T2232: move helper to vyos.validate") added a
new key to the dictionary but missed out the required "," at the end.
|
|
|
|
os.system does print the ouput of the command, run() does not.
A new function called call() does the printing and return the error code.
|
|
Interfaces enslaved to a bridge are not allowed to be deleted. If an interface
is deleted from the config but it is still enslaved to a bridge will cause a
configuration error on the subsequent boot.
|
|
|
|
As little change a possible but the function call
The behaviour should be totally unchanged.
|
|
|
|
Autoconfigure addresses using Prefix Information in Router Advertisements.
|
|
|
|
... to new XML and Python based frontend/backend.
|
|
The Interface get_state/set_state were not clear about
if they edited the admin or operational state.
functions are now using admin_state and oper_state
for clarity.
|
|
|
|
os.environ['VYOS_TAGNODE_VALUE']
This has been only a theoretical problem but then the error condition was
triggered - only an error has been printed instead of raising an Exception.
|
|
Provides a way to pass options to interface consistent between
subclasses of Interface
|
|
|
|
Tested using:
R1:
---
set interfaces l2tpv3 l2tpeth10 address '2001:db8:beef::1/64'
set interfaces l2tpv3 l2tpeth10 address '100.0.0.1/24'
set interfaces l2tpv3 l2tpeth10 destination-port '3000'
set interfaces l2tpv3 l2tpeth10 encapsulation 'udp'
set interfaces l2tpv3 l2tpeth10 local-ip '172.18.201.10'
set interfaces l2tpv3 l2tpeth10 peer-session-id '10'
set interfaces l2tpv3 l2tpeth10 peer-tunnel-id '100'
set interfaces l2tpv3 l2tpeth10 remote-ip '172.18.204.10'
set interfaces l2tpv3 l2tpeth10 session-id '20'
set interfaces l2tpv3 l2tpeth10 source-port '6000'
set interfaces l2tpv3 l2tpeth10 tunnel-id '200'
R2:
---
set interfaces l2tpv3 l2tpeth10 address '2001:db8:beef::2/64'
set interfaces l2tpv3 l2tpeth10 address '100.0.0.2/24'
set interfaces l2tpv3 l2tpeth10 destination-port '6000'
set interfaces l2tpv3 l2tpeth10 encapsulation 'udp'
set interfaces l2tpv3 l2tpeth10 local-ip '172.18.204.10'
set interfaces l2tpv3 l2tpeth10 peer-session-id '20'
set interfaces l2tpv3 l2tpeth10 peer-tunnel-id '200'
set interfaces l2tpv3 l2tpeth10 remote-ip '172.18.201.10'
set interfaces l2tpv3 l2tpeth10 session-id '10'
set interfaces l2tpv3 l2tpeth10 source-port '3000'
set interfaces l2tpv3 l2tpeth10 tunnel-id '100'
|