]> git.proxmox.com Git - pve-common.git/blobdiff - src/PVE/JSONSchema.pm
followup: add verbose_description to new mac-addr standard option
[pve-common.git] / src / PVE / JSONSchema.pm
index 1e3bf5d48c17066fe348954e66b48dbb5a98e4c0..377d686c58f4bcfb570d6cb4f01b97f3082f2bd5 100644 (file)
@@ -208,12 +208,23 @@ 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) {
+    # don't allow I/G bit to be set, most of the time it breaks things, see:
+    # https://pve.proxmox.com/pipermail/pve-devel/2019-March/035998.html
+    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.',
+    verbose_description => 'A common MAC address with the I/G (Individual/Group) bit not set.',
+    format_description => "XX:XX:XX:XX:XX:XX",
+    optional => 1,
+    format => 'mac-addr',
+});
 
 register_format('ipv4', \&pve_verify_ipv4);
 sub pve_verify_ipv4 {