Page MenuHomeFreeBSD

Fix group membership of a cloned interface before and after if_vmove()
ClosedPublic

Authored by hrs on Feb 16 2015, 6:03 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sun, Jul 19, 3:39 PM
Unknown Object (File)
Fri, Jul 3, 6:21 AM
Unknown Object (File)
Fri, Jul 3, 5:27 AM
Unknown Object (File)
Fri, Jul 3, 12:22 AM
Unknown Object (File)
Wed, Jul 1, 12:18 AM
Unknown Object (File)
May 23 2026, 9:03 AM
Unknown Object (File)
May 1 2026, 10:12 PM
Unknown Object (File)
Apr 21 2026, 10:53 AM
Subscribers
None

Details

Summary

Problem description:

In if_vmove(), if_detach_internal() and if_attach_internal() are
called in series to detach and reattach the interface. When
detaching, if_delgroup() is called and the interface leaves all of
the group membership. And then upon attachment, if_addgroup(ifp,
IFG_ALL) is called and it joins only "all" group again.

This has a problem. Normally, a cloned interface automatically joins
a group whose name is ifc_name of the cloner in addition to "all"
upon creation. However, if_vmove() removes the membership and does
not restore upon attachment.

Implementation of fix:

  • if_detach_internal() now accepts (struct if_clone **) as an additional argument to make it possible to save the cloner information.
  • if_attach_internal() now accepts (struct if_clone *) to restore group membership of a cloned interface.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

hrs retitled this revision from to Fix group membership of a cloned interface before and after if_vmove().
hrs updated this object.
hrs edited the test plan for this revision. (Show Details)
hrs added a reviewer: bz.
hrs updated this revision to Diff 4076.

Closed by commit rS279538 (authored by @hrs).