summaryrefslogtreecommitdiff
path: root/src/migration-scripts
diff options
context:
space:
mode:
authorKyrylo Yatsenko <hedrok@gmail.com>2025-08-27 17:49:12 +0300
committerKyrylo Yatsenko <hedrok@gmail.com>2025-09-16 13:00:56 +0300
commite992fb4ec3d65674c794bdcb961b62485fec8d50 (patch)
tree37431490c991e47d5cea14acf566c200c131f7fd /src/migration-scripts
parentd72d15c28f2e890ded3e5d24fceac00dac1238ed (diff)
downloadvyos-1x-e992fb4ec3d65674c794bdcb961b62485fec8d50.tar.gz
vyos-1x-e992fb4ec3d65674c794bdcb961b62485fec8d50.zip
T75: migrate from pmacct to ipt_NETFLOW
* Change nft to iptables in system_flow-accounting.py as ipt_NETFLOW is iptales plugin * Remove specific and non-relevant pmacct options * Add ipt_NETFLOW options * Move 'interfaces' to 'netflow' tree * Support more flexible 'source-address' and 'source-interface' for each server instead of one source * Add migration script * Update op mode command 'show flow-accounting' * Update op mode command 'restart flow-accounting'
Diffstat (limited to 'src/migration-scripts')
-rw-r--r--src/migration-scripts/flow-accounting/2-to-365
1 files changed, 65 insertions, 0 deletions
diff --git a/src/migration-scripts/flow-accounting/2-to-3 b/src/migration-scripts/flow-accounting/2-to-3
new file mode 100644
index 000000000..48292fc1d
--- /dev/null
+++ b/src/migration-scripts/flow-accounting/2-to-3
@@ -0,0 +1,65 @@
+# 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/>.
+
+# migrate from pmacct to ipt-NETFLOW:
+# Remove 'timeout' subtree, 'buffer-size', 'disable-imt', 'packet-length' and
+# 'syslog-facility' from 'system flow-accounting'
+#
+# Move "system flow-accounting interface" to "system flow-accounting netflow interface"
+#
+# Remove "system flow-accounting source" and add it to each server
+# under "system flow-accounting netflow server SERVER source-address"
+
+
+from vyos.configtree import ConfigTree
+
+base = ['system', 'flow-accounting']
+remove_keys = [
+ ['buffer-size'],
+ ['disable-imt'],
+ ['netflow', 'timeout'],
+ ['packet-length'],
+ ['syslog-facility'],
+]
+
+def migrate(config: ConfigTree) -> None:
+ if not config.exists(base):
+ # Nothing to do
+ return
+
+ # Remove not needed pmacct fields
+ for k in remove_keys:
+ p = base + k
+ if config.exists(p):
+ config.delete(p)
+
+ # Move "system flow-accounting interface" -> "system flow-accounting netflow interface"
+ if config.exists(base + ['interface']):
+ config.copy(base + ['interface'], base + ['netflow', 'interface'])
+ config.delete(base + ['interface'])
+
+ # Remove old "source-address", add it to each server as "source-address"
+ source_prev_path = base + ['netflow', 'source-address']
+ if config.exists(source_prev_path):
+ source_value = config.return_value(source_prev_path)
+ config.delete(source_prev_path)
+
+ # So we loose 'source-address' value if there are no servers
+ # configured, but it is not valid configuration if there
+ # is no server, so it shouldn't be a problem
+ if config.exists(base + ['netflow', 'server']):
+ path = base + ['netflow', 'server']
+ for server in config.list_nodes(path):
+ config.set(path + [server, 'source-address'], source_value)