k3s has removed some standard plugins, which we need. So fork and add it back.
Go to file
Songmin Li d61e7e5e1f fix(dhcp): can not renew an ip address
The dhcp server is systemd-networkd, and the dhcp
plugin can request an ip but can not renew it.
The systemd-networkd just ignore the renew request.

```
2024/09/14 21:46:00 no DHCP packet received within 10s
2024/09/14 21:46:00 retrying in 31.529038 seconds
2024/09/14 21:46:42 no DHCP packet received within 10s
2024/09/14 21:46:42 retrying in 63.150490 seconds
2024/09/14 21:47:45 98184616c91f15419f5cacd012697f85afaa2daeb5d3233e28b0ec21589fb45a/iot/eth1: no more tries
2024/09/14 21:47:45 98184616c91f15419f5cacd012697f85afaa2daeb5d3233e28b0ec21589fb45a/iot/eth1: renewal time expired, rebinding
2024/09/14 21:47:45 Link "eth1" down. Attempting to set up
2024/09/14 21:47:45 98184616c91f15419f5cacd012697f85afaa2daeb5d3233e28b0ec21589fb45a/iot/eth1: lease rebound, expiration is 2024-09-14 22:47:45.309270751 +0800 CST m=+11730.048516519
```

Follow the https://datatracker.ietf.org/doc/html/rfc2131#section-4.3.6,
following options must not be sent in renew

- Requested IP Address
- Server Identifier

Since the upstream code has been inactive for 6 years,
we should switch to another dhcpv4 library.
The new selected one is https://github.com/insomniacslk/dhcp.

Signed-off-by: Songmin Li <lisongmin@protonmail.com>
2024-10-14 17:42:30 +02:00
.github fix(dhcp): can not renew an ip address 2024-10-14 17:42:30 +02:00
integration make test working again 2024-10-14 11:47:24 +02:00
pkg host-device: use temp network namespace for rename 2024-10-02 10:30:27 +02:00
plugins fix(dhcp): can not renew an ip address 2024-10-14 17:42:30 +02:00
scripts Update to Go v1.22 in CI and release 2024-03-11 15:52:12 +01:00
vendor fix(dhcp): can not renew an ip address 2024-10-14 17:42:30 +02:00
.gitignore Update Vendor 2018-09-21 00:34:07 +08:00
.golangci.yml ci, go.mod: bump to go 1.23 (#1094) 2024-09-17 12:28:55 +02:00
.yamllint.yml ci(lint): setup yamllint linter 2023-02-25 12:10:11 +00:00
build_linux.sh build: Use POSIX sh for shell scripts 2023-09-29 16:57:19 +02:00
build_windows.sh build: Use POSIX sh for shell scripts 2023-09-29 16:57:19 +02:00
CONTRIBUTING.md Merge pull request #396 from oshothebig/contributing-doc 2019-10-09 10:21:03 -05:00
DCO Add missing DCO 2018-10-11 16:15:24 +01:00
go.mod fix(dhcp): can not renew an ip address 2024-10-14 17:42:30 +02:00
go.sum fix(dhcp): can not renew an ip address 2024-10-14 17:42:30 +02:00
LICENSE Initial commit 2017-03-10 16:46:52 +01:00
OWNERS.md Update email to gmail 2022-12-07 11:57:16 -07:00
README.md dummy: Create a Dummy CNI plugin that creates a virtual interface. 2022-08-11 13:50:37 +01:00
RELEASING.md Add release process 2017-07-11 13:57:49 -07:00
test_linux.sh build: Use POSIX sh for shell scripts 2023-09-29 16:57:19 +02:00
test_windows.sh build: Use POSIX sh for shell scripts 2023-09-29 16:57:19 +02:00

test

Plugins

Some CNI network plugins, maintained by the containernetworking team. For more information, see the CNI website.

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.
  • dummy: Creates a new Dummy device in the 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 container
  • host-local: Maintains a local database of allocated IPs
  • static: Allocate a single static IPv4/IPv6 address to container. It's useful in debugging purpose.

Meta: other plugins

  • tuning: Tweaks sysctl parameters of an existing interface
  • portmap: 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.

Contact

For any questions about CNI, please reach out via:

If you have a security issue to report, please do so privately to the email addresses listed in the OWNERS file.