r3289 serializeVLANPack(): fix spelling, make default state a special case
authorDenis Ovsienko <infrastation@yandex.ru>
Thu, 25 Feb 2010 12:55:20 +0000 (12:55 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Thu, 25 Feb 2010 12:55:20 +0000 (12:55 +0000)
usePreparedSelectBlade(): new function
getPortInfo(): try prepared SELECT pattern
setAllowedVLANs(): renamed to match "op" value
renderVLANDomainVLANList(): omit propagation code after VLAN ID, adjust header
renderObjectVLANPorts(): fix calls to serializeVLANPack() and getPortInfo()

inc/database.php
inc/functions.php
inc/interface.php
inc/navigation.php
inc/ophandlers.php
popup.php

index f594a53..f66dc8e 100644 (file)
@@ -2255,6 +2255,15 @@ function useSelectBlade ($query)
        return $result;
 }
 
+function usePreparedSelectBlade ($query, $args = array())
+{
+       global $dbxlink;
+       $prepared = $dbxlink->prepare ($query);
+       if (!$prepared->execute ($args))
+               return FALSE;
+       return $prepared;
+}
+
 function loadConfigCache ()
 {
        $query = 'SELECT varname, varvalue, vartype, is_hidden, emptyok, description, is_userdefined FROM Config ORDER BY varname';
@@ -3539,8 +3548,8 @@ function getPortInfo ($port_id)
        $query = "SELECT object_id, name, iif_id, type AS oif_id, l2address, ".
                "(SELECT dict_value FROM Dictionary WHERE dict_key = type) AS oif_name, " .
                "(SELECT iif_name FROM PortInnerInterface WHERE id = iif_id) AS iif_name " .
-               "FROM Port WHERE id = ${port_id}";
-       $result = useSelectBlade ($query);
+               "FROM Port WHERE id = ?";
+       $result = usePreparedSelectBlade ($query, array ($port_id));
        return $result->fetch (PDO::FETCH_ASSOC);
 }
 
index b217078..f1e7821 100644 (file)
@@ -2240,18 +2240,19 @@ function getVLANDomain ($vdid)
 
 // Return a serialized version of VLAN configuration for a port.
 // If a native VLAN is defined, print it first. All other VLANs
-// are tagged and are listed after a plus sign.
-function serialiseVLANPack ($native_vid = VLAN_DFL_ID, $allowed_vids = array())
+// are tagged and are listed after a plus sign. When no configuration
+// is set for a port, return "default" string.
+function serializeVLANPack ($native_vid = 0, $allowed_vids = array())
 {
        $tagged = array();
        foreach ($allowed_vids as $vlan_id)
                if ($vlan_id != $native_vid)
                        $tagged[] = $vlan_id;
        sort ($tagged);
-       $ret = $native_vid == VLAN_DFL_ID ? '?' : "${native_vid}";
+       $ret = $native_vid ? $native_vid : '';
        if (count ($tagged))
                $ret .= '+' . implode (',', $tagged);
-       return strlen ($ret) ? $ret : '&nbsp;';
+       return strlen ($ret) ? $ret : 'default';
 }
 
 // Decode VLAN compound key (which is a string formatted DOMAINID-VLANID) and
index 7299534..d5916b2 100644 (file)
@@ -6563,14 +6563,14 @@ function renderVLANDomainVLANList ($vdom_id)
        echo '<tr><th>&nbsp;</th><th>ID</th><th>propagation</th><th>description</th><th>&nbsp;</th></tr>';
        if (getConfigVar ('ADDNEW_AT_TOP') == 'yes')
                printNewItemTR();
-       global $vtdecoder, $vtoptions;
+       global $vtoptions;
        foreach (getDomainVLANs ($vdom_id) as $vlan_id => $vlan_info)
        {
                printOpFormIntro ('upd', array ('vlan_id' => $vlan_id));
                echo '<tr><td><a href="';
                echo makeHrefProcess (array ('op' => 'del', 'vdom_id' => $vdom_id, 'vlan_id' => $vlan_id)) . '">';
                printImageHREF ('destroy', 'delete VLAN');
-               echo '</a></td><td class=tdright><tt>' . $vlan_id . $vtdecoder[$vlan_info['vlan_type']] . '</tt></td><td>';
+               echo '</a></td><td class=tdright><tt>' . $vlan_id . '</tt></td><td>';
                printSelect ($vtoptions, array ('name' => 'vlan_type'), $vlan_info['vlan_type']);
                echo '</td><td>';
                echo '<input name=vlan_descr type=text value="' . htmlspecialchars ($vlan_info['vlan_descr']) . '">';
@@ -6598,7 +6598,7 @@ function renderObjectVLANPorts ($object_id)
                $object = spotEntity ('object', $object_id);
                amplifyCell ($object);
                echo '<table cellspacing=0 cellpadding=5 align=center class=widetable>';
-               echo '<tr><th>&nbsp;</th><th>local name</th><th>VLAN IDs</th><th>&nbsp;</th></tr>';
+               echo '<tr><th>&nbsp;</th><th>port name</th><th>VLANs</th><th>&nbsp;</th></tr>';
                foreach ($object['ports'] as $port)
                        if (array_key_exists ($port['id'], $allowed)) // eligible for 802.1Q
                        {
@@ -6614,9 +6614,9 @@ function renderObjectVLANPorts ($object_id)
                                        )
                                );
                                echo "'>${port['name']}</a></td><td>";
