summaryrefslogtreecommitdiff
path: root/src/conf_mode/nat.py
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2020-07-21 15:59:06 +0200
committerChristian Poessinger <christian@poessinger.com>2020-07-25 15:35:06 +0200
commit1a85e758b105d493bb9d95916816bd206345bc5d (patch)
treed8b3e5aa12a539e84f5dc1554adb76811513257c /src/conf_mode/nat.py
parent61dccd81a1037c06ae883020db51409dda3e41f9 (diff)
downloadvyos-1x-1a85e758b105d493bb9d95916816bd206345bc5d.tar.gz
vyos-1x-1a85e758b105d493bb9d95916816bd206345bc5d.zip
vyos.util: add common helper to load kernel modules
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.
Diffstat (limited to 'src/conf_mode/nat.py')
-rwxr-xr-xsrc/conf_mode/nat.py17
1 files changed, 6 insertions, 11 deletions
diff --git a/src/conf_mode/nat.py b/src/conf_mode/nat.py
index 2299717a8..dd34dfd66 100755
--- a/src/conf_mode/nat.py
+++ b/src/conf_mode/nat.py
@@ -24,13 +24,17 @@ from netifaces import interfaces
from vyos.config import Config
from vyos.template import render
-from vyos.util import call, cmd
+from vyos.util import call
+from vyos.util import cmd
+from vyos.util import check_kmod
from vyos.validate import is_addr_assigned
from vyos import ConfigError
from vyos import airbag
airbag.enable()
+k_mod = ['nft_nat', 'nft_chain_nat_ipv4']
+
default_config_data = {
'deleted': False,
'destination': [],
@@ -44,15 +48,6 @@ default_config_data = {
iptables_nat_config = '/tmp/vyos-nat-rules.nft'
-def _check_kmod():
- """ load required Kernel modules """
- modules = ['nft_nat', 'nft_chain_nat_ipv4']
- for module in modules:
- if not os.path.exists(f'/sys/module/{module}'):
- if call(f'modprobe {module}') != 0:
- raise ConfigError(f'Loading Kernel module {module} failed')
-
-
def get_handler(json, chain, target):
""" Get nftable rule handler number of given chain/target combination.
Handler is required when adding NAT/Conntrack helper targets """
@@ -269,7 +264,7 @@ def apply(nat):
if __name__ == '__main__':
try:
- _check_kmod()
+ check_kmod(k_mod)
c = get_config()
verify(c)
generate(c)