Package: openstack-cluster-installer
Version: 42.3.0~bpo12+1
Severity: minor
Tags: patch

During auto-racking the switchport name and NIC firmware version are
rejected by OCI due to containing the / character:

# lldpcli show n | grep -E '(SysDescr|PortID)'
    SysDescr:     Dell EMC Networking OS10 Enterprise.
    PortID:       ifname ethernet1/1/7

# ethtool -i eno12399np0 | grep firmware-version
firmware-version: 220.0.57.0/pkg 22.00.07.60

I have attached a patch which updates the regex to permit the /
character.
I've also updated the error messages to contain the rejected
data, as this may aid others in troubleshooting similar problems in the
future?

--

Regards
Jim
diff --git a/src/report.php b/src/report.php
index 1ade880a..e44cea94 100644
--- a/src/report.php
+++ b/src/report.php
@@ -585,33 +585,33 @@ if($n == 0){
             if(isset($iface["name"]) && isset($iface["macaddr"]) && isset($iface["max_speed"])){
                 $if_name = $iface["name"];
                 $reg = '/^[0-9a-zA-Z-]{1,64}$/';
-                if(!preg_match($reg,$if_name)) die("Network interface device name suspicious line ".__LINE__." file ".__FILE__);
+                if(!preg_match($reg,$if_name)) die("Network interface device name '$if_name' suspicious line ".__LINE__." file ".__FILE__);
                 $safe_if_name = $if_name;
 
                 $if_macaddr = $iface["macaddr"];
                 $reg = '/^[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}$/';
-                if(!preg_match($reg,$if_macaddr)) die("Network interface MAC address suspicious line ".__LINE__." file ".__FILE__);
+                if(!preg_match($reg,$if_macaddr)) die("Network interface MAC address '$if_macaddr' suspicious line ".__LINE__." file ".__FILE__);
                 $safe_if_macaddr = $if_macaddr;
 
                 $if_max_speed = $iface["max_speed"];
                 $reg = '/^[0-9]{1,10}$/';
-                if(!preg_match($reg,$if_max_speed)) die("Network interface max_speed suspicious line ".__LINE__." file ".__FILE__);
+                if(!preg_match($reg,$if_max_speed)) die("Network interface max_speed '$if_max_speed' suspicious line ".__LINE__." file ".__FILE__);
                 $safe_if_max_speed = $if_max_speed;
 
                 $if_switch_hostname = $iface["switch_hostname"];
                 $reg = '/^((?!-))(xn--)?[a-z0-9][.a-z0-9-]{0,61}[a-z0-9]{0,1}$/';
-                if(!preg_match($reg,$if_switch_hostname)) die("Switch hostname suspicious line ".__LINE__." file ".__FILE__);
+                if(!preg_match($reg,$if_switch_hostname)) die("Switch hostname '$if_switch_hostname' suspicious line ".__LINE__." file ".__FILE__);
                 $safe_if_switch_hostname = $if_switch_hostname;
 
                 $if_switchport_name = $iface["switchport_name"];
-                $reg = '/^[.:0-9a-zA-Z-]{1,64}$/';
-                if(!preg_match($reg,$if_switchport_name)) die("Switchport name suspicious line ".__LINE__." file ".__FILE__);
+                $reg = '/^[\/.:0-9a-zA-Z-]{1,64}$/';
+                if(!preg_match($reg,$if_switchport_name)) die("Switchport name '$if_switchport_name' suspicious line ".__LINE__." file ".__FILE__);
                 $safe_if_switchport_name = $if_switchport_name;
 
                 if(isset($iface["firmware_version"]) && $iface["firmware_version"] != ""){
                     $if_firmware_version = $iface["firmware_version"];
-                    $reg = '/^[.:0-9a-zA-Z-]{1,64}$/';
-                    if(!preg_match($reg,$if_firmware_version)) die("Iface firmware version suspicious line ".__LINE__." file ".__FILE__);
+                    $reg = '/^[\/.:0-9a-zA-Z-]{1,64}$/';
+                    if(!preg_match($reg,$if_firmware_version)) die("Iface firmware version '$if_firmware_version' suspicious line ".__LINE__." file ".__FILE__);
                     $safe_if_firmware_version = $if_firmware_version;
                 }else{
                     $safe_if_firmware_version = "";
@@ -620,7 +620,7 @@ if($n == 0){
                 if(isset($iface["driver"]) && $iface["driver"] != ""){
                     $if_driver = $iface["driver"];
                     $reg = '/^[_.:0-9a-zA-Z-]{1,64}$/';
-                    if(!preg_match($reg,$if_driver)) die("Iface driver name suspicious line ".__LINE__." file ".__FILE__);
+                    if(!preg_match($reg,$if_driver)) die("Iface driver name '$if_driver' suspicious line ".__LINE__." file ".__FILE__);
                     $safe_if_driver = $if_driver;
                 }else{
                     $safe_if_driver = "";

Reply via email to