-                               echo serialiseVLANPack
+                               echo serializeVLANPack
                                (
-                                       array_key_exists ($port['id'], $native) ? $native[$port['id']] : VLAN_DFL_ID,
+                                       array_key_exists ($port['id'], $native) ? $native[$port['id']] : 0,
                                        array_key_exists ($port['id'], $allowed) ? $allowed[$port['id']] : array()
                                );
                                echo '</td></tr>';
@@ -6626,7 +6626,8 @@ function renderObjectVLANPorts ($object_id)
        else
        {
                $port_id = $_REQUEST['port_id'];
-               $portinfo = getPortInfo ($port_id);
+               global $sic;
+               $portinfo = getPortInfo ($sic['port_id']);
                if ($portinfo['object_id'] != $object_id)
                {
                        showError ('Invalid port_id', __FUNCTION__);
index 82f52f2..0e22710 100644 (file)
@@ -147,7 +147,7 @@ $ophandler['object']['lvsconfig']['submitSLBConfig'] = 'submitSLBConfig';
 $ophandler['object']['snmpportfinder']['querySNMPData'] = 'querySNMPData';
 $ophandler['object']['vlanconfig']['bind'] = 'addVLANSwitchBinding';
 $ophandler['object']['vlanconfig']['unbind'] = 'delVLANSwitchBinding';
-$ophandler['object']['vlanports']['saveAllowedVLANs'] = 'saveAllowedVLANs';
+$ophandler['object']['vlanports']['setAllowedVLANs'] = 'setAllowedVLANs';
 $delayauth['object']['livevlans']['setPortVLAN'] = TRUE;
 
 $page['ipv4space']['title'] = 'IPv4 space';
index a3e1982..4c9d102 100644 (file)
@@ -197,8 +197,9 @@ function linkPortForObject ()
        $error = linkPorts ($_REQUEST['port_id'], $_REQUEST['remote_port_id']);
        if ($error != '')
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
-       $local_port_info = getPortInfo ($_REQUEST['port_id']);
-       $remote_port_info = getPortInfo ($_REQUEST['remote_port_id']);
+       global $sic;
+       $local_port_info = getPortInfo ($sic['port_id']);
+       $remote_port_info = getPortInfo ($sic['remote_port_id']);
        $remote_object = spotEntity ('object', $remote_port_info['object_id']);
        return buildRedirectURL
        (
@@ -220,8 +221,9 @@ function unlinkPortForObject ()
        assertUIntArg ('port_id');
        assertUIntArg ('remote_port_id');
 
-       $local_port_info = getPortInfo ($_REQUEST['port_id']);
-       $remote_port_info = getPortInfo ($_REQUEST['remote_port_id']);
+       global $sic;
+       $local_port_info = getPortInfo ($sic['port_id']);
+       $remote_port_info = getPortInfo ($sic['remote_port_id']);
        $remote_object = spotEntity ('object', $remote_port_info['object_id']);
        $error = unlinkPort ($_REQUEST['port_id']);
        if ($error != '')
@@ -2164,7 +2166,7 @@ function updateVLANDomain ()
        return buildRedirectURL (__FUNCTION__, $result ? 'OK' : 'ERR');
 }
 
-function saveAllowedVLANs ()
+function setAllowedVLANs ()
 {
        assertUIntArg ('port_id');
        $vlan_id_list = isset ($_REQUEST['vlan_id']) ? $_REQUEST['vlan_id'] : array();
index 16db731..5409bca 100644 (file)
--- a/popup.php
+++ b/popup.php
@@ -86,7 +86,8 @@ function findSparePorts ($port_id, $only_racks = array())
                                ('All spare ports (<a href="popup.php?helper=portlist&port=' . $port_id . '&in_rack=y">show nearest</a>)');
                        echo '</h2><form action="javascript:;">';
                        $only_racks = array();
-                       $port_info = getPortInfo ($port_id);
+                       global $sic;
+                       $port_info = getPortInfo ($sic['port']);
                        if ($_REQUEST['in_rack'] == 'y' and $port_info['object_id'])
                        {
                                $object = spotEntity ('object', $port_info['object_id']);