I am programming for a embedded system. When this system boots up it reads from a configuration file some data and execute rules to put the system state according to the configuration read. This configuration is dependent on the environment/requeriments of each customer and can be managed via management interfaces (as a Web interface).
Let me explain myself better: this embedded system is a home router (CPE) for ISPs. The configuration for the router is stored in a flash partition, and there is a default configuration file stored in the file system that is included in the firmware image. One of this ISPs has requested us to release a new firmware which should include a different configuration for one of the network interfaces used by the router.
The problem is this ISP does not want to perform a reset to default configuration file in his customers CPEs to not loose the configuration that each customer has saved on it (as the ESSID for the WLAN interface). The ISP wants the firmware to be able to connect using the new requirement for the network interface once the CPE has been upgraded.
One of my co-workers has proposed this: when the new firmware boots up, it checks if the interface exist in the CPE configuration and if not it adds it during boot time to the configuration file.
I would like to explain them (ISP and co-worker) using good reasons why the configuration file should not be modified at run time except by the management interfaces.