Skip to content

Commit

Permalink
T6263: Groups 224.0.0.0/24 are reserved and cannot be joined
Browse files Browse the repository at this point in the history
The join addresses within the multicast group 224.0.0.0/24 are
reserved and cannot be joined

FRR
```
r4(config)# interface eth2
r4(config-if)# ip igmp join 224.0.0.0 224.0.0.10
% Configuration failed.

Error type: validation
Error description: Groups within 224.0.0.0/24 are reserved and cannot be joined
r4(config-if)#
```

Add verify check
  • Loading branch information
sever-sever committed Apr 25, 2024
1 parent 13af058 commit c8f9acf
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions src/conf_mode/protocols_pim.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
#
# Copyright (C) 2020-2023 VyOS maintainers and contributors
# Copyright (C) 2020-2024 VyOS maintainers and contributors
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or later as
Expand All @@ -16,6 +16,7 @@

import os

from ipaddress import IPv4Address
from ipaddress import IPv4Network
from signal import SIGTERM
from sys import exit
Expand All @@ -32,6 +33,9 @@
from vyos import airbag
airbag.enable()

RESERVED_MC_NET = '224.0.0.0/24'


def get_config(config=None):
if config:
conf = config
Expand Down Expand Up @@ -92,9 +96,15 @@ def verify(pim):
if 'interface' not in pim:
raise ConfigError('PIM require defined interfaces!')

for interface in pim['interface']:
for interface, interface_config in pim['interface'].items():
verify_interface_exists(interface)

# Check join group in reserved net
if 'igmp' in interface_config and 'join' in interface_config['igmp']:
for join_addr in interface_config['igmp']['join']:
if IPv4Address(join_addr) in IPv4Network(RESERVED_MC_NET):
raise ConfigError(f'Groups within {RESERVED_MC_NET} are reserved and cannot be joined!')

if 'rp' in pim:
if 'address' not in pim['rp']:
raise ConfigError('PIM rendezvous point needs to be defined!')
Expand Down

0 comments on commit c8f9acf

Please sign in to comment.