prefix-list foo { rule 100 { action permit prefix 10.0.0.0/8 } rule 65000 { deny } }
Is a perfectly valid looking structure to anyone used to working with other hierarchical configuration routers (e.g. J).
However, it is not valid in VyOS because rule 65000 results in the following underlying translation to:
commit_configuration: new_config 20 ip prefix-list foo seq 65000 deny
However, instead of detecting this during the parse phase of the commit and reporting the particular rule in question as a problem to the user, it breaks during the apply() phase:
VyOS had an issue completing a command. We are sorry that you encountered a problem while using VyOS. There are a few things you can do to help us (and yourself): - Make sure you are running the latest version of the code available at https://downloads.vyos.io/rolling/current/amd64/vyos-rolling-latest.iso - Consult the forum to see how to handle this issue https://forum.vyos.io - Join our community on slack where our users exchange help and advice https://vyos.slack.com When reporting problems, please include as much information as possible: - do not obfuscate any data (feel free to contact us privately if your business policy requires it) - and include all the information presented below Report Time: 2021-04-24 20:25:03 Image Version: VyOS 1.4-rolling-202104221210 Release Train: sagitta Built by: [email protected] Built on: Fri 23 Apr 2021 01:17 UTC Build UUID: a3f1da87-ba70-496d-b171-557a95990038 Build Commit ID: f038647e8e8a4e Architecture: x86_64 Boot via: installed image System type: bare metal Hardware vendor: Default string Hardware model: Default string Hardware S/N: Default string Hardware UUID: 03000200-0400-0500-0006-000700080009 Traceback (most recent call last): File "/usr/libexec/vyos/conf_mode/policy.py", line 157, in <module> apply(c) File "/usr/libexec/vyos/conf_mode/policy.py", line 129, in apply frr_cfg.commit_configuration(bgp_daemon) File "/usr/lib/python3/dist-packages/vyos/frr.py", line 455, in commit_configuration reload_configuration('\n'.join(self.config), daemon=daemon) File "/usr/lib/python3/dist-packages/vyos/frr.py", line 206, in reload_configuration raise CommitError(f'Configuration FRR failed while commiting code, please enabling debugging to examine logs') vyos.frr.CommitError: Configuration FRR failed while commiting code, please enabling debugging to examine logs
Providing the user with no actionable information about the nature of his/her configuration error other than to look somewhere within the policy stanza and to "enable debugging".
Suggested resolutions:
- Detect this error during the parse phase and report that a prefix-list rule without a prefix is not valid. (This alone resolves the bug)
- Correct the "please enabling[sic] debugging" message to "please enable debugging"
Below are more "feature request", but related.
Add the following to the end of the traceback message above:
- "To enable debugging: 1. touch /tmp/vyos.frr.debug and 2. sudo systemctl stop vyos-configd"
- "To resume normal (non-debugging) operations: 1. sudo systemctl start vos-configd and 2. rm /tmp/vyos.frr.debug"