Re: How to solve race condition between IPv6 ifup and start of services?
Marc Haber <email@example.com> writes:
> with the increasing deployment of IPv6 I begin to see an issue
> icreasingly often: When an interface is configured for IPv6, it takes
> a few seconds before the IPv6 address actually becomes available.
> Services that are started in this time window won't listen on IPv6,
> which may be unintended behavior. Many people see this behavior as a
> bug in the distribution, which is why I am addressing this issue here
> on -devel.
> Unfortunately, it is non-trivial to find out whether my IPv6
> configuration has completed or not. How many addresses will be
> assigned to us via stateless autoconfig? Are we running with privacy
> extensions? Do we have additional static configuration?
> The most "clean" solutions for this issue would be
> (a) Modify the services to notice when additional IP addresses come up
> and listen there if the service is configured for that IP address
> (b) Parse the configuration of each service in the init script and
> wait for the configured IP addresses to actually come up.
> Both solutions are rather expensive to implement.
> Is there a widely accepted method to do things any easier? It is
> clearly not acceptable to have to manually log in to a newly booted
> server to restart service, neither do I like the idea of changing
> runlevels five minutes after reboot to kick IPv6 services to life.
> Any more ideas?
(c) Modify ifupdown to notice when additional IP addresses come up (or
go away) and run the ifup.d (ifdown.d) scripts for it.