r1832 + implement tag specification for new IPv4 networks
authorDenis Ovsienko <infrastation@yandex.ru>
Tue, 25 Mar 2008 11:29:58 +0000 (11:29 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Tue, 25 Mar 2008 11:29:58 +0000 (11:29 +0000)
inc/functions.php
inc/ophandlers.php

index 1b314b7a687c0b49415cc3a02a39d22ab8944491..0a8c13ce073b6f090e77e5cb1b27af28909f38e7 100644 (file)
@@ -374,7 +374,7 @@ function binInvMaskFromDec ($maskL)
        return $binmask;
 }
 
-function addRange ($range='', $name='', $is_bcast = FALSE)
+function addRange ($range='', $name='', $is_bcast = FALSE, $taglist = array())
 {
        // $range is in x.x.x.x/x format, split into ip/mask vars
        $rangeArray = explode('/', $range);
@@ -420,9 +420,7 @@ function addRange ($range='', $name='', $is_bcast = FALSE)
                "from IPRanges ";
        
 
-       global $dbxlink;
-
-       $result = $dbxlink->query ($query);
+       $result = useSelectBlade ($query);
 
        while ($row = $result->fetch (PDO::FETCH_ASSOC))
        {
@@ -438,9 +436,17 @@ function addRange ($range='', $name='', $is_bcast = FALSE)
                        return "This subnet intersects with ".long2ip($row['ip'])."/${row['mask']}";
        }
        $result->closeCursor();
-       $query =
-               "insert into IPRanges set ip=".sprintf('%u', $ipL).", mask='$maskL', name='$name'";
-       $result = $dbxlink->exec ($query);
+       unset ($result);
+       $result = useInsertBlade
+       (
+               'IPRanges',
+               array
+               (
+                       'ip' => sprintf ('%u', $ipL),
+                       'mask' => "'${maskL}'",
+                       'name' => "'${name}'"
+               )
+       );
 
        if ($is_bcast and $maskL < 31)
        {
@@ -449,7 +455,29 @@ function addRange ($range='', $name='', $is_bcast = FALSE)
                updateAddress ($network_addr, 'network', 'yes');
                updateAddress ($broadcast_addr, 'broadcast', 'yes');
        }
-       return '';
+       if (!count ($taglist))
+               return '';
+       if (($result = useSelectBlade ('select last_insert_id()')) == NULL) 
+               return 'Query #3 failed in ' . __FUNCTION__;
+       $row = $result->fetch (PDO::FETCH_NUM);
+       $netid = $row[0];
+       $errcount = 0;
+       foreach ($taglist as $tag_id)
+               if (useInsertBlade
+               (
+                       'TagStorage',
+                       array
+                       (
+                               'target_realm' => "'ipv4net'",
+                               'target_id' => $netid,
+                               'tag_id' => $tag_id
+                       )
+               ) == FALSE)
+                       $errcount++;    
+       if (!$errcount)
+               return '';
+       else
+               return "Experienced ${errcount} errors adding tags for the network";
 }
 
 function getIPRange ($id = 0)
index b0953f32c91aeba996a5fcd20003edbd12af60ad..07c1a819700e2e8ed294063e346b225bad63336d 100644 (file)
@@ -503,8 +503,9 @@ function addNewRange ()
 
        $range = $_REQUEST['range'];
        $name = $_REQUEST['name'];
-       $is_bcast = $_REQUEST['is_bcast'];
-       $error = addRange($range, $name, $is_bcast == 'on');
+       $is_bcast = isset ($_REQUEST['is_bcast']) ? $_REQUEST['is_bcast'] : 'off';
+       $taglist = isset ($_REQUEST['taglist']) ? $_REQUEST['taglist'] : array();
+       $error = addRange($range, $name, $is_bcast == 'on', $taglist);
        if ($error != '')
        {
                return "${root}?page=${pageno}&tab=${tabno}&error=".urlencode($error);