summaryrefslogtreecommitdiff
path: root/interface-definitions
diff options
context:
space:
mode:
authorYuxiang Zhu <vfreex@gmail.com>2023-08-27 22:44:31 +0000
committerYuxiang Zhu <vfreex@gmail.com>2023-09-08 17:02:37 +0800
commit99ed6c9edd07c9cedfb6d2654c6dee723a60c099 (patch)
treef5fb8f8a8603a952b9f9729adaca78cf76bb43d4 /interface-definitions
parent18a6163ed2e0bbbc2924f893e6954a9eba4470b1 (diff)
downloadvyos-1x-99ed6c9edd07c9cedfb6d2654c6dee723a60c099.tar.gz
vyos-1x-99ed6c9edd07c9cedfb6d2654c6dee723a60c099.zip
T5518: Add basic MLD support
Currently VyOS has `protocol igmp` option to enable IGMP querier and reports through FRR's pimd. I would like to add support for IPv6 as well since FRR's IPv6 multicast functionality has significantly improved. Enabling both MLD and IGMP on a VyOS router will allow us to turn on multicast snooping on layer-3 switches in dual-stack networks. Example commands: ``` // Enable on interface eth0 set protocols pim6 interface eth0 // Explicitly join multicast group ff18::1234 on interface eth1 set protocols pim6 interface eth1 mld join ff18::1234 // Explicitly join source-specific multicast group ff38::5678 with source address 2001:db8::1 on interface eth1 set protocols pim6 interface eth1 mld join ff38::5678 source 2001:db8::1 ```
Diffstat (limited to 'interface-definitions')
-rw-r--r--interface-definitions/protocols-pim6.xml.in132
1 files changed, 132 insertions, 0 deletions
diff --git a/interface-definitions/protocols-pim6.xml.in b/interface-definitions/protocols-pim6.xml.in
new file mode 100644
index 000000000..58ef5a1e3
--- /dev/null
+++ b/interface-definitions/protocols-pim6.xml.in
@@ -0,0 +1,132 @@
+<?xml version="1.0"?>
+<!-- Protocol Independent Multicast for IPv6 (PIMv6) configuration -->
+<interfaceDefinition>
+ <node name="protocols">
+ <children>
+ <node name="pim6" owner="${vyos_conf_scripts_dir}/protocols_pim6.py">
+ <properties>
+ <help>Protocol Independent Multicast for IPv6 (PIMv6)</help>
+ <priority>400</priority>
+ </properties>
+ <children>
+ <tagNode name="interface">
+ <properties>
+ <help>PIMv6 interface</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ </properties>
+ <children>
+ <node name="mld">
+ <properties>
+ <help>Multicast Listener Discovery (MLD)</help>
+ </properties>
+ <children>
+ #include <include/generic-disable-node.xml.i>
+ <tagNode name="join">
+ <properties>
+ <help>MLD join multicast group</help>
+ <valueHelp>
+ <format>ipv6</format>
+ <description>Multicast group address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv6-address"/>
+ </constraint>
+ </properties>
+ <children>
+ <leafNode name="source">
+ <properties>
+ <help>Source address</help>
+ <valueHelp>
+ <format>ipv6</format>
+ <description>Source address</description>
+ </valueHelp>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_local_ips.sh --ipv6</script>
+ </completionHelp>
+ <constraint>
+ <validator name="ipv6-address"/>
+ </constraint>
+ <multi/>
+ </properties>
+ </leafNode>
+ </children>
+ </tagNode>
+ <leafNode name="version">
+ <properties>
+ <help>MLD version</help>
+ <completionHelp>
+ <list>1 2</list>
+ </completionHelp>
+ <valueHelp>
+ <format>1</format>
+ <description>MLD version 1</description>
+ </valueHelp>
+ <valueHelp>
+ <format>2</format>
+ <description>MLD version 2</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-2"/>
+ </constraint>
+ </properties>
+ <defaultValue>2</defaultValue>
+ </leafNode>
+ <leafNode name="interval">
+ <properties>
+ <help>Query interval</help>
+ <valueHelp>
+ <format>u32:1-65535</format>
+ <description>Query interval in seconds</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-65535"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="max-response-time">
+ <properties>
+ <help>Max query response time</help>
+ <valueHelp>
+ <format>u32:100-6553500</format>
+ <description>Query response value in milliseconds</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 100-6553500"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="last-member-query-count">
+ <properties>
+ <help>Last member query count</help>
+ <valueHelp>
+ <format>u32:1-255</format>
+ <description>Count</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-255"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="last-member-query-interval">
+ <properties>
+ <help>Last member query interval</help>
+ <valueHelp>
+ <format>u32:100-6553500</format>
+ <description>Last member query interval in milliseconds</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 100-6553500"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ </children>
+ </tagNode>
+ </children>
+ </node>
+ </children>
+ </node>
+</interfaceDefinition>