Page MenuHomeVyOS Platform

State "overridden" not working properly
Confirmed, NormalPublicBUG

Description

State "overridden" not correctly delete rules when new rules use the same number

If the existing rule has the destination port and I want to use "overridden" to set rule with the source port (same number), the new rule will have both

ANSIBLE VERSION

ansible --version
ansible 2.10.7
  config file = None
  configured module search path = ['/Users/filda/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /opt/homebrew/Cellar/ansible/3.2.0/libexec/lib/python3.9/site-packages/ansible
  executable location = /opt/homebrew/bin/ansible
  python version = 3.9.4 (default, Apr  4 2021, 17:42:23) [Clang 12.0.0 (clang-1200.0.32.29)]

CONFIGURATION

COLLECTIONS_PATHS(/Users/filda/Documents/PVyos/network/ansible.cfg) = ['/Users/filda/Documents/PVyos/network/ansible/collections']
DEFAULT_MODULE_PATH(/Users/filda/Documents/PVyos/network/ansible.cfg) = ['/Users/filda/Documents/PVyos/network/ansible/modules']
DEPRECATION_WARNINGS(/Users/filda/Documents/PVyos/network/ansible.cfg) = False
HOST_KEY_CHECKING(/Users/filda/Documents/PVyos/network/ansible.cfg) = False
INTERPRETER_PYTHON(/Users/filda/Documents/PVyos/network/ansible.cfg) = /usr/bin/python3

OS / ENVIRONMENT

Version: VyOS 1.4-rolling-202104091411
Release Train: sagitta

Built by: [email protected]
Built on: Fri 09 Apr 2021 12:16 UTC
Build UUID: 2036e80c-34a1-4429-9f35-1869cca76500
Build Commit ID: b3ba57ac9423a9

Architecture: x86_64
Boot via: installed image
System type: KVM guest

Hardware vendor: QEMU
Hardware model: Standard PC (i440FX + PIIX, 1996)
Hardware S/N:
Hardware UUID: 3f026c93-de24-4bfc-9476-42157a49e281

Copyright: VyOS maintainers and contributors

STEPS TO REPRODUCE

set firewall group address-group Public4_IPs address '1.1.1.1'
set firewall group address-group Public4_IPs description 'Public IP'
set firewall name WAN-GW rule 1 action 'accept'
set firewall name WAN-GW rule 1 description 'Accept already established connections'
set firewall name WAN-GW rule 1 state established 'enable'
set firewall name WAN-GW rule 1 state related 'enable'
set firewall name WAN-GW rule 2 action 'accept'
set firewall name WAN-GW rule 2 description 'Accept routers keepalive'
set firewall name WAN-GW rule 2 destination port '694'
set firewall name WAN-GW rule 2 protocol 'udp'
set firewall name WAN-GW rule 2 source group address-group 'Public4_IPs'
set firewall name WAN-GW rule 3 action 'accept'
set firewall name WAN-GW rule 3 description 'Accept wireguard connection'
set firewall name WAN-GW rule 3 destination port '51820'
set firewall name WAN-GW rule 3 protocol 'udp'
set firewall name WAN-IN rule 1 action 'accept'
set firewall name WAN-IN rule 1 description 'Accept already established connections'
set firewall name WAN-IN rule 1 state established 'enable'
set firewall name WAN-IN rule 1 state related 'enable'
- name: Setting firewall rules
  vyos.vyos.vyos_firewall_rules:
    config:
      - afi: ipv4
        rule_sets:
        - name: WAN-GW
          description: Communication from WAN to GW
          default_action: drop
          rules:
            - description: Accept routers keepalive
              action: accept
              number: 2
              protocol: "udp"
              destination:
                port: "1111"
            - description: Accept routers keepalive
              action: accept
              number: 3
              protocol: "udp"
              source:
                port: "2222"
    state: overridden

EXPECTED RESULTS
Delete all rules
delete firewall name WAN-IN
delete firewall name WAN-GW

Set new rules

set firewall name WAN-GW rule 2 description "Accept routers keepalive"
set firewall name WAN-GW rule 2 action "accept"
set firewall name WAN-GW rule 2 protocol "udp"
set firewall name WAN-GW rule 2 destination port "1111"
set firewall name WAN-GW rule 3 description "Accept routers keepalive"
set firewall name WAN-GW rule 3 action "accept"
set firewall name WAN-GW rule 3 protocol "udp"
set firewall name WAN-GW rule 3 source port "2222"

ACTUAL RESULTS
delete firewall name WAN-GW rule 1
delete firewall name WAN-IN
set firewall name WAN-GW rule 2 destination port 1111
set firewall name WAN-GW rule 3 description 'Accept routers keepalive'
set firewall name WAN-GW rule 3 source port 2222

"before": [
    {
        "afi": "ipv4",
        "rule_sets": [
            {
                "default_action": "drop",
                "description": "Communication from WAN to GW",
                "name": "WAN-GW",
                "rules": [
                    {
                        "action": "accept",
                        "description": "Accept already established connections",
                        "number": 1,
                        "state": {
                            "established": true,
                            "related": true
                        }
                    },
                    {
                        "action": "accept",
                        "description": "Accept routers keepalive",
                        "destination": {
                            "port": "694"
                        },
                        "number": 2,
                        "protocol": "udp",
                        "source": {
                            "group": {
                                "address_group": "Public4_IPs"
                            }
                        }
                    },
                    {
                        "action": "accept",
                        "description": "Accept wireguard connection",
                        "destination": {
                            "port": "51820"
                        },
                        "number": 3,
                        "protocol": "udp"
                    }
                ]
            },
            {
                "default_action": "drop",
                "description": "Communication from WAN through GW",
                "name": "WAN-IN",
                "rules": [
                    {
                        "action": "accept",
                        "description": "Accept already established connections",
                        "number": 1,
                        "state": {
                            "established": true,
                            "related": true
                        }
                    }
                ]
            }
        ]
    }
],
"changed": true,
"commands": [
    "delete firewall name WAN-GW rule 1",
    "delete firewall name WAN-IN",
    "set firewall name WAN-GW rule 2 destination port 1111",
    "set firewall name WAN-GW rule 3 description 'Accept routers keepalive'",
    "set firewall name WAN-GW rule 3 source port 2222"
],
"invocation": {
    "module_args": {
        "config": [
            {
                "afi": "ipv4",
                "rule_sets": [
                    {
                        "default_action": "drop",
                        "description": "Communication from WAN to GW",
                        "enable_default_log": null,
                        "name": "WAN-GW",
                        "rules": [
                            {
                                "action": "accept",
                                "description": "Accept routers keepalive",
                                "destination": {
                                    "port": "1111"
                                },
                                "number": 2,
                                "protocol": "udp"
                            },
                            {
                                "action": "accept",
                                "description": "Accept routers keepalive",
                                "number": 3,
                                "protocol": "udp",
                                "source": {
                                    "port": "2222"
                                }
                            }
                        ]
                    }
                ]
            }
        ],
        "running_config": null,
        "state": "overridden"
    }
}

Details

Difficulty level
Unknown (require assessment)
Version
5.0.0
Why the issue appeared?
Will be filled on close
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Bug (incorrect behavior)

Event Timeline

syncer changed the task status from Open to Confirmed.
syncer triaged this task as Normal priority.
vyosbot added a project: Restricted Project.Sat, Oct 26, 6:08 AM