
The plugin binary actually functions in two modes. The first mode is a regular CNI plugin. The second mode (when stared with "daemon" arg) runs a DHCP client daemon. When executed as a CNI plugin, it issues an RPC request to the daemon for actual processing. The daemon is required since a DHCP lease needs to be maintained by periodically renewing it. One instance of the daemon can server arbitrary number of containers/leases.
20 lines
421 B
Bash
Executable File
20 lines
421 B
Bash
Executable File
#!/bin/bash -e
|
|
|
|
# Run a command in a private network namespace
|
|
# set up by CNI plugins
|
|
contid=$(printf '%x%x%x%x' $RANDOM $RANDOM $RANDOM $RANDOM)
|
|
netnspath=/var/run/netns/$contid
|
|
|
|
ip netns add $contid
|
|
ip netns exec $contid ip link set lo up
|
|
./exec-plugins.sh add $contid $netnspath
|
|
|
|
|
|
function cleanup() {
|
|
./exec-plugins.sh del $contid $netnspath
|
|
ip netns delete $contid
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
ip netns exec $contid "$@"
|