[pve-devel] [PATCH pve-network 2/2] add format for multicast-address

Alexandre Derumier aderumier at odiso.com
Fri Sep 13 12:33:45 CEST 2019


Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
---
 PVE/Network/SDN/VxlanPlugin.pm | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/PVE/Network/SDN/VxlanPlugin.pm b/PVE/Network/SDN/VxlanPlugin.pm
index c5ecea6..1860490 100644
--- a/PVE/Network/SDN/VxlanPlugin.pm
+++ b/PVE/Network/SDN/VxlanPlugin.pm
@@ -3,7 +3,7 @@ package PVE::Network::SDN::VxlanPlugin;
 use strict;
 use warnings;
 use PVE::Network::SDN::Plugin;
-use PVE::Tools;
+use PVE::Tools qw($IPV4RE);
 use PVE::INotify;
 
 use base('PVE::Network::SDN::Plugin');
@@ -17,6 +17,25 @@ sub pve_verify_sdn_vxlanrange {
    return $vxlanstr;
 }
 
+PVE::JSONSchema::register_format('ipv4-multicast', \&parse_ipv4_multicast);
+sub parse_ipv4_multicast {
+    my ($ipv4, $noerr) = @_;
+
+    if ($ipv4 !~ m/^(?:$IPV4RE)$/) {
+        return undef if $noerr;
+        die "value does not look like a valid multicast IPv4 address\n";
+    }
+
+    if ($ipv4 =~ m/^(\d+)\.\d+.\d+.\d+/) {
+	if($1 < 224 || $1 > 239) {
+	    return undef if $noerr;
+	    die "value does not look like a valid multicast IPv4 address\n";
+	}
+    }
+
+    return $ipv4;
+}
+
 sub type {
     return 'vxlan';
 }
@@ -29,7 +48,7 @@ sub properties {
         },
         'multicast-address' => {
             description => "Multicast address.",
-            type => 'string',  #fixme: format
+            type => 'string', format => 'ipv4-multicast'
         },
 	'unicast-address' => {
 	    description => "Unicast peers address ip list.",
-- 
2.20.1




More information about the pve-devel mailing list