=== Multicast routing rework

Contact: Wojciech Macek <wma@semihalf.com>

The Semihalf team has been working on reworking the existing ip_mroute module. The previous implementation was over 20 years old and didn't use modern kernel features.

A complete rework of locking mechanism was done to eliminate taking multiple locks for a single job.
Some portions of code were modified to use lockless constructs, the BW-meter API was refactored to work in a single context and routing hot path was identified and made more efficient.
All these fixes helped achieve over a 5x speed boost in multicast routing.

The newly introduced rework includes:

* mroute: fix race condition during mrouter shutting down link:https://cgit.freebsd.org/src/commit/?id=65634ae748e7f6b7b9f11e8838c65060c3f31347[race condition]
* mrouter: do not loopback packets unconditionally link:https://cgit.freebsd.org/src/commit/?id=0b103f72376b5ec7c9a9d574c976e42805ae88a4[loopback]
* ip_mroute: refactor bw_meter API link:https://cgit.freebsd.org/src/commit/?id=741afc6233915ba33156c2221aa80d2dd2b76b9c[bw_meter]
* ip_mroute: rework ip_mroute link:https://cgit.freebsd.org/src/commit/?id=d40cd26a86a79342d175296b74768dd7183fc02b[locking]

Sponsor: Stormshield
