This function does 2 unecessary things:
. Remove the IP address from interface set as Track, what is wrong and
should be done by dhcp6c
. Set a fixed IP when track6-interface is SLAAC, what never happens
since it's impossible to track a SLAAC interface
When interfaces go down and up we need to know which interface (vr1, vr2 etc) each OpenVPN instance is using so we can optimize our decision about which instances to resync. That data is not in the conf file (the conf file contains the IP address the instance binds to). This change puts the interface name into a little file in /var/etc/openvpn for later use.
When a link comes up, call interface_configure with p2=true. This makes it run various extra routines such as system_routing_configure - which will put back the default route or other static routes that might have been removed when the link was down.
There were some includes needed when calling into here from rc.linkup - somehow everything else that calls interface_configure(p1, "true", p3) has already included these.
Various fixups to make this work. Now I can:
- Unplug an interface, any OpenVPN servers/clients in a gateway group using that interface are restarted and come up on the highest tier available interface. OpenVPN servers/clients that are only on that interface go down, of course.
- Plug in the cable again, any OpenVPN servers/clients in a gateway group using that interface are restarted and come up on the now-highest tier available interface (i.e. they fail back if the interface that just came up is higher tier). OpenVPN servers/clients that are only on that interface now come up.
Make apinger pass the gateway parameter both when an alarm alarms (gateway is down) and when it comes good (gateway is up). This way the downstream openvpn and dyndns code can know what happened and do sensible stuff.
Return the friendly interface name ("wan", "opt1" etc) rather than the actual device name ("vr0", "vr1" etc). The openvpn and dynamic dns code that uses this needs to work with various entries in the config that all use the friendly interface name.
. Always initialize it to 0 when it's undefined
. Remove unecessary initializations and checks
. Bump config version to 9.5
. Write an upgrade config function to initialize old configs properly