diff mbox series

[v3,1/1] package/cni-plugins: new package

Message ID 20220904125359.18844-1-raphael.pavlidis@gmail.com
State Not Applicable
Headers show
Series [v3,1/1] package/cni-plugins: new package | expand

Commit Message

Raphael Pavlidis Sept. 4, 2022, 12:53 p.m. UTC
cni-plugins contains some reference networking plugins, maintained by
the CNI team.

Signed-off-by: Raphael Pavlidis <raphael.pavlidis@gmail.com>
---
Changes v2 -> v3:
  - DEVELOPERS: add Raphael Pavlids for cni-plugins

Changes v1 -> v2:
  - change BR2_PACKAGE_CNI_PLUGINS from config to menuconfig
  - turn on all plugins by default

 DEVELOPERS                           |   3 +
 package/Config.in                    |   1 +
 package/cni-plugins/Config.in        | 108 +++++++++++++++++++++++++++
 package/cni-plugins/cni-plugins.hash |   3 +
 package/cni-plugins/cni-plugins.mk   |  77 +++++++++++++++++++
 5 files changed, 192 insertions(+)
 create mode 100644 package/cni-plugins/Config.in
 create mode 100644 package/cni-plugins/cni-plugins.hash
 create mode 100644 package/cni-plugins/cni-plugins.mk

Comments

Christian Stewart Sept. 4, 2022, 7:06 p.m. UTC | #1
Hi Raphael,

On Sun, Sep 4, 2022 at 5:54 AM Raphael Pavlidis
<raphael.pavlidis@gmail.com> wrote:
>
> cni-plugins contains some reference networking plugins, maintained by
> the CNI team.
>
> Signed-off-by: Raphael Pavlidis <raphael.pavlidis@gmail.com>

I guess this is a follow-up to my cni-plugins submission?

https://patchwork.ozlabs.org/project/buildroot/patch/20220821053547.667311-1-christian@paral.in/

You're missing a few things:

+ifeq ($(BR2_PACKAGE_LIBAPPARMOR),y)
+CNI_PLUGINS_DEPENDENCIES += libapparmor
+CNI_PLUGINS_TAGS += apparmor
+endif
+
+ifeq ($(BR2_PACKAGE_LIBSECCOMP),y)
+CNI_PLUGINS_TAGS += seccomp
+CNI_PLUGINS_DEPENDENCIES += libseccomp host-pkgconf
+endif
+
+ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
+CNI_PLUGINS_TAGS += selinux
+CNI_PLUGINS_DEPENDENCIES += libselinux
+endif

> ---
> Changes v2 -> v3:
>   - DEVELOPERS: add Raphael Pavlids for cni-plugins
>
> Changes v1 -> v2:
>   - change BR2_PACKAGE_CNI_PLUGINS from config to menuconfig
>   - turn on all plugins by default

Was v2 submitted before?

I like adding the options for the plugins, but you're missing some -
here is the list from the other submission:

+
+CNI_PLUGINS_BUILD_TARGETS = \
+ plugins/ipam/dhcp \
+ plugins/main/bridge \
+ plugins/main/host-device \
+ plugins/main/ipvlan \
+ plugins/main/loopback \
+ plugins/main/macvlan \
+ plugins/main/ptp \
+ plugins/main/vlan \
+ plugins/meta/bandwidth \
+ plugins/meta/firewall \
+ plugins/meta/portmap \
+ plugins/meta/tuning \
+ plugins/meta/vrf


> +
> +if BR2_PACKAGE_CNI_PLUGINS
> +
> +config BR2_PACKAGE_CNI_PLUGINS_BRIDGE
> +       bool "bridge"
> +       default y
> +       help
> +         Creates a bridge, adds the host and the container to it.
> +
> [snip]

Thanks,
Christian Stewart
Raphael Pavlidis Sept. 10, 2022, 6:33 p.m. UTC | #2
Hi Christian

