mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
igmp: do not upgrade IGMP version beyond net.inet.igmp.default_version
IGMP requires hosts to use the lowest version they've seen on the
network. When the IGMP timers expire we take the opportunity to upgrade again.
However, we did not take the net.inet.igmp.default_version sysctl
setting into account, so we could end up switching to IGMPv3 even if the
user had requested IGMPv2 or IGMPv1 via the sysctl.
Check V_igmp_default_version before we upgrade the IGMP version.
Reviewed by: adrian
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D41628
This commit is contained in:
parent
c961e158e2
commit
ca941d769a
1 changed files with 8 additions and 4 deletions
|
|
@ -2122,7 +2122,8 @@ igmp_v1v2_process_querier_timers(struct igmp_ifsoftc *igi)
|
|||
*
|
||||
* Revert to IGMPv3.
|
||||
*/
|
||||
if (igi->igi_version != IGMP_VERSION_3) {
|
||||
if (V_igmp_default_version == IGMP_VERSION_3 &&
|
||||
igi->igi_version != IGMP_VERSION_3) {
|
||||
CTR5(KTR_IGMPV3,
|
||||
"%s: transition from v%d -> v%d on %p(%s)",
|
||||
__func__, igi->igi_version, IGMP_VERSION_3,
|
||||
|
|
@ -2137,7 +2138,8 @@ igmp_v1v2_process_querier_timers(struct igmp_ifsoftc *igi)
|
|||
* revert to IGMPv3.
|
||||
* If IGMPv2 is enabled, revert to IGMPv2.
|
||||
*/
|
||||
if (!V_igmp_v2enable) {
|
||||
if (V_igmp_default_version == IGMP_VERSION_3 &&
|
||||
!V_igmp_v2enable) {
|
||||
CTR5(KTR_IGMPV3,
|
||||
"%s: transition from v%d -> v%d on %p(%s)",
|
||||
__func__, igi->igi_version, IGMP_VERSION_3,
|
||||
|
|
@ -2146,7 +2148,8 @@ igmp_v1v2_process_querier_timers(struct igmp_ifsoftc *igi)
|
|||
igi->igi_version = IGMP_VERSION_3;
|
||||
} else {
|
||||
--igi->igi_v2_timer;
|
||||
if (igi->igi_version != IGMP_VERSION_2) {
|
||||
if (V_igmp_default_version == IGMP_VERSION_2 &&
|
||||
igi->igi_version != IGMP_VERSION_2) {
|
||||
CTR5(KTR_IGMPV3,
|
||||
"%s: transition from v%d -> v%d on %p(%s)",
|
||||
__func__, igi->igi_version, IGMP_VERSION_2,
|
||||
|
|
@ -2164,7 +2167,8 @@ igmp_v1v2_process_querier_timers(struct igmp_ifsoftc *igi)
|
|||
* revert to IGMPv3.
|
||||
* If IGMPv1 is enabled, reset IGMPv2 timer if running.
|
||||
*/
|
||||
if (!V_igmp_v1enable) {
|
||||
if (V_igmp_default_version == IGMP_VERSION_3 &&
|
||||
!V_igmp_v1enable) {
|
||||
CTR5(KTR_IGMPV3,
|
||||
"%s: transition from v%d -> v%d on %p(%s)",
|
||||
__func__, igi->igi_version, IGMP_VERSION_3,
|
||||
|
|
|
|||
Loading…
Reference in a new issue