* Rewrite the way that ifup and ifdown read and write the state file. Instead of storing it in memory and holding a lock on it (preventing concurrent processes from actually being concurrent) use atomic read and write functions that only hold the lock for very short periods.
* Write to the state file when we start bringing up or tearing down the interface, so we don't ever try to do the same operation at the same time. * Update the state file once the operation is complete to ensure we record the actual status of it.
* Restore the dhcp wait, so "ifup eth0" will hang around until DHCP is either successful or times out. Adjust the udev rule again so that udevplug doesn't hang around.