r2693 - buildWideRedirectURL(): move to ophandlers.php, where it's actually used
[racktables] / inc / ophandlers.php
index 415ca83a8fd8840eb63b50025ef463f54ea1e554..657bdd17c8fd672c954eaf97a5d092b185fab1b4 100644 (file)
@@ -5,82 +5,51 @@
 *
 */
 
-// This function assures that specified argument was passed
-// and is a number greater than zero.
-function assertUIntArg ($argname, $caller = 'N/A', $allow_zero = FALSE)
-{
-       if (!isset ($_REQUEST[$argname]))
-       {
-               showError ("Parameter '${argname}' is missing (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
-       if (!is_numeric ($_REQUEST[$argname]))
-       {
-               showError ("Parameter '${argname}' is not a number (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
-       if ($_REQUEST[$argname] < 0)
-       {
-               showError ("Parameter '${argname}' is less than zero (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
-       if (!$allow_zero and $_REQUEST[$argname] == 0)
-       {
-               showError ("Parameter '${argname}' is equal to zero (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
-}
+$msgcode = array();
 
-// This function assures that specified argument was passed
-// and is a non-empty string.
-function assertStringArg ($argname, $caller = 'N/A', $ok_if_empty = FALSE)
+function buildWideRedirectURL ($log, $nextpage = NULL, $nexttab = NULL, $moreArgs = array())
 {
-       if (!isset ($_REQUEST[$argname]))
-       {
-               showError ("Parameter '${argname}' is missing (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
-       if (!is_string ($_REQUEST[$argname]))
-       {
-               showError ("Parameter '${argname}' is not a string (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
-       if (!$ok_if_empty and empty ($_REQUEST[$argname]))
-       {
-               showError ("Parameter '${argname}' is an empty string (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
-}
+       global $root, $page, $pageno, $tabno;
+       if ($nextpage === NULL)
+               $nextpage = $pageno;
+       if ($nexttab === NULL)
+               $nexttab = $tabno;
+       $url = "${root}?page=${nextpage}&tab=${nexttab}";
+       if (isset ($page[$nextpage]['bypass']))
+               $url .= '&' . $page[$nextpage]['bypass'] . '=' . $_REQUEST[$page[$nextpage]['bypass']];
 
-function assertBoolArg ($argname, $caller = 'N/A', $ok_if_empty = FALSE)
-{
-       if (!isset ($_REQUEST[$argname]))
+       if (count($moreArgs)>0)
        {
-               showError ("Parameter '${argname}' is missing (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
-       if (!is_string ($_REQUEST[$argname]) or $_REQUEST[$argname] != 'on')
-       {
-               showError ("Parameter '${argname}' is not a string (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
-       if (!$ok_if_empty and empty ($_REQUEST[$argname]))
-       {
-               showError ("Parameter '${argname}' is an empty string (calling function is [${caller}]).", __FUNCTION__);
-               die();
+               foreach($moreArgs as $arg=>$value)
+               {
+                       if (gettype($value) == 'array')
+                       {
+                               foreach ($value as $v)
+                               {
+                                       $url .= '&'.urlencode($arg.'[]').'='.urlencode($v);
+                               }
+                       }
+                       else
+                               $url .= '&'.urlencode($arg).'='.urlencode($value);
+               }
        }
+
+       $_SESSION['log'] = $log;
+       return $url;
 }
 
-function assertIPv4Arg ($argname, $caller = 'N/A', $ok_if_empty = FALSE)
+function buildRedirectURL ($callfunc, $status, $args = array(), $nextpage = NULL, $nexttab = NULL)
 {
-       assertStringArg ($argname, $caller, $ok_if_empty);
-       if (!empty ($_REQUEST[$argname]) and long2ip (ip2long ($_REQUEST[$argname])) !== $_REQUEST[$argname])
-       {
-               showError ("IPv4 address validation failed for value '" . $_REQUEST[$argname] . "' (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
+       global $pageno, $tabno, $msgcode;
+       if ($nextpage === NULL)
+               $nextpage = $pageno;
+       if ($nexttab === NULL)
+               $nexttab = $tabno;
+       return buildWideRedirectURL (oneLiner ($msgcode[$callfunc][$status], $args), $nextpage, $nexttab);
 }
 
+$msgcode['addPortForwarding']['OK'] = 2;
+$msgcode['addPortForwarding']['ERR'] = 100;
 function addPortForwarding ()
 {
        assertUIntArg ('object_id', __FUNCTION__);
@@ -110,6 +79,8 @@ function addPortForwarding ()
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
 }
 
+$msgcode['delPortForwarding']['OK'] = 3;
+$msgcode['delPortForwarding']['ERR'] = 100;
 function delPortForwarding ()
 {
        assertUIntArg ('object_id', __FUNCTION__);
@@ -134,6 +105,8 @@ function delPortForwarding ()
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
 }
 
+$msgcode['updPortForwarding']['OK'] = 4;
+$msgcode['updPortForwarding']['ERR'] = 100;
 function updPortForwarding ()
 {
        assertUIntArg ('object_id', __FUNCTION__);
@@ -160,6 +133,9 @@ function updPortForwarding ()
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
 }
 
+$msgcode['addPortForObject']['OK'] = 5;
+$msgcode['addPortForObject']['ERR1'] = 101;
+$msgcode['addPortForObject']['ERR2'] = 100;
 function addPortForObject ()
 {
        assertUIntArg ('object_id', __FUNCTION__);
@@ -173,6 +149,9 @@ function addPortForObject ()
                return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['port_name']));
 }
 
+$msgcode['editPortForObject']['OK'] = 6;
+$msgcode['editPortForObject']['ERR1'] = 101;
+$msgcode['editPortForObject']['ERR2'] = 100;
 function editPortForObject ()
 {
        assertUIntArg ('port_id', __FUNCTION__);
@@ -193,6 +172,8 @@ function editPortForObject ()
                return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['name']));
 }
 
+$msgcode['delPortFromObject']['OK'] = 7;
+$msgcode['delPortFromObject']['ERR'] = 100;
 function delPortFromObject ()
 {
        assertUIntArg ('port_id', __FUNCTION__);
@@ -204,6 +185,8 @@ function delPortFromObject ()
                return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['port_name']));
 }
 
+$msgcode['linkPortForObject']['OK'] = 8;
+$msgcode['linkPortForObject']['ERR'] = 100;
 function linkPortForObject ()
 {
        assertUIntArg ('port_id', __FUNCTION__);
@@ -219,6 +202,8 @@ function linkPortForObject ()
                return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['port_name'], $_REQUEST['remote_port_name'], $_REQUEST['remote_object_name']));
 }
 
+$msgcode['unlinkPortForObject']['OK'] = 9;
+$msgcode['unlinkPortForObject']['ERR'] = 100;
 function unlinkPortForObject ()
 {
        assertUIntArg ('port_id', __FUNCTION__);
@@ -233,6 +218,8 @@ function unlinkPortForObject ()
                return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['port_name'], $_REQUEST['remote_port_name'], $_REQUEST['remote_object_name']));
 }
 
+$msgcode['addMultiPorts']['OK'] = 10;
+$msgcode['addMultiPorts']['ERR'] = 123;
 function addMultiPorts ()
 {
        assertStringArg ('format', __FUNCTION__);
@@ -344,6 +331,8 @@ http://www.cisco.com/en/US/products/hw/routers/ps274/products_tech_note09186a008
        return buildRedirectURL (__FUNCTION__, 'OK', array ($added_count, $updated_count, $error_count));
 }
 
+$msgcode['updIPv4Allocation']['OK'] = 12;
+$msgcode['updIPv4Allocation']['ERR'] = 100;
 function updIPv4Allocation ()
 {
        assertIPv4Arg ('ip', __FUNCTION__);
@@ -358,6 +347,8 @@ function updIPv4Allocation ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['delIPv4Allocation']['OK'] = 14;
+$msgcode['delIPv4Allocation']['ERR'] = 100;
 function delIPv4Allocation ()
 {
        assertIPv4Arg ('ip', __FUNCTION__);
@@ -370,6 +361,9 @@ function delIPv4Allocation ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['addIPv4Allocation']['OK'] = 13;
+$msgcode['addIPv4Allocation']['ERR1'] = 170;
+$msgcode['addIPv4Allocation']['ERR2'] = 100;
 function addIPv4Allocation ()
 {
        assertIPv4Arg ('ip', __FUNCTION__);
@@ -398,6 +392,12 @@ function addIPv4Allocation ()
        return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['addIPv4Prefix']['OK'] = 23;
+$msgcode['addIPv4Prefix']['ERR'] = 100;
+$msgcode['addIPv4Prefix']['ERR1'] = 173;
+$msgcode['addIPv4Prefix']['ERR2'] = 174;
+$msgcode['addIPv4Prefix']['ERR3'] = 175;
+$msgcode['addIPv4Prefix']['ERR4'] = 176;
 function addIPv4Prefix ()
 {
        assertStringArg ('range', __FUNCTION__);
@@ -412,6 +412,8 @@ function addIPv4Prefix ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['delIPv4Prefix']['OK'] = 24;
+$msgcode['delIPv4Prefix']['ERR'] = 100;
 function delIPv4Prefix ()
 {
        assertUIntArg ('id', __FUNCTION__);
@@ -422,6 +424,8 @@ function delIPv4Prefix ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['updIPv4Prefix']['OK'] = 25;
+$msgcode['updIPv4Prefix']['ERR'] = 100;
 function updIPv4Prefix ()
 {
        assertUIntArg ('id', __FUNCTION__);
@@ -434,6 +438,8 @@ function updIPv4Prefix ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['editAddress']['OK'] = 27;
+$msgcode['editAddress']['ERR'] = 100;
 function editAddress ()
 {
        assertIPv4Arg ('ip', __FUNCTION__);
@@ -450,6 +456,8 @@ function editAddress ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['createUser']['OK'] = 40;
+$msgcode['createUser']['ERR'] = 102;
 function createUser ()
 {
        assertStringArg ('username', __FUNCTION__);
@@ -464,6 +472,9 @@ function createUser ()
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($username));
 }
 
+$msgcode['updateUser']['OK'] = 39;
+$msgcode['updateUser']['ERR1'] = 103;
+$msgcode['updateUser']['ERR1'] = 104;
 function updateUser ()
 {
        assertUIntArg ('user_id', __FUNCTION__);
@@ -484,6 +495,8 @@ function updateUser ()
                return buildRedirectURL (__FUNCTION__, 'ERR2', array ($username));
 }
 
+$msgcode['savePortMap']['OK'] = 44;
+$msgcode['savePortMap']['ERR'] = 108;
 // This function find differences in users's submit and PortCompat table
 // and modifies database accordingly.
 function savePortMap ()
@@ -530,6 +543,8 @@ function savePortMap ()
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($error_count, $success_count));
 }
 
+$msgcode['updateDictionary']['OK'] = 51;
+$msgcode['updateDictionary']['ERR'] = 109;
 function updateDictionary ()
 {
        assertUIntArg ('chapter_no', __FUNCTION__);
@@ -541,6 +556,8 @@ function updateDictionary ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
+$msgcode['supplementDictionary']['OK'] = 52;
+$msgcode['supplementDictionary']['ERR'] = 110;
 function supplementDictionary ()
 {
        assertUIntArg ('chapter_no', __FUNCTION__);
@@ -551,6 +568,8 @@ function supplementDictionary ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
+$msgcode['reduceDictionary']['OK'] = 50;
+$msgcode['reduceDictionary']['ERR'] = 111;
 function reduceDictionary ()
 {
        assertUIntArg ('chapter_no', __FUNCTION__);
@@ -561,6 +580,8 @@ function reduceDictionary ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
+$msgcode['addChapter']['OK'] = 55;
+$msgcode['addChapter']['ERR'] = 112;
 function addChapter ()
 {
        assertStringArg ('chapter_name', __FUNCTION__);
@@ -570,6 +591,8 @@ function addChapter ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
+$msgcode['updateChapter']['OK'] = 54;
+$msgcode['updateChapter']['ERR'] = 113;
 function updateChapter ()
 {
        assertUIntArg ('chapter_no', __FUNCTION__);
@@ -580,6 +603,8 @@ function updateChapter ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
+$msgcode['delChapter']['OK'] = 53;
+$msgcode['delChapter']['ERR'] = 114;
 function delChapter ()
 {
        assertUIntArg ('chapter_no', __FUNCTION__);
@@ -589,6 +614,8 @@ function delChapter ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
+$msgcode['changeAttribute']['OK'] = 46;
+$msgcode['changeAttribute']['ERR'] = 115;
 function changeAttribute ()
 {
        assertUIntArg ('attr_id', __FUNCTION__);
@@ -599,6 +626,8 @@ function changeAttribute ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
+$msgcode['createAttribute']['OK'] = 45;
+$msgcode['createAttribute']['ERR'] = 116;
 function createAttribute ()
 {
        assertStringArg ('attr_name', __FUNCTION__);
@@ -609,6 +638,8 @@ function createAttribute ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
+$msgcode['deleteAttribute']['OK'] = 47;
+$msgcode['deleteAttribute']['ERR'] = 117;
 function deleteAttribute ()
 {
        assertUIntArg ('attr_id', __FUNCTION__);
@@ -618,6 +649,8 @@ function deleteAttribute ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
+$msgcode['supplementAttrMap']['OK'] = 48;
+$msgcode['supplementAttrMap']['ERR'] = 118;
 function supplementAttrMap ()
 {
        assertUIntArg ('attr_id', __FUNCTION__);
@@ -629,6 +662,8 @@ function supplementAttrMap ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
+$msgcode['reduceAttrMap']['OK'] = 49;
+$msgcode['reduceAttrMap']['ERR'] = 119;
 function reduceAttrMap ()
 {
        assertUIntArg ('attr_id', __FUNCTION__);
@@ -639,6 +674,8 @@ function reduceAttrMap ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
+$msgcode['clearSticker']['OK'] = 15;
+$msgcode['clearSticker']['ERR'] = 120;
 function clearSticker ()
 {
        assertUIntArg ('attr_id', __FUNCTION__);
@@ -708,7 +745,8 @@ function updateObjectAllocation ()
 
 }
 
-
+$msgcode['updateObject']['OK'] = 16;
+$msgcode['updateObject']['ERR'] = 121;
 function updateObject ()
 {
        assertUIntArg ('num_attrs', __FUNCTION__);
@@ -855,6 +893,8 @@ function addLotOfObjects()
        return buildWideRedirectURL ($log);
 }
 
+$msgcode['deleteObject']['OK'] = 76;
+$msgcode['deleteObject']['ERR'] = 100;
 function deleteObject ()
 {
        assertUIntArg ('object_id', __FUNCTION__);
@@ -869,6 +909,8 @@ function deleteObject ()
        return buildRedirectURL (__FUNCTION__, 'OK', array ($oinfo['dname']));
 }
 
+$msgcode['useupPort']['OK'] = 11;
+$msgcode['useupPort']['ERR'] = 124;
 function useupPort ()
 {
        assertUIntArg ('port_id', __FUNCTION__);
@@ -878,6 +920,8 @@ function useupPort ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
+$msgcode['updateUI']['OK'] = 56;
+$msgcode['updateUI']['ERR'] = 125;
 function updateUI ()
 {
        assertUIntArg ('num_vars', __FUNCTION__);
@@ -906,6 +950,7 @@ function updateUI ()
        return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['resetUIConfig']['OK'] = 57;
 function resetUIConfig()
 {
        setConfigVar ('default_port_type','24');
@@ -952,6 +997,8 @@ function resetUIConfig()
        return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['addRealServer']['OK'] = 34;
+$msgcode['addRealServer']['ERR'] = 126;
 // Add single record.
 function addRealServer ()
 {
@@ -971,6 +1018,9 @@ function addRealServer ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['addRealServers']['OK'] = 37;
+$msgcode['addRealServers']['ERR1'] = 131;
+$msgcode['addRealServers']['ERR2'] = 127;
 // Parse textarea submitted and try adding a real server for each line.
 function addRealServers ()
 {
@@ -1031,6 +1081,9 @@ function addRealServers ()
                return buildRedirectURL (__FUNCTION__, 'ERR2', array ($ngood, $nbad));
 }
 
+$msgcode['addVService']['OK'] = 28;
+$msgcode['addVService']['ERR1'] = 132;
+$msgcode['addVService']['ERR2'] = 100;
 function addVService ()
 {
        assertIPv4Arg ('vip', __FUNCTION__);
@@ -1057,6 +1110,8 @@ function addVService ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['deleteRealServer']['OK'] = 35;
+$msgcode['deleteRealServer']['ERR'] = 128;
 function deleteRealServer ()
 {
        assertUIntArg ('id', __FUNCTION__);
@@ -1066,6 +1121,8 @@ function deleteRealServer ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['deleteLoadBalancer']['OK'] = 19;
+$msgcode['deleteLoadBalancer']['ERR'] = 129;
 function deleteLoadBalancer ()
 {
        assertUIntArg ('object_id', __FUNCTION__);
@@ -1081,6 +1138,8 @@ function deleteLoadBalancer ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['deleteVService']['OK'] = 29;
+$msgcode['deleteVService']['ERR'] = 130;
 function deleteVService ()
 {
        assertUIntArg ('vs_id', __FUNCTION__);
@@ -1090,6 +1149,8 @@ function deleteVService ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['updateRealServer']['OK'] = 36;
+$msgcode['updateRealServer']['ERR'] = 133;
 function updateRealServer ()
 {
        assertUIntArg ('rs_id', __FUNCTION__);
@@ -1107,6 +1168,8 @@ function updateRealServer ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['updateLoadBalancer']['OK'] = 20;
+$msgcode['updateLoadBalancer']['ERR'] = 134;
 function updateLoadBalancer ()
 {
        assertUIntArg ('object_id', __FUNCTION__);
@@ -1126,6 +1189,8 @@ function updateLoadBalancer ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['updateVService']['OK'] = 30;
+$msgcode['updateVService']['ERR'] = 135;
 function updateVService ()
 {
        assertUIntArg ('vs_id', __FUNCTION__);
@@ -1149,6 +1214,8 @@ function updateVService ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['addLoadBalancer']['OK'] = 18;
+$msgcode['addLoadBalancer']['ERR'] = 137;
 function addLoadBalancer ()
 {
        assertUIntArg ('pool_id', __FUNCTION__);
@@ -1168,6 +1235,8 @@ function addLoadBalancer ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['addRSPool']['OK'] = 31;
+$msgcode['addRSPool']['ERR'] = 100;
 function addRSPool ()
 {
        assertStringArg ('name', __FUNCTION__, TRUE);
@@ -1186,6 +1255,8 @@ function addRSPool ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['deleteRSPool']['OK'] = 32;
+$msgcode['deleteRSPool']['ERR'] = 138;
 function deleteRSPool ()
 {
        assertUIntArg ('pool_id', __FUNCTION__);
@@ -1195,6 +1266,8 @@ function deleteRSPool ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['updateRSPool']['OK'] = 33;
+$msgcode['updateRSPool']['ERR'] = 139;
 function updateRSPool ()
 {
        assertUIntArg ('pool_id', __FUNCTION__);
@@ -1207,6 +1280,8 @@ function updateRSPool ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['updateRSInService']['OK'] = 38;
+$msgcode['updateRSInService']['ERR'] = 140;
 function updateRSInService ()
 {
        assertUIntArg ('rscount', __FUNCTION__);
@@ -1234,6 +1309,8 @@ function updateRSInService ()
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($nbad, $ngood));
 }
 
+$msgcode['importPTRData']['OK'] = 26;
+$msgcode['importPTRData']['ERR'] = 141;
 // FIXME: check, that each submitted address belongs to the prefix we
 // are operating on.
 function importPTRData ()
@@ -1263,6 +1340,8 @@ function importPTRData ()
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($nbad, $ngood));
 }
 
+$msgcode['generateAutoPorts']['OK'] = 21;
+$msgcode['generateAutoPorts']['ERR'] = 142;
 function generateAutoPorts ()
 {
        global $pageno;
@@ -1275,6 +1354,9 @@ function generateAutoPorts ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
+$msgcode['saveEntityTags']['OK'] = 22;
+$msgcode['saveEntityTags']['ERR1'] = 143;
+$msgcode['saveEntityTags']['ERR2'] = 187;
 // Filter out implicit tags before storing the new tag set.
 function saveEntityTags ()
 {
@@ -1302,6 +1384,9 @@ function saveEntityTags ()
                return buildRedirectURL (__FUNCTION__, 'OK', array ($n_succeeds));
 }
 
+$msgcode['destroyTag']['OK'] = 58;
+$msgcode['destroyTag']['ERR1'] = 183;
+$msgcode['destroyTag']['ERR2'] = 144;
 function destroyTag ()
 {
        assertUIntArg ('tag_id', __FUNCTION__);
@@ -1314,6 +1399,9 @@ function destroyTag ()
                return buildRedirectURL (__FUNCTION__, 'ERR2');
 }
 
+$msgcode['createTag']['OK'] = 59;
+$msgcode['createTag']['ERR1'] = 145;
+$msgcode['createTag']['ERR3'] = 147;
 function createTag ()
 {
        assertStringArg ('tag_name', __FUNCTION__);
@@ -1329,6 +1417,9 @@ function createTag ()
                return buildRedirectURL (__FUNCTION__, 'ERR3', array ($tagname, $ret));
 }
 
+$msgcode['updateTag']['OK'] = 60;
+$msgcode['updateTag']['ERR1'] = 145;
+$msgcode['updateTag']['ERR2'] = 148;
 function updateTag ()
 {
        assertUIntArg ('tag_id', __FUNCTION__);
@@ -1346,6 +1437,8 @@ function updateTag ()
        return buildRedirectURL (__FUNCTION__, 'ERR2', array ($taglist[$_REQUEST['tag_id']]['tag'], $ret));
 }
 
+$msgcode['rollTags']['OK'] = 67;
+$msgcode['rollTags']['ERR'] = 149;
 function rollTags ()
 {
        assertUIntArg ('row_id', __FUNCTION__);
@@ -1372,6 +1465,11 @@ function rollTags ()
        return buildRedirectURL (__FUNCTION__, 'OK', array ($n_ok));
 }
 
+$msgcode['changeMyPassword']['OK'] = 61;
+$msgcode['changeMyPassword']['ERR1'] = 150;
+$msgcode['changeMyPassword']['ERR2'] = 151;
+$msgcode['changeMyPassword']['ERR3'] = 152;
+$msgcode['changeMyPassword']['ERR4'] = 153;
 function changeMyPassword ()
 {
        global $remote_username, $user_auth_src;
@@ -1392,6 +1490,9 @@ function changeMyPassword ()
                return buildRedirectURL (__FUNCTION__, 'ERR4');
 }
 
+$msgcode['saveRackCode']['OK'] = 43;
+$msgcode['saveRackCode']['ERR1'] = 154;
+$msgcode['saveRackCode']['ERR2'] = 155;
 function saveRackCode ()
 {
        assertStringArg ('rackcode');
@@ -1407,6 +1508,7 @@ function saveRackCode ()
                return buildRedirectURL (__FUNCTION__, 'ERR2');
 }
 
+$msgcode['setPortVLAN']['ERR1'] = 156;
 // This handler's context is pre-built, but not authorized. It is assumed, that the
 // handler will take existing context and before each commit check authorization
 // on the base chain plus necessary context added.
@@ -1472,6 +1574,8 @@ function submitSLBConfig ()
        return buildWideRedirectURL ($msglog);
 }
 
+$msgcode['addRow']['OK'] = 74;
+$msgcode['addRow']['ERR'] = 100;
 function addRow ()
 {
        assertStringArg ('name', __FUNCTION__);
@@ -1482,6 +1586,8 @@ function addRow ()
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($_REQUEST['name']));
 }
 
+$msgcode['updateRow']['OK'] = 75;
+$msgcode['updateRow']['ERR'] = 100;
 function updateRow ()
 {
        assertUIntArg ('row_id', __FUNCTION__);
@@ -1493,6 +1599,8 @@ function updateRow ()
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($_REQUEST['name']));
 }
 
+$msgcode['deleteRow']['OK'] = 77;
+$msgcode['deleteRow']['ERR'] = 100;
 function deleteRow ()
 {
        assertUIntArg ('row_id', __FUNCTION__);
@@ -1504,6 +1612,9 @@ function deleteRow ()
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($rowinfo['name']));
 }
 
+$msgcode['addRack']['OK'] = 65;
+$msgcode['addRack']['ERR1'] = 171;
+$msgcode['addRack']['ERR2'] = 172;
 function addRack ()
 {
        assertUIntArg ('row_id', __FUNCTION__);
@@ -1548,6 +1659,9 @@ function addRack ()
                return buildRedirectURL (__FUNCTION__, 'ERR2');
 }
 
+$msgcode['deleteRack']['OK'] = 79;
+$msgcode['deleteRack']['ERR'] = 100;
+$msgcode['deleteRack']['ERR1'] = 206;
 function deleteRack ()
 {
        assertUIntArg ('rack_id', __FUNCTION__);
@@ -1572,6 +1686,8 @@ function deleteRack ()
        }
 }
 
+$msgcode['updateRack']['OK'] = 68;
+$msgcode['updateRack']['ERR'] = 177;
 function updateRack ()
 {
        assertUIntArg ('rack_id', __FUNCTION__);
@@ -1615,15 +1731,16 @@ function updateRackProblems ()
        return buildWideRedirectURL (array($response));
 }
 
-
-
 function querySNMPData ()
 {
        assertUIntArg ('object_id', __FUNCTION__);
        assertStringArg ('community', __FUNCTION__);
+       require 'inc/snmp.php';
        return buildWideRedirectURL (doSNMPmining ($_REQUEST['object_id'], $_REQUEST['community']));
 }
 
+$msgcode['addFileWithoutLink']['OK'] = 69;
+$msgcode['addFileWithoutLink']['ERR'] = 100;
 // File-related functions
 function addFileWithoutLink ()
 {
@@ -1642,6 +1759,10 @@ function addFileWithoutLink ()
        return buildRedirectURL (__FUNCTION__, 'OK', array ($_FILES['file']['name']));
 }
 
+$msgcode['addFileToEntity']['OK'] = 69;
+$msgcode['addFileToEntity']['ERR1'] = 187;
+$msgcode['addFileToEntity']['ERR2'] = 181;
+$msgcode['addFileToEntity']['ERR3'] = 182;
 function addFileToEntity ()
 {
        global $page, $pageno, $etype_by_pageno;
@@ -1669,6 +1790,9 @@ function addFileToEntity ()
        return buildRedirectURL (__FUNCTION__, 'OK', array ($_FILES['file']['name']));
 }
 
+$msgcode['linkFileToEntity']['OK'] = 71;
+$msgcode['linkFileToEntity']['ERR1'] = 178;
+$msgcode['linkFileToEntity']['ERR2'] = 100;
 function linkFileToEntity ()
 {
        assertUIntArg ('file_id', __FUNCTION__);
@@ -1687,6 +1811,10 @@ function linkFileToEntity ()
        return buildRedirectURL (__FUNCTION__, 'OK', array ($fi['name']));
 }
 
+$msgcode['replaceFile']['OK'] = 70;
+$msgcode['replaceFile']['ERR1'] = 181;
+$msgcode['replaceFile']['ERR2'] = 207;
+$msgcode['replaceFile']['ERR3'] = 182;
 function replaceFile ()
 {
        global $sic;
@@ -1707,6 +1835,8 @@ function replaceFile ()
        return buildRedirectURL (__FUNCTION__, 'OK', array (htmlspecialchars ($shortInfo['name'])));
 }
 
+$msgcode['updateFile']['OK'] = 70;
+$msgcode['updateFile']['ERR'] = 100;
 function updateFile ()
 {
        assertUIntArg ('file_id', __FUNCTION__);
@@ -1722,6 +1852,8 @@ function updateFile ()
        return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['name']));
 }
 
+$msgcode['unlinkFile']['OK'] = 72;
+$msgcode['unlinkFile']['ERR'] = 182;
 function unlinkFile ()
 {
        assertUIntArg ('link_id', __FUNCTION__);
@@ -1733,6 +1865,8 @@ function unlinkFile ()
        return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
+$msgcode['deleteFile']['OK'] = 73;
+$msgcode['deleteFile']['ERR'] = 100;
 function deleteFile ()
 {
        assertUIntArg ('file_id', __FUNCTION__);
@@ -1745,6 +1879,9 @@ function deleteFile ()
        return buildRedirectURL (__FUNCTION__, 'OK', array (htmlspecialchars ($shortInfo['name'])));
 }
 
+$msgcode['updateFileText']['OK'] = 78;
+$msgcode['updateFileText']['ERR1'] = 179;
+$msgcode['updateFileText']['ERR2'] = 180;
 function updateFileText ()
 {
        assertUIntArg ('file_id', __FUNCTION__);