summaryrefslogtreecommitdiff
path: root/src/activation-scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/activation-scripts')
-rw-r--r--src/activation-scripts/00-first-installed-boot.py35
-rw-r--r--src/activation-scripts/01-set-config-path-hint.py35
-rw-r--r--[-rwxr-xr-x]src/activation-scripts/20-ethernet-offload.py (renamed from src/activation-scripts/20-ethernet_offload.py)13
-rw-r--r--src/activation-scripts/example.py42
4 files changed, 124 insertions, 1 deletions
diff --git a/src/activation-scripts/00-first-installed-boot.py b/src/activation-scripts/00-first-installed-boot.py
new file mode 100644
index 000000000..ca02c2642
--- /dev/null
+++ b/src/activation-scripts/00-first-installed-boot.py
@@ -0,0 +1,35 @@
+# Copyright (C) VyOS Inc.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+
+from vyos.configtree import ConfigTree
+from vyos.system.image import is_live_boot
+from vyos.utils.activate import set_activation
+from vyos.utils.activate import set_first_installed_boot
+from vyos.utils.activate import is_first_installed_boot
+
+
+def pre_condition() -> bool:
+ return not is_live_boot()
+
+
+def activate(_config: ConfigTree) -> None:
+ pass
+
+
+def post_condition() -> None:
+ set_first_installed_boot()
+ if is_first_installed_boot():
+ set_activation(__file__, 'never')
diff --git a/src/activation-scripts/01-set-config-path-hint.py b/src/activation-scripts/01-set-config-path-hint.py
new file mode 100644
index 000000000..3146a7905
--- /dev/null
+++ b/src/activation-scripts/01-set-config-path-hint.py
@@ -0,0 +1,35 @@
+# Copyright (C) VyOS Inc.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+
+from vyos.configtree import ConfigTree
+from vyos.system.image import is_live_boot
+from vyos.utils.activate import set_activation
+from vyos.utils.activate import set_config_path_hint
+from vyos.utils.activate import is_first_installed_boot
+
+
+def pre_condition() -> bool:
+ return not is_live_boot()
+
+
+def activate(_config: ConfigTree) -> None:
+ pass
+
+
+def post_condition() -> None:
+ if is_first_installed_boot():
+ set_config_path_hint()
+ set_activation(__file__, 'never')
diff --git a/src/activation-scripts/20-ethernet_offload.py b/src/activation-scripts/20-ethernet-offload.py
index 33b0ea469..9f61f6d8f 100755..100644
--- a/src/activation-scripts/20-ethernet_offload.py
+++ b/src/activation-scripts/20-ethernet-offload.py
@@ -1,4 +1,4 @@
-# Copyright 2021-2024 VyOS maintainers and contributors <maintainers@vyos.io>
+# Copyright VyOS maintainers and contributors <maintainers@vyos.io>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -17,11 +17,17 @@
# CLI. See https://vyos.dev/T3619#102254 for all the details.
# T3787: Remove deprecated UDP fragmentation offloading option
# T6006: add to activation-scripts: migration-scripts/interfaces/20-to-21
+# T6716: Honor the configured offload settings and don't automatically add
+# them to the config if the kernel has them set (unless its a live boot)
from vyos.ethtool import Ethtool
from vyos.configtree import ConfigTree
+from vyos.utils.activate import set_activation
+from vyos.utils.activate import is_first_installed_boot
+
def activate(config: ConfigTree):
+ # pylint: disable=too-many-branches
base = ['interfaces', 'ethernet']
if not config.exists(base):
@@ -101,3 +107,8 @@ def activate(config: ConfigTree):
if config.exists(flow_control_path):
if not eth.check_flow_control():
config.delete(flow_control_path)
+
+
+def post_condition() -> None:
+ if is_first_installed_boot():
+ set_activation(__file__, 'off')
diff --git a/src/activation-scripts/example.py b/src/activation-scripts/example.py
new file mode 100644
index 000000000..74beedf80
--- /dev/null
+++ b/src/activation-scripts/example.py
@@ -0,0 +1,42 @@
+# Copyright VyOS maintainers and contributors <maintainers@vyos.io>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+
+from vyos.configtree import ConfigTree
+
+
+# pylint: disable=anomalous-backslash-in-string,pointless-string-statement
+"""Activation scripts must be named '^\\d+\\-.+.py$' to be included by the
+activation script runner. They are run in ascending order of prefix."""
+
+
+def pre_condition() -> bool:
+ """This function is not required.
+ If not present, or pre_condition returns True, the function activate
+ will be called on the config."""
+
+
+def activate(_config: ConfigTree) -> None:
+ """This function is expected.
+ If not present, the script is ignored. The function itself can be a
+ no-op."""
+
+
+def post_condition() -> None:
+ """This function is not required.
+ If present, and application of 'activate' succeeds, post_condition will
+ be called.
+ Commonly used to set activation 'off' for the script, after first run on
+ an installed system."""