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)
Thu, Jan 23, 5:34 AM
Unknown Object (File)
Thu, Jan 23, 5:02 AM
Unknown Object (File)
Wed, Jan 8, 5:46 AM
Unknown Object (File)
Dec 18 2024, 4:11 AM
Unknown Object (File)
Dec 18 2024, 3:21 AM
Unknown Object (File)
Dec 11 2024, 1:01 AM
Unknown Object (File)
Nov 26 2024, 7:00 AM
Unknown Object (File)
Nov 7 2024, 4:13 PM
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).