$device['device_id'])); foreach ($sla_table as $sla_nr => $sla_config) { $query_data = array( 'device_id' => $device['device_id'], 'sla_nr' => $sla_nr, ); $sla_id = dbFetchCell("SELECT `sla_id` FROM `slas` WHERE `device_id` = :device_id AND `sla_nr` = :sla_nr", $query_data); $data = array( 'device_id' => $device['device_id'], 'sla_nr' => $sla_nr, 'owner' => $sla_config['rttMonCtrlAdminOwner'], 'tag' => $sla_config['rttMonCtrlAdminTag'], 'rtt_type' => $sla_config['rttMonCtrlAdminRttType'], 'status' => ($sla_config['rttMonCtrlAdminStatus'] == 'active') ? 1 : 0, 'deleted' => 0, ); // Some fallbacks for when the tag is empty if (!$data['tag']) { switch ($data['rtt_type']) { case 'http': $data['tag'] = $sla_config['rttMonEchoAdminURL']; break; case 'dns': $data['tag'] = $sla_config['rttMonEchoAdminTargetAddressString']; break; case 'echo': $parts = explode(" ", $sla_config['rttMonEchoAdminTargetAddress']); if (count($parts) == 4) { // IPv4 $data['tag'] = implode(".", array_map('hexdec', $parts)); } elseif (count($parts) == 16) { // IPv6 $data['tag'] = $parts[0].$parts[1].':'.$parts[2].$parts[3].':'.$parts[4].$parts[5].':'.$parts[6].$parts[7].':'.$parts[8].$parts[9].':'.$parts[10].$parts[11].':'.$parts[12].$parts[13].':'.$parts[14].$parts[15]; $data['tag'] = preg_replace('/:0*([0-9])/', ':$1', $data['tag']); } break; } } if (!$sla_id) { $sla_id = dbInsert($data, 'slas'); echo "+"; } else { // Remove from the list $existing_slas = array_diff($existing_slas, array($sla_id)); dbUpdate($data, 'slas', "`sla_id` = :sla_id", array('sla_id' => $sla_id)); echo "."; } } // Mark all remaining SLAs as deleted foreach ($existing_slas as $existing_sla) { dbUpdate(array('deleted' => 1), 'slas', "`sla_id` = :sla_id", array('sla_id' => $existing_sla)); echo "-"; } echo("\n"); } # enable_sla && cisco ?>