JSONSchema: Adapt MAC address format to unicast
authorStoiko Ivanov <s.ivanov@proxmox.com>
Tue, 12 Mar 2019 15:07:41 +0000 (16:07 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 14 Mar 2019 08:41:12 +0000 (09:41 +0100)
MAC-addresses having the LSB of the first octet set, are considered
multicast-addresses (see [0,1]).

the 'mac-addr' format got changed to only permit unicast addresses, which should
work for its current use-case (WOL for nodes).
additionally a default option was registered via register_standard_option to be
used in both PVE::LXC::Config and PVE::QemuServer.

[0] https://lists.linuxcontainers.org/pipermail/lxc-users/2010-August/000783.html
[1] https://en.wikipedia.org/wiki/MAC_address

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
src/PVE/JSONSchema.pm

index 1e3bf5d..10037f5 100644 (file)
@@ -208,12 +208,20 @@ register_format('mac-addr', \&pve_verify_mac_addr);
 sub pve_verify_mac_addr {
     my ($mac_addr, $noerr) = @_;
 
-    if ($mac_addr !~ m/^[0-9a-f]{2}(:[0-9a-f]{2}){5}$/i) {
+    if ($mac_addr !~ m/^[a-f0-9][02468ace](?::[a-f0-9]{2}){5}$/i) {
        return undef if $noerr;
-       die "value does not look like a valid MAC address\n";
+       die "value does not look like a valid unicast MAC address\n";
     }
     return $mac_addr;
+
 }
+register_standard_option('mac-addr', {
+    type => 'string',
+    description => 'Unicast MAC address.',
+    format_description => "XX:XX:XX:XX:XX:XX",
+    optional => 1,
+    format => 'mac-addr',
+});
 
 register_format('ipv4', \&pve_verify_ipv4);
 sub pve_verify_ipv4 {