[pve-devel] [PATCH common v3 1/1] JSONSchema: Adapt MAC address format to unicast

Stoiko Ivanov s.ivanov at proxmox.com
Tue Mar 12 16:07:41 CET 2019


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 at proxmox.com>
---
 src/PVE/JSONSchema.pm | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/PVE/JSONSchema.pm b/src/PVE/JSONSchema.pm
index 1e3bf5d..10037f5 100644
--- a/src/PVE/JSONSchema.pm
+++ b/src/PVE/JSONSchema.pm
@@ -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 {
-- 
2.11.0





More information about the pve-devel mailing list