I think this idea is fine, and I would like to upstream things as much as possible, since that currently what in base is mostly the same as upstream.
Is it possible for us to accommodate both Linux and FreeBSD parts in one wg(8) page? Most parts of the wg(8) are still sharable between platforms. I think we have some ways:
- Mention everything in the manual page, e.g.,SEE ALSO On Linux: wg-quick(8), ip(8), ip-link(8), ip-address(8), ip-route(8). On FreeBSD: netstat(1), ifconfig(8), route(8)
- If there are more and more difference, Let's split the manual pages into platform independent and platform dependent parts, i.e.: wg(8), wg-linux(8), wg-freebsd(8),
- If 2) looks scary or inconvenient to the users (seems so), we can have a simple pre-procressor to process 1) and accept platform as a parameter to generate the final file we want.
I think at this stage, 1) should be sufficient and let's try to avoid going to 2) and 3) in the future.
Nov 24 2022
Nov 17 2022
Would replacing the roff(7) typographic markup with mdoc(7) semantic markup (in a future change if not here) be too much for upstream to take?
Frankly, I'm not comfortable with taking -this- much of a diff without looping in upstream in advance -- the SEE ALSO proposal was reasonable, though. Adding Jason in on this.
May 19 2021
Some kernel drivers call ifhwioctl() from under a mutex. Just grep for it in sys/
We need to tweak this a little bit. There appears to be some sleepable mutex after non-sleepable mutex issues here.
May 18 2021
Seems clean and simple to me. Nice improvement over the last revision. Let's merge this.
Sure, that approach works fine too, and amounts to the same thing you'd arrive at with SRCU or epoch.
Another approach would be to add SX_NOASSERTS (in addition to SX_NOWITNESS), which would skip those KASSERTs and such.
If you look at _sx_xunlock() you see there is an assert that same thread locks and unlocks.
I don't think we want LinuxKPI stuff in core networking code, right?
I just wrote up a workaround of calling WITNESS_DESTROY and INIT manually like the vfs code which would work but was hackish, and then realized....
May 3 2021
I had previously sent this to freebsd-net, but I'm told phrabricator is a better place for it. Copy and pasting from: https://lists.freebsd.org/pipermail/freebsd-net/2021-April/058173.html :
Apr 20 2021
Jason, we could possibly use a SX lock too, but I need to check it a bit. SX locks have a WITNESS object when debuggin is enabled and needs to be destroyed.
In your example, you need to point out where to xunlock aswell, because I'm not sure if it is a good idea to destroy locked mutexes.
Apr 14 2021
It looks like the idea here is to increment a reference during ioctl, drop it at the end of an ioctl, and never increment a reference if it decrements to zero. Then, when destroying, you can simply drop the final reference and then sleep-loop until the reference drops to zero before you move on freeing things.