Skip to content

Conversation

@LGA1150
Copy link
Contributor

@LGA1150 LGA1150 commented Dec 10, 2025

📦 Package Details

Maintainer: none (new package)

Description:
libteam is a userspace tool to configure Linux network teaming.

This depends on openwrt/openwrt#21120


🧪 Run Testing Details

  • OpenWrt Version: SNAPSHOT r32276-d11b77db5e
  • OpenWrt Target/Subtarget: mediatek/mt7622
  • OpenWrt Device: Xiaomi Redmi Router AX6S

✅ Formalities

  • I have reviewed the CONTRIBUTING.md file for detailed contributing guidelines.

If your PR contains a patch:

  • It can be applied using git am
  • It has been refreshed to avoid offsets, fuzzes, etc., using
    make package/<your-package>/refresh V=s
  • It is structured in a way that it is potentially upstreamable
    (e.g., subject line, commit description, etc.)
    We must try to upstream patches to reduce maintenance burden.

@LGA1150 LGA1150 marked this pull request as ready for review December 10, 2025 05:45
Copy link
Member

@GeorgeSapkin GeorgeSapkin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add package description.

Based on gut feeling, is it a better match for the routing repo?

Last tag is from 2 years ago. Is this being maintained?

Please rename your commit to: libteam: add new package

@LGA1150
Copy link
Contributor Author

LGA1150 commented Dec 11, 2025

Please add package description.

Done

Based on gut feeling, is it a better match for the routing repo?

I don't think so. This is a utility/library to control the Team link aggregation device, and unrelated to routing.

Last tag is from 2 years ago. Is this being maintained?

This project is maintained by @jpirko

Please rename your commit to: libteam: add new package

Done

@LGA1150 LGA1150 requested a review from GeorgeSapkin December 11, 2025 01:43
@jpirko
Copy link

jpirko commented Dec 11, 2025

Last tag is from 2 years ago. Is this being maintained?

This project is maintained by @jpirko

Low traffic at this point, I will probably do release soon.

Copy link
Member

@BKPepe BKPepe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a quick look. Shouldn't this package enable at least some kernel config, which you added to the main repo?

# CONFIG_NET_TEAM_MODE_ACTIVEBACKUP is not set
# CONFIG_NET_TEAM_MODE_BROADCAST is not set
# CONFIG_NET_TEAM_MODE_LOADBALANCE is not set
# CONFIG_NET_TEAM_MODE_RANDOM is not set
# CONFIG_NET_TEAM_MODE_ROUNDROBIN is not set

Without this enabled, this is not going to work, right?

Comment on lines +125 to +128
$(eval $(call BuildPackage,libteam))
$(eval $(call BuildPackage,libteamdctl))
$(eval $(call BuildPackage,teamd))
$(eval $(call BuildPackage,teamdctl))
$(eval $(call BuildPackage,teamnl))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You added 5 packages, but in the commit description and in the commit itself, you mentioned only one. Please try to describe a little bit more in your commit why do we need to have 5 packages, what is the size, etc. I think (maybe...) you splitted it into so many packages and it is not necessary.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From Project Wiki and HOWTO

  • libteam.so is a wrapper library to interface the Team Netlink API.
  • teamd is a service/daemon to control a team netdev using the libteam library.
  • teamdctl is a utility to alter teamd configuration at runtime.
  • libteamdctl.so is a library used by teamdctl
  • teamnl is an alternative to teamd.

apk size on cortex-a53:

18703 libteam5-1.32-r1.apk
 6250 libteamdctl0-1.32-r1.apk
48211 teamd-1.32-r1.apk
 8970 teamdctl-1.32-r1.apk
 6010 teamnl-1.32-r1.apk

Then I noticed all uncompressed ELF sizes (not just libteam, but other packages also) are multiple of 64KiB. Is that normal?

> ll /usr/bin/team*
-rwxr-xr-x    1 root     root        131449 Dec 16 17:29 /usr/bin/teamd*
-rwxr-xr-x    1 root     root         65499 Dec 16 17:29 /usr/bin/teamdctl*
-rwxr-xr-x    1 root     root         65499 Dec 16 17:29 /usr/bin/teamnl*

> ll /usr/lib/libteam*
lrwxrwxrwx    1 root     root            16 Dec 16 17:29 /usr/lib/libteam.so.5 -> libteam.so.5.6.2*
-rwxr-xr-x    1 root     root         65539 Dec 16 17:29 /usr/lib/libteam.so.5.6.2*
lrwxrwxrwx    1 root     root            20 Dec 16 17:29 /usr/lib/libteamdctl.so.0 -> libteamdctl.so.0.1.6*
-rwxr-xr-x    1 root     root         65539 Dec 16 17:29 /usr/lib/libteamdctl.so.0.1.6*

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there has been a misunderstanding here. I was asking why we actually need 5 different packages, because when I look at https://repology.org/, I only see the libteam package there, not the others.

For example, in Debian, some of these tools are packaged as libteam-utils, while elsewhere they appear as libteam-tools. I would prefer not to reinvent the wheel here; I think we should follow what is done in other GNU/Linux distributions so we don't fragment it further or create something non-standard. :)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Debian is a desktop distro, while OpenWrt is not. We have size constraints.

teamd and teamnl are mutually exclusive, so I think it's better to split them. ALT Linux does that too.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If these two are mutually exclusive, they should be marked as such either through PROVIDES or CONFLICTS.

libteam is a userspace tool to configure Linux network teaming.

Signed-off-by: Qingfang Deng <[email protected]>
@LGA1150
Copy link
Contributor Author

LGA1150 commented Dec 17, 2025

Just a quick look. Shouldn't this package enable at least some kernel config, which you added to the main repo?

# CONFIG_NET_TEAM_MODE_ACTIVEBACKUP is not set
# CONFIG_NET_TEAM_MODE_BROADCAST is not set
# CONFIG_NET_TEAM_MODE_LOADBALANCE is not set
# CONFIG_NET_TEAM_MODE_RANDOM is not set
# CONFIG_NET_TEAM_MODE_ROUNDROBIN is not set

Without this enabled, this is not going to work, right?

Users can choose one of them by installing kmod-team-mode-*

@BKPepe
Copy link
Member

BKPepe commented Dec 17, 2025

I realize users can install it separately if they are aware of it. However, shouldn't the behavior be that installing any package from your Makefile automatically triggers a dependency on the kernel package?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants