diff options
| author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2022-11-02 14:55:27 +0200 | 
|---|---|---|
| committer | Viacheslav Hletenko <v.gletenko@vyos.io> | 2022-11-02 12:59:57 +0000 | 
| commit | 46eda54c88ae96ed1f4aaa9ce56c505ed837f3d7 (patch) | |
| tree | 852b802c592919fec3fe66c14dd2f4aaaf8fd7ed /src/op_mode/nat.py | |
| parent | 738641a6c66d22c09b8c028ee3d8a90527d9701f (diff) | |
| parent | f2ec92a78c4ee2a35e7d071387460fc6ce360740 (diff) | |
| download | vyos-1x-46eda54c88ae96ed1f4aaa9ce56c505ed837f3d7.tar.gz vyos-1x-46eda54c88ae96ed1f4aaa9ce56c505ed837f3d7.zip | |
T4758: Fix conflicts op-mode-standardized
Diffstat (limited to 'src/op_mode/nat.py')
| -rwxr-xr-x | src/op_mode/nat.py | 22 | 
1 files changed, 22 insertions, 0 deletions
| diff --git a/src/op_mode/nat.py b/src/op_mode/nat.py index 845dbbb2c..f899eb3dc 100755 --- a/src/op_mode/nat.py +++ b/src/op_mode/nat.py @@ -22,12 +22,18 @@ import xmltodict  from sys import exit  from tabulate import tabulate +from vyos.configquery import ConfigTreeQuery +  from vyos.util import cmd  from vyos.util import dict_search  import vyos.opmode +base = 'nat' +unconf_message = 'NAT is not configured' + +  def _get_xml_translation(direction, family):      """      Get conntrack XML output --src-nat|--dst-nat @@ -277,6 +283,20 @@ def _get_formatted_translation(dict_data, nat_direction, family):      return output +def _verify(func): +    """Decorator checks if NAT config exists""" +    from functools import wraps + +    @wraps(func) +    def _wrapper(*args, **kwargs): +        config = ConfigTreeQuery() +        if not config.exists(base): +            raise vyos.opmode.UnconfiguredSubsystem(unconf_message) +        return func(*args, **kwargs) +    return _wrapper + + +@_verify  def show_rules(raw: bool, direction: str, family: str):      nat_rules = _get_raw_data_rules(direction, family)      if raw: @@ -285,6 +305,7 @@ def show_rules(raw: bool, direction: str, family: str):          return _get_formatted_output_rules(nat_rules, direction, family) +@_verify  def show_statistics(raw: bool, direction: str, family: str):      nat_statistics = _get_raw_data_rules(direction, family)      if raw: @@ -293,6 +314,7 @@ def show_statistics(raw: bool, direction: str, family: str):          return _get_formatted_output_statistics(nat_statistics, direction) +@_verify  def show_translations(raw: bool, direction: str, family: str):      family = 'ipv6' if family == 'inet6' else 'ipv4'      nat_translation = _get_raw_translation(direction, family) | 