On 04.09.22 21:06, Christian Stewart wrote:
> Hi Raphael,
> 
> On Sun, Sep 4, 2022 at 5:54 AM Raphael Pavlidis
> <raphael.pavlidis@gmail.com> wrote:
>>
>> cni-plugins contains some reference networking plugins, maintained by
>> the CNI team.
>>
>> Signed-off-by: Raphael Pavlidis <raphael.pavlidis@gmail.com>
> 
> I guess this is a follow-up to my cni-plugins submission?
> 
> https://patchwork.ozlabs.org/project/buildroot/patch/20220821053547.667311-1-christian@paral.in/

No, I already started with this patch series since June.

https://lists.buildroot.org/pipermail/buildroot/2022-June/644972.html

> 
> You're missing a few things:
> 
> +ifeq ($(BR2_PACKAGE_LIBAPPARMOR),y)
> +CNI_PLUGINS_DEPENDENCIES += libapparmor
> +CNI_PLUGINS_TAGS += apparmor
> +endif
> +
> +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y)
> +CNI_PLUGINS_TAGS += seccomp
> +CNI_PLUGINS_DEPENDENCIES += libseccomp host-pkgconf
> +endif
> +
> +ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
> +CNI_PLUGINS_TAGS += selinux
> +CNI_PLUGINS_DEPENDENCIES += libselinux
> +endif
> 

Yes, you are right, thanks.

>> ---
>> Changes v2 -> v3:
>>    - DEVELOPERS: add Raphael Pavlids for cni-plugins
>>
>> Changes v1 -> v2:
>>    - change BR2_PACKAGE_CNI_PLUGINS from config to menuconfig
>>    - turn on all plugins by default
> 
> Was v2 submitted before?

Yes, see:

https://lists.buildroot.org/pipermail/buildroot/2022-June/644974.html

> 
> I like adding the options for the plugins, but you're missing some -
> here is the list from the other submission:
> 
> +
> +CNI_PLUGINS_BUILD_TARGETS = \
> + plugins/ipam/dhcp \
> + plugins/main/bridge \
> + plugins/main/host-device \
> + plugins/main/ipvlan \
> + plugins/main/loopback \
> + plugins/main/macvlan \
> + plugins/main/ptp \
> + plugins/main/vlan \
> + plugins/meta/bandwidth \
> + plugins/meta/firewall \
> + plugins/meta/portmap \
> + plugins/meta/tuning \
> + plugins/meta/vrf
> 
> 

Oh, I see I forgot the vrf plugin.

>> +
>> +if BR2_PACKAGE_CNI_PLUGINS
>> +
>> +config BR2_PACKAGE_CNI_PLUGINS_BRIDGE
>> +       bool "bridge"
>> +       default y
>> +       help
>> +         Creates a bridge, adds the host and the container to it.
>> +
>> [snip]
> 
> Thanks,
> Christian Stewart

Quite funny, I also need this package for podman. :)

Thanks,
Raphael Pavlidis
Yann E. MORIN Feb. 7, 2023, 9:03 a.m. UTC | #3
Raphael, All,

On 2022-09-04 14:53 +0200, Raphael Pavlidis spake thusly:
> cni-plugins contains some reference networking plugins, maintained by
> the CNI team.
> 
> Signed-off-by: Raphael Pavlidis <raphael.pavlidis@gmail.com>

We had cni-plugins added by Christian, and we're now at version 1.2.0.

I'm not sure whether it makes sense to have a selection for each and
individual plugins, but if you think that does, then feel free to respin
an update.

Thanks!

Regards,
Yann E. MORIN.

> ---
> Changes v2 -> v3:
>   - DEVELOPERS: add Raphael Pavlids for cni-plugins
> 
> Changes v1 -> v2:
>   - change BR2_PACKAGE_CNI_PLUGINS from config to menuconfig
>   - turn on all plugins by default
> 
>  DEVELOPERS                           |   3 +
>  package/Config.in                    |   1 +
>  package/cni-plugins/Config.in        | 108 +++++++++++++++++++++++++++
>  package/cni-plugins/cni-plugins.hash |   3 +
>  package/cni-plugins/cni-plugins.mk   |  77 +++++++++++++++++++
>  5 files changed, 192 insertions(+)
>  create mode 100644 package/cni-plugins/Config.in
>  create mode 100644 package/cni-plugins/cni-plugins.hash
>  create mode 100644 package/cni-plugins/cni-plugins.mk
> 
> diff --git a/DEVELOPERS b/DEVELOPERS
> index d2bd0d809a..208330881c 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -2506,6 +2506,9 @@ F:	support/testing/tests/package/test_python_jmespath.py
>  F:	support/testing/tests/package/test_python_rsa.py
>  F:	support/testing/tests/package/test_python_s3transfer.py
>  
> +N:	Raphael Pavlidis <raphael.pavlidis@gmail.com>
> +F:	package/cni-plugins/
> +
>  N:	Refik Tuzakli <tuzakli.refik@gmail.com>
>  F:	package/freescale-imx/
>  F:	package/paho-mqtt-cpp/
> diff --git a/package/Config.in b/package/Config.in
> index d1c098c48f..00e9a5a99f 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -1812,6 +1812,7 @@ menu "Networking"
>  	source "package/bluez5_utils-headers/Config.in"
>  	source "package/c-ares/Config.in"
>  	source "package/cgic/Config.in"
> +	source "package/cni-plugins/Config.in"
>  	source "package/cppzmq/Config.in"
>  	source "package/curlpp/Config.in"
>  	source "package/czmq/Config.in"
> diff --git a/package/cni-plugins/Config.in b/package/cni-plugins/Config.in
> new file mode 100644
> index 0000000000..9ce13f4bbe
> --- /dev/null
> +++ b/package/cni-plugins/Config.in
> @@ -0,0 +1,108 @@
> +menuconfig BR2_PACKAGE_CNI_PLUGINS
> +	bool "cni-plugins"
> +	depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
> +	depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS
> +	help
> +	  Some reference and example networking plugins, maintained by the CNI team.
> +
> +	  https://github.com/containernetworking/plugins
> +
> +if BR2_PACKAGE_CNI_PLUGINS
> +
> +config BR2_PACKAGE_CNI_PLUGINS_BRIDGE
> +	bool "bridge"
> +	default y
> +	help
> +	  Creates a bridge, adds the host and the container to it.
> +
> +config BR2_PACKAGE_CNI_PLUGINS_IPVLAN
> +	bool "ipvlan"
> +	default y
> +	help
> +	  Adds an ipvlan interface in the container.
> +
> +config BR2_PACKAGE_CNI_PLUGINS_LOOPBACK
> +	bool "loopback"
> +	default y
> +	help
> +	  Set the state of loopback interface to up.
> +
> +config BR2_PACKAGE_CNI_PLUGINS_MACVLAN
> +	bool "macvlan"
> +	default y
> +	help
> +	  Creates a new MAC address, forwards all traffic to that to the container.
> +
> +config BR2_PACKAGE_CNI_PLUGINS_PTP
> +	bool "ptp"
> +	default y
> +	help
> +	  Creates a veth pair.
> +
> +config BR2_PACKAGE_CNI_PLUGINS_VLAN
> +	bool "vlan"
> +	default y
> +	help
> +	  Creates a veth pair.
> +
> +config BR2_PACKAGE_CNI_PLUGINS_HOST_DEVICE
> +	bool "host-device"
> +	default y
> +	help
> +	  Move an already-existing device into a container.
> +
> +config BR2_PACKAGE_CNI_PLUGINS_DHCP
> +	bool "dhcp"
> +	default y
> +	help
> +	  Runs a daemon on the host to make DHCP requests on behalf of the
> +	  container.
> +
> +config BR2_PACKAGE_CNI_PLUGINS_HOST_LOCAL
> +	bool "host-local"
> +	default y
> +	help
> +	  Maintains a local database of allocated IPs.
> +
> +config BR2_PACKAGE_CNI_PLUGINS_STATIC
> +	bool "static"
> +	default y
> +	help
> +	  Allocate a single static IPv4/IPv6 address to container. It's useful in
> +	  debugging purpose.
> +
> +config BR2_PACKAGE_CNI_PLUGINS_TUNING
> +	bool "tuning"
> +	default y
> +	help
> +	  Tweaks sysctl parameters of an existing interface.
> +
> +config BR2_PACKAGE_CNI_PLUGINS_PORTMAP
> +	bool "portmap"
> +	default y
> +	help
> +	  An iptables-based portmapping plugin. Maps ports from the host's address
> +	  space to the container.
> +
> +config BR2_PACKAGE_CNI_PLUGINS_BANDWIDTH
> +	bool "bandwidth"
> +	default y
> +	help
> +	  Allows bandwidth-limiting through use of traffic control tbf
> +	  (ingress/egress).
> +
> +config BR2_PACKAGE_CNI_PLUGINS_SBR
> +	bool "sbr"
> +	default y
> +	help
> +	  A plugin that configures source based routing for an interface (from which
> +	  it is chained).
> +
> +config BR2_PACKAGE_CNI_PLUGINS_FIREWALL
> +	bool "firewall"
> +	default y
> +	help
> +	  A firewall plugin which uses iptables or firewalld to add rules to allow
> +	  traffic to/from the container.
> +
> +endif # BR2_PACKAGE_CNI_PLUGINS
> diff --git a/package/cni-plugins/cni-plugins.hash b/package/cni-plugins/cni-plugins.hash
> new file mode 100644
> index 0000000000..c987e1ff45
> --- /dev/null
> +++ b/package/cni-plugins/cni-plugins.hash
> @@ -0,0 +1,3 @@
> +# Locally computed:
> +sha256  c86c44877c47f69cd23611e22029ab26b613f620195b76b3ec20f589367a7962  cni-plugins-1.1.1.tar.gz
> +sha256  b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1  LICENSE
> diff --git a/package/cni-plugins/cni-plugins.mk b/package/cni-plugins/cni-plugins.mk
> new file mode 100644
> index 0000000000..02abcd283c
> --- /dev/null
> +++ b/package/cni-plugins/cni-plugins.mk
> @@ -0,0 +1,77 @@
> +################################################################################
> +#
> +# cni-plugins
> +#
> +################################################################################
> +
> +CNI_PLUGINS_VERSION = 1.1.1
> +CNI_PLUGINS_SITE = $(call github,containernetworking,plugins,v$(CNI_PLUGINS_VERSION))
> +CNI_PLUGINS_LICENSE = Apache-2.0
> +CNI_PLUGINS_LICENSE_FILES = LICENSE
> +
> +ifeq ($(BR2_PACKAGE_CNI_PLUGINS_BRIDGE),y)
> +CNI_PLUGINS_BUILD_TARGETS += plugins/main/bridge
> +endif
> +
> +ifeq ($(BR2_PACKAGE_CNI_PLUGINS_IPVLAN),y)
> +CNI_PLUGINS_BUILD_TARGETS += plugins/main/ipvlan
> +endif
> +
> +ifeq ($(BR2_PACKAGE_CNI_PLUGINS_LOOPBACK),y)
> +CNI_PLUGINS_BUILD_TARGETS += plugins/main/loopback
> +endif
> +
> +ifeq ($(BR2_PACKAGE_CNI_PLUGINS_MACVLAN),y)
> +CNI_PLUGINS_BUILD_TARGETS += plugins/main/macvlan
> +endif
> +
> +ifeq ($(BR2_PACKAGE_CNI_PLUGINS_PTP),y)
> +CNI_PLUGINS_BUILD_TARGETS += plugins/main/ptp
> +endif
> +
> +ifeq ($(BR2_PACKAGE_CNI_PLUGINS_VLAN),y)
> +CNI_PLUGINS_BUILD_TARGETS += plugins/main/vlan
> +endif
> +
> +ifeq ($(BR2_PACKAGE_CNI_PLUGINS_HOST_DEVICE),y)
> +CNI_PLUGINS_BUILD_TARGETS += plugins/main/host-device
> +endif
> +
> +ifeq ($(BR2_PACKAGE_CNI_PLUGINS_DHCP),y)
> +CNI_PLUGINS_BUILD_TARGETS += plugins/ipam/dhcp
> +endif
> +
> +ifeq ($(BR2_PACKAGE_CNI_PLUGINS_HOST_LOCAL),y)
> +CNI_PLUGINS_BUILD_TARGETS += plugins/ipam/host-local
> +endif
> +
> +ifeq ($(BR2_PACKAGE_CNI_PLUGINS_STATIC),y)
> +CNI_PLUGINS_BUILD_TARGETS += plugins/ipam/static
> +endif
> +
> +ifeq ($(BR2_PACKAGE_CNI_PLUGINS_TUNING),y)
> +CNI_PLUGINS_BUILD_TARGETS += plugins/meta/tuning
> +endif
> +
> +ifeq ($(BR2_PACKAGE_CNI_PLUGINS_PORTMAP),y)
> +CNI_PLUGINS_BUILD_TARGETS += plugins/meta/portmap
> +endif
> +
> +ifeq ($(BR2_PACKAGE_CNI_PLUGINS_BANDWIDTH),y)
> +CNI_PLUGINS_BUILD_TARGETS += plugins/meta/bandwidth
> +endif
> +
> +ifeq ($(BR2_PACKAGE_CNI_PLUGINS_SBR),y)
> +CNI_PLUGINS_BUILD_TARGETS += plugins/meta/sbr
> +endif
> +
> +ifeq ($(BR2_PACKAGE_CNI_PLUGINS_FIREWALL),y)
> +CNI_PLUGINS_BUILD_TARGETS += plugins/meta/firewall
> +endif
> +
> +define CNI_PLUGINS_INSTALL_TARGET_CMDS
> +	$(INSTALL) -d  $(TARGET_DIR)/usr/libexec/cni
> +	$(INSTALL) -D -m 0755 $(@D)/bin/* $(TARGET_DIR)/usr/libexec/cni/
> +endef
> +
> +$(eval $(golang-package))
> -- 
> 2.35.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index d2bd0d809a..208330881c 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2506,6 +2506,9 @@  F:	support/testing/tests/package/test_python_jmespath.py
 F:	support/testing/tests/package/test_python_rsa.py
 F:	support/testing/tests/package/test_python_s3transfer.py
 
+N:	Raphael Pavlidis <raphael.pavlidis@gmail.com>
+F:	package/cni-plugins/
+
 N:	Refik Tuzakli <tuzakli.refik@gmail.com>
 F:	package/freescale-imx/
 F:	package/paho-mqtt-cpp/
diff --git a/package/Config.in b/package/Config.in
index d1c098c48f..00e9a5a99f 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1812,6 +1812,7 @@  menu "Networking"
 	source "package/bluez5_utils-headers/Config.in"
 	source "package/c-ares/Config.in"
 	source "package/cgic/Config.in"
+	source "package/cni-plugins/Config.in"
 	source "package/cppzmq/Config.in"
 	source "package/curlpp/Config.in"
 	source "package/czmq/Config.in"
diff --git a/package/cni-plugins/Config.in b/package/cni-plugins/Config.in
new file mode 100644
index 0000000000..9ce13f4bbe
--- /dev/null
+++ b/package/cni-plugins/Config.in
@@ -0,0 +1,108 @@ 
+menuconfig BR2_PACKAGE_CNI_PLUGINS
+	bool "cni-plugins"
+	depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
+	depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS
+	help
+	  Some reference and example networking plugins, maintained by the CNI team.
+
+	  https://github.com/containernetworking/plugins
+
+if BR2_PACKAGE_CNI_PLUGINS
+
+config BR2_PACKAGE_CNI_PLUGINS_BRIDGE
+	bool "bridge"
+	default y
+	help
+	  Creates a bridge, adds the host and the container to it.
+
+config BR2_PACKAGE_CNI_PLUGINS_IPVLAN
+	bool "ipvlan"
+	default y
+	help
+	  Adds an ipvlan interface in the container.
+
+config BR2_PACKAGE_CNI_PLUGINS_LOOPBACK
+	bool "loopback"
+	default y
+	help
+	  Set the state of loopback interface to up.
+
+config BR2_PACKAGE_CNI_PLUGINS_MACVLAN
+	bool "macvlan"
+	default y
+	help
+	  Creates a new MAC address, forwards all traffic to that to the container.
+
+config BR2_PACKAGE_CNI_PLUGINS_PTP
+	bool "ptp"
+	default y
+	help
+	  Creates a veth pair.
+
+config BR2_PACKAGE_CNI_PLUGINS_VLAN
+	bool "vlan"
+	default y
+	help
+	  Creates a veth pair.
+
+config BR2_PACKAGE_CNI_PLUGINS_HOST_DEVICE
+	bool "host-device"
+	default y
+	help
+	  Move an already-existing device into a container.
+
+config BR2_PACKAGE_CNI_PLUGINS_DHCP
+	bool "dhcp"
+	default y
+	help
+	  Runs a daemon on the host to make DHCP requests on behalf of the
+	  container.
+
+config BR2_PACKAGE_CNI_PLUGINS_HOST_LOCAL
+	bool "host-local"
+	default y
+	help
+	  Maintains a local database of allocated IPs.
+
+config BR2_PACKAGE_CNI_PLUGINS_STATIC
+	bool "static"
+	default y
+	help
+	  Allocate a single static IPv4/IPv6 address to container. It's useful in
+	  debugging purpose.
+
+config BR2_PACKAGE_CNI_PLUGINS_TUNING
+	bool "tuning"
+	default y
+	help
+	  Tweaks sysctl parameters of an existing interface.
+
+config BR2_PACKAGE_CNI_PLUGINS_PORTMAP
+	bool "portmap"
+	default y
+	help
+	  An iptables-based portmapping plugin. Maps ports from the host's address
+	  space to the container.
+
+config BR2_PACKAGE_CNI_PLUGINS_BANDWIDTH
+	bool "bandwidth"
+	default y
+	help
+	  Allows bandwidth-limiting through use of traffic control tbf
+	  (ingress/egress).
+
+config BR2_PACKAGE_CNI_PLUGINS_SBR
+	bool "sbr"
+	default y
+	help
+	  A plugin that configures source based routing for an interface (from which
+	  it is chained).
+
+config BR2_PACKAGE_CNI_PLUGINS_FIREWALL
+	bool "firewall"
+	default y
+	help
+	  A firewall plugin which uses iptables or firewalld to add rules to allow
+	  traffic to/from the container.
+
+endif # BR2_PACKAGE_CNI_PLUGINS
diff --git a/package/cni-plugins/cni-plugins.hash b/package/cni-plugins/cni-plugins.hash
new file mode 100644
index 0000000000..c987e1ff45
--- /dev/null
+++ b/package/cni-plugins/cni-plugins.hash
@@ -0,0 +1,3 @@ 
+# Locally computed:
+sha256  c86c44877c47f69cd23611e22029ab26b613f620195b76b3ec20f589367a7962  cni-plugins-1.1.1.tar.gz
+sha256  b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1  LICENSE
diff --git a/package/cni-plugins/cni-plugins.mk b/package/cni-plugins/cni-plugins.mk
new file mode 100644
index 0000000000..02abcd283c
--- /dev/null
+++ b/package/cni-plugins/cni-plugins.mk
@@ -0,0 +1,77 @@ 
+################################################################################
+#
+# cni-plugins
+#
+################################################################################
+
+CNI_PLUGINS_VERSION = 1.1.1
+CNI_PLUGINS_SITE = $(call github,containernetworking,plugins,v$(CNI_PLUGINS_VERSION))
+CNI_PLUGINS_LICENSE = Apache-2.0
+CNI_PLUGINS_LICENSE_FILES = LICENSE
+
+ifeq ($(BR2_PACKAGE_CNI_PLUGINS_BRIDGE),y)
+CNI_PLUGINS_BUILD_TARGETS += plugins/main/bridge
+endif
+
+ifeq ($(BR2_PACKAGE_CNI_PLUGINS_IPVLAN),y)
+CNI_PLUGINS_BUILD_TARGETS += plugins/main/ipvlan
+endif
+
+ifeq ($(BR2_PACKAGE_CNI_PLUGINS_LOOPBACK),y)
+CNI_PLUGINS_BUILD_TARGETS += plugins/main/loopback
+endif
+
+ifeq ($(BR2_PACKAGE_CNI_PLUGINS_MACVLAN),y)
+CNI_PLUGINS_BUILD_TARGETS += plugins/main/macvlan
+endif
+
+ifeq ($(BR2_PACKAGE_CNI_PLUGINS_PTP),y)
+CNI_PLUGINS_BUILD_TARGETS += plugins/main/ptp
+endif
+
+ifeq ($(BR2_PACKAGE_CNI_PLUGINS_VLAN),y)
+CNI_PLUGINS_BUILD_TARGETS += plugins/main/vlan
+endif
+
+ifeq ($(BR2_PACKAGE_CNI_PLUGINS_HOST_DEVICE),y)
+CNI_PLUGINS_BUILD_TARGETS += plugins/main/host-device
+endif
+
+ifeq ($(BR2_PACKAGE_CNI_PLUGINS_DHCP),y)
+CNI_PLUGINS_BUILD_TARGETS += plugins/ipam/dhcp
+endif
+
+ifeq ($(BR2_PACKAGE_CNI_PLUGINS_HOST_LOCAL),y)
+CNI_PLUGINS_BUILD_TARGETS += plugins/ipam/host-local
+endif
+
+ifeq ($(BR2_PACKAGE_CNI_PLUGINS_STATIC),y)
+CNI_PLUGINS_BUILD_TARGETS += plugins/ipam/static
+endif
+
+ifeq ($(BR2_PACKAGE_CNI_PLUGINS_TUNING),y)
+CNI_PLUGINS_BUILD_TARGETS += plugins/meta/tuning
+endif
+
+ifeq ($(BR2_PACKAGE_CNI_PLUGINS_PORTMAP),y)
+CNI_PLUGINS_BUILD_TARGETS += plugins/meta/portmap
+endif
+
+ifeq ($(BR2_PACKAGE_CNI_PLUGINS_BANDWIDTH),y)
+CNI_PLUGINS_BUILD_TARGETS += plugins/meta/bandwidth
+endif
+
+ifeq ($(BR2_PACKAGE_CNI_PLUGINS_SBR),y)
+CNI_PLUGINS_BUILD_TARGETS += plugins/meta/sbr
+endif
+
+ifeq ($(BR2_PACKAGE_CNI_PLUGINS_FIREWALL),y)
+CNI_PLUGINS_BUILD_TARGETS += plugins/meta/firewall
+endif
+
+define CNI_PLUGINS_INSTALL_TARGET_CMDS
+	$(INSTALL) -d  $(TARGET_DIR)/usr/libexec/cni
+	$(INSTALL) -D -m 0755 $(@D)/bin/* $(TARGET_DIR)/usr/libexec/cni/
+endef
+
+$(eval $(golang-package))