bcnm
Software
skarnet.org
The bcnm-waitif program
bcnm-waitif waits until a set of network interfaces are in the desired state,
or a timeout occurs. Then it exits. It is typically used to avoid race conditions
in a service startup sequence.
Interface
bcnm-waitif [ -u | -d ] [ -t timeout ] [ -k kbufsize ] mask interface...
- bcnm-waitif reads the state of all the interfaces specified by
name as the interface... arguments.
- If all the listed interfaces match the state defined in mask,
it exits 0.
- Else, it waits for network interface state changes, and performs the
check again.
- It loops until all the listed interfaces are in the desired state,
or a timeout (if defined) occurs.
mask meaning
mask is an unsigned integer representing a bitmask for the
flags to be tested. If several bits are given, the wanted state is the
conjunction of these flags: the condition will be true if all
those checks pass.
- 1: the interface exists (the kernel knows about it)
- 2: the interface is UP (the administrator has activated it)
- 4: the interface is RUNNING (functional, not unplugged)
Options
- -u : up. bcnm-waitif will wait until all
the states defined in mask are reached by all the interfaces
in interface.... This is the default.
- -d : down. bcnm-waitif will wait until
none of the states defined in mask is true.
- -t timeout : if the desired state
still has not been reached after timeout milliseconds,
bcnm-waitif will exit 99 with an error message. The default
is 0, meaning there is no timeout and the program can wait forever.
- -k kbufsize : use kbufsize
bytes for the netlink socket buffer. Too small a buffer risks losing
state change events and reporting incorrect results. Too large a buffer
wastes memory. Default is 131072, which is probably on the large side.
Exit codes
- 0: success
- 99: timed out
- 100: wrong usage
- 111: system call failed