Bug #11650
openFRR configuration broken on restore of manually edited FRR config sections
0%
Description
SG-3100
21.02-RELEASE-p1 (arm)
built on Mon Feb 22 09:38:52 EST 2021
FRR package version 1.1.0_8
I could not find any instructions to remove all of a package's configuration so I did this:
- Made a config backup
- Edited the config xml and remove the FRR config references but left the package sections in place with empty <config></config> sections inside.
- Restored the config
- Router rebooted and reinstalled packages
- Went to reconfigure FRR and it broke sometimes when saving the settings.
- I managed to make the error go away after adding and deleting a prefix list.
- Here is the PHP error:
arm 12.2-STABLE FreeBSD 12.2-STABLE 0e42b7d7eac(HEAD) pfSense-SG-3100 Crash report details: PHP Errors: [09-Mar-2021 21:46:49 America/St_Johns] PHP Fatal error: Uncaught Error: Only variables can be passed by reference in /usr/local/pkg/frr/inc/frr_zebra.inc:295 Stack trace: #0 /usr/local/pkg/frr/inc/frr_zebra.inc(758): frr_zebra_generate_prefixlists(true, false) #1 /usr/local/pkg/frr.inc(683): frr_generate_config_zebra() #2 /usr/local/www/pkg_edit.php(245) : eval()'d code(1): frr_generate_config() #3 /usr/local/www/pkg_edit.php(245): eval() #4 {main} thrown in /usr/local/pkg/frr/inc/frr_zebra.inc on line 295 [09-Mar-2021 21:47:15 America/St_Johns] PHP Fatal error: Uncaught Error: Only variables can be passed by reference in /usr/local/pkg/frr/inc/frr_zebra.inc:295 Stack trace: #0 /usr/local/pkg/frr/inc/frr_zebra.inc(758): frr_zebra_generate_prefixlists(true, false) #1 /usr/local/pkg/frr.inc(683): frr_generate_config_zebra() #2 /usr/local/www/pkg_edit.php(245) : eval()'d code(1): frr_generate_config() #3 /usr/local/www/pkg_edit.php(245): eval() #4 {main} thrown in /usr/local/pkg/frr/inc/frr_zebra.inc on line 295 [09-Mar-2021 21:47:30 America/St_Johns] PHP Fatal error: Uncaught Error: Only variables can be passed by reference in /usr/local/pkg/frr/inc/frr_zebra.inc:295 Stack trace: #0 /usr/local/pkg/frr/inc/frr_zebra.inc(758): frr_zebra_generate_prefixlists(true, false) #1 /usr/local/pkg/frr.inc(683): frr_generate_config_zebra() #2 /usr/local/www/pkg_edit.php(245) : eval()'d code(1): frr_generate_config() #3 /usr/local/www/pkg_edit.php(245): eval() #4 {main} thrown in /usr/local/pkg/frr/inc/frr_zebra.inc on line 295 [09-Mar-2021 21:47:36 America/St_Johns] PHP Fatal error: Uncaught Error: Only variables can be passed by reference in /usr/local/pkg/frr/inc/frr_zebra.inc:295 Stack trace: #0 /usr/local/pkg/frr/inc/frr_zebra.inc(758): frr_zebra_generate_prefixlists(true, false) #1 /usr/local/pkg/frr.inc(683): frr_generate_config_zebra() #2 /usr/local/www/pkg_edit.php(245) : eval()'d code(1): frr_generate_config() #3 /usr/local/www/pkg_edit.php(245): eval() #4 {main} thrown in /usr/local/pkg/frr/inc/frr_zebra.inc on line 295 [09-Mar-2021 21:49:51 America/St_Johns] PHP Fatal error: Uncaught Error: Only variables can be passed by reference in /usr/local/pkg/frr/inc/frr_zebra.inc:262 Stack trace: #0 /usr/local/pkg/frr/inc/frr_zebra.inc(764): frr_zebra_generate_aspaths() #1 /usr/local/pkg/frr.inc(683): frr_generate_config_zebra() #2 /usr/local/www/pkg_edit.php(245) : eval()'d code(1): frr_generate_config() #3 /usr/local/www/pkg_edit.php(245): eval() #4 {main} thrown in /usr/local/pkg/frr/inc/frr_zebra.inc on line 262 [09-Mar-2021 21:49:55 America/St_Johns] PHP Fatal error: Uncaught Error: Only variables can be passed by reference in /usr/local/pkg/frr/inc/frr_zebra.inc:262 Stack trace: #0 /usr/local/pkg/frr/inc/frr_zebra.inc(764): frr_zebra_generate_aspaths() #1 /usr/local/pkg/frr.inc(683): frr_generate_config_zebra() #2 /usr/local/www/pkg_edit.php(245) : eval()'d code(1): frr_generate_config() #3 /usr/local/www/pkg_edit.php(245): eval() #4 {main} thrown in /usr/local/pkg/frr/inc/frr_zebra.inc on line 262 [09-Mar-2021 21:50:03 America/St_Johns] PHP Fatal error: Uncaught Error: Only variables can be passed by reference in /usr/local/pkg/frr/inc/frr_zebra.inc:262 Stack trace: #0 /usr/local/pkg/frr/inc/frr_zebra.inc(764): frr_zebra_generate_aspaths() #1 /usr/local/pkg/frr.inc(683): frr_generate_config_zebra() #2 /usr/local/www/pkg.php(140) : eval()'d code(1): frr_generate_config() #3 /usr/local/www/pkg.php(140): eval() #4 {main} thrown in /usr/local/pkg/frr/inc/frr_zebra.inc on line 262 No FreeBSD crash data found.
Updated by Jim Pingle almost 4 years ago
- Subject changed from pfSense Plus FRR configuration broken on restore of empty FRR config sections to FRR configuration broken on restore of manually edited FRR config sections
- Priority changed from Normal to Very Low
Unless you can replicate this without any sections there at all (Remove them, don't leave them there but empty), I'm not sure there is much we should do here. Nobody should be hand editing the configuration like that, and we can't possibly account for every possible way somebody could incorrectly hand edit configuration data.
Updated by Andrew Green almost 4 years ago
Jim Pingle wrote:
Unless you can replicate this without any sections there at all (Remove them, don't leave them there but empty), I'm not sure there is much we should do here. Nobody should be hand editing the configuration like that, and we can't possibly account for every possible way somebody could incorrectly hand edit configuration data.
Yes I agree, there should be an option somewhere in the web interface to purge a packages config sections in case it gets screwed up (like during an upgrade which happened to me, but my issue may be related to #11392).
My initial SG-3100 upgrade to pfSense Plus failed after the first reboot. I managed to recover the router by logging into the recovery shell and deleting a bunch of 0 byte config file backups which broke the config upgrade script and went into an endless loop.