
The current ns package code is very careful about not leaving the calling thread with the overridden namespace set, for example when origns.Set() fails. This is achieved by starting a new green thread, locking its OS thread, and never unlocking it. Which makes golang runtime to scrap the OS thread backing the green thread after the go routine exits. While this works, it's probably not as optimal: stopping and starting a new OS thread is expensive and may be avoided if we unlock the thread after resetting network namespace to the original. On the other hand, if resetting fails, it's better to leave the thread locked and die. While it won't work in all cases, we can still make an attempt to reuse the OS thread when resetting the namespace succeeds. This can be achieved by unlocking the thread conditionally to the namespace reset success. Signed-off-by: Ihar Hrachyshka <ihrachys@redhat.com>
plugins
Some CNI network plugins, maintained by the containernetworking team. For more information, see the individual READMEs.
Read CONTRIBUTING for build and test instructions.
Plugins supplied:
Main: interface-creating
bridge
: Creates a bridge, adds the host and the container to it.ipvlan
: Adds an ipvlan interface in the container.loopback
: Set the state of loopback interface to up.macvlan
: Creates a new MAC address, forwards all traffic to that to the container.ptp
: Creates a veth pair.vlan
: Allocates a vlan device.host-device
: Move an already-existing device into a container.
Windows: windows specific
win-bridge
: Creates a bridge, adds the host and the container to it.win-overlay
: Creates an overlay interface to the container.
IPAM: IP address allocation
dhcp
: Runs a daemon on the host to make DHCP requests on behalf of the containerhost-local
: Maintains a local database of allocated IPsstatic
: Allocate a static IPv4/IPv6 addresses to container and it's useful in debugging purpose.
Meta: other plugins
flannel
: Generates an interface corresponding to a flannel config filetuning
: Tweaks sysctl parameters of an existing interfaceportmap
: An iptables-based portmapping plugin. Maps ports from the host's address space to the container.bandwidth
: Allows bandwidth-limiting through use of traffic control tbf (ingress/egress).sbr
: A plugin that configures source based routing for an interface (from which it is chained).firewall
: A firewall plugin which uses iptables or firewalld to add rules to allow traffic to/from the container.
Sample
The sample plugin provides an example for building your own plugin.
Description
Languages
Go
99.7%
Shell
0.3%