From 263633e274082135b21b8183b92280b768d18883 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Fri, 18 Jul 2008 02:40:47 +0000 Subject: Patch #9151 Makes the estate dialog fully functional. Implements all client facing functionality. Moves estate data from estate_settings.xml, which is used to provide defaults, to the region data store. Creates one estate for each region, and places the region in it. Converts all region bans to estate bans. --- OpenSim/Framework/EstateSettings.cs | 660 ++++++++++++++++++------------------ 1 file changed, 325 insertions(+), 335 deletions(-) (limited to 'OpenSim/Framework/EstateSettings.cs') diff --git a/OpenSim/Framework/EstateSettings.cs b/OpenSim/Framework/EstateSettings.cs index 2865844..b48a1db 100644 --- a/OpenSim/Framework/EstateSettings.cs +++ b/OpenSim/Framework/EstateSettings.cs @@ -28,6 +28,7 @@ using System; using System.IO; using System.Reflection; +using System.Collections.Generic; using libsecondlife; using log4net; @@ -38,451 +39,440 @@ namespace OpenSim.Framework private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private ConfigurationMember configMember; - //Settings to this island - private float m_billableFactor; - - private uint m_estateID; - private LLUUID m_estateManager0; - private LLUUID m_estateManager1; - private LLUUID m_estateManager2; - private LLUUID m_estateManager3; - private LLUUID m_estateManager4; - private LLUUID m_estateManager5; - private LLUUID m_estateManager6; - private LLUUID m_estateManager7; - private LLUUID m_estateManager8; - private LLUUID m_estateManager9; - private string m_estateName; - - private uint m_parentEstateID; - private int m_pricePerMeter; - private int m_redirectGridX; - private int m_redirectGridY; + public delegate void SaveDelegate(EstateSettings rs); - public EstateSettings() + public event SaveDelegate OnSave; + + // Only the client uses these + // + private uint m_EstateID = 100; + + public uint EstateID { - // Temporary hack to prevent multiple loadings. - if (configMember == null) - { - configMember = - new ConfigurationMember(Path.Combine(Util.configDir(), "estate_settings.xml"), "ESTATE SETTINGS", - loadConfigurationOptions, handleIncomingConfiguration, true); - configMember.performConfigurationRetrieve(); - } + get { return m_EstateID; } + set { m_EstateID = value; } } - public float billableFactor + private string m_EstateName; + + public string EstateName { - get { return m_billableFactor; } - set - { - m_billableFactor = value; - configMember.forceSetConfigurationOption("billable_factor", m_billableFactor.ToString()); - } + get { return m_EstateName; } + set { m_EstateName = value; } } - public uint estateID + private uint m_ParentEstateID = 100; + + public uint ParentEstateID { - get { return m_estateID; } - set - { - m_estateID = value; - configMember.forceSetConfigurationOption("estate_id", m_estateID.ToString()); - } + get { return m_ParentEstateID; } + set { m_ParentEstateID = value; } } - public uint parentEstateID + private float m_BillableFactor; + + public float BillableFactor { - get { return m_parentEstateID; } - set - { - m_parentEstateID = value; - configMember.forceSetConfigurationOption("parent_estate_id", m_parentEstateID.ToString()); - } + get { return m_BillableFactor; } + set { m_BillableFactor = value; } } - public int redirectGridX + private int m_PricePerMeter; + + public int PricePerMeter { - get { return m_redirectGridX; } - set - { - m_redirectGridX = value; - configMember.forceSetConfigurationOption("redirect_grid_x", m_redirectGridX.ToString()); - } + get { return m_PricePerMeter; } + set { m_PricePerMeter = value; } } - public int redirectGridY + private int m_RedirectGridX; + + public int RedirectGridX { - get { return m_redirectGridY; } - set - { - m_redirectGridY = value; - configMember.forceSetConfigurationOption("redirect_grid_y", m_redirectGridY.ToString()); - } + get { return m_RedirectGridX; } + set { m_RedirectGridX = value; } } - public int pricePerMeter + private int m_RedirectGridY; + + public int RedirectGridY { - get { return m_pricePerMeter; } - set - { - m_pricePerMeter = value; - configMember.forceSetConfigurationOption("price_per_meter", m_pricePerMeter.ToString()); - } + get { return m_RedirectGridY; } + set { m_RedirectGridY = value; } } - // Estate name + // Used by the sim + // + private bool m_UseGlobalTime = true; - public string estateName + public bool UseGlobalTime { - get { return m_estateName; } - set - { - m_estateName = value; - configMember.forceSetConfigurationOption("estate_name", m_estateName.ToString()); - } + get { return m_UseGlobalTime; } + set { m_UseGlobalTime = value; } } - public LLUUID[] estateManagers + private bool m_FixedSun = false; + + public bool FixedSun { - get - { - // returns a condensed array of LLUUIDs - return GetEstateManagers(); - } - set - { - // Sets a Condensed array of LLUUIDS - int i = 0; - for (i = 0; i < value.Length; i++) - { - switch (i) - { - case 0: - m_estateManager0 = value[i]; - break; - case 1: - m_estateManager1 = value[i]; - break; - case 2: - m_estateManager2 = value[i]; - break; - case 3: - m_estateManager3 = value[i]; - break; - case 4: - m_estateManager4 = value[i]; - break; - case 5: - m_estateManager5 = value[i]; - break; - case 6: - m_estateManager6 = value[i]; - break; - case 7: - m_estateManager7 = value[i]; - break; - case 8: - m_estateManager8 = value[i]; - break; - case 9: - m_estateManager9 = value[i]; - break; - } - } - - // Clear the rest of them.. as they're no longer valid - for (int j = i; j < 10; j++) - { - switch (j) - { - case 0: - m_estateManager0 = LLUUID.Zero; - break; - case 1: - m_estateManager1 = LLUUID.Zero; - break; - case 2: - m_estateManager2 = LLUUID.Zero; - break; - case 3: - m_estateManager3 = LLUUID.Zero; - break; - case 4: - m_estateManager4 = LLUUID.Zero; - break; - case 5: - m_estateManager5 = LLUUID.Zero; - break; - case 6: - m_estateManager6 = LLUUID.Zero; - break; - case 7: - m_estateManager7 = LLUUID.Zero; - break; - case 8: - m_estateManager8 = LLUUID.Zero; - break; - case 9: - m_estateManager9 = LLUUID.Zero; - break; - } - } - - for (i = 0; i < 10; i++) - { - // Writes out the Estate managers to the XML file. - configMember.forceSetConfigurationOption("estate_manager_" + i, (GetEstateManagerAtPos(i)).ToString()); - } - } + get { return m_FixedSun; } + set { m_FixedSun = value; } } - #region EstateManager Get Methods to sort out skipped spots in the XML (suser error) + private double m_SunPosition = 0.0; - private LLUUID GetEstateManagerAtPos(int pos) + public double SunPosition { - // This is a helper for writing them out to the xml file - switch (pos) - { - case 0: - return m_estateManager0; + get { return m_SunPosition; } + set { m_SunPosition = value; } + } - case 1: - return m_estateManager1; + private bool m_AllowVoice = true; - case 2: - return m_estateManager2; + public bool AllowVoice + { + get { return m_AllowVoice; } + set { m_AllowVoice = value; } + } - case 3: - return m_estateManager3; + private bool m_AllowDirectTeleport = true; - case 4: - return m_estateManager4; + public bool AllowDirectTeleport + { + get { return m_AllowDirectTeleport; } + set { m_AllowDirectTeleport = value; } + } - case 5: - return m_estateManager5; + private bool m_DenyAnonymous = false; - case 6: - return m_estateManager6; + public bool DenyAnonymous + { + get { return m_DenyAnonymous; } + set { m_DenyAnonymous = value; } + } - case 7: - return m_estateManager7; + private bool m_DenyIdentified = false; - case 8: - return m_estateManager8; + public bool DenyIdentified + { + get { return m_DenyIdentified; } + set { m_DenyIdentified = value; } + } - case 9: - return m_estateManager9; + private bool m_DenyTransacted = false; - default: - return LLUUID.Zero; - } + public bool DenyTransacted + { + get { return m_DenyTransacted; } + set { m_DenyTransacted = value; } } - private LLUUID[] GetEstateManagers() + private bool m_AbuseEmailToEstateOwner = false; + + public bool AbuseEmailToEstateOwner { - int numEstateManagers = GetNumberOfEstateManagers(); - LLUUID[] rEstateManagers = new LLUUID[numEstateManagers]; + get { return m_AbuseEmailToEstateOwner; } + set { m_AbuseEmailToEstateOwner = value; } + } - int pos = 0; + private bool m_BlockDwell = false; - for (int i = 0; i < numEstateManagers; i++) - { - pos = GetNextEstateManager(pos); - - rEstateManagers[i] = GetEstateManagerAtPos(pos); - pos++; - } - return rEstateManagers; + public bool BlockDwell + { + get { return m_BlockDwell; } + set { m_BlockDwell = value; } } - private int GetNextEstateManager(int startpos) + private bool m_EstateSkipScripts = false; + + public bool EstateSkipScripts { - // This is a utility function that skips over estate managers set to LLUUID.Zero - int i = startpos; - for (i = startpos; i < 10; i++) - { - if (GetEstateManagerAtPos(i) != LLUUID.Zero) return i; - } - return i; + get { return m_EstateSkipScripts; } + set { m_EstateSkipScripts = value; } } - private int GetNumberOfEstateManagers() + private bool m_ResetHomeOnTeleport = false; + + public bool ResetHomeOnTeleport { - // This function returns the number of estate managers set - // Regardless of whether there is a skipped spot - int numEstateManagers = 0; - if (m_estateManager0 != LLUUID.Zero) numEstateManagers++; - if (m_estateManager1 != LLUUID.Zero) numEstateManagers++; - if (m_estateManager2 != LLUUID.Zero) numEstateManagers++; - if (m_estateManager3 != LLUUID.Zero) numEstateManagers++; - if (m_estateManager4 != LLUUID.Zero) numEstateManagers++; - if (m_estateManager5 != LLUUID.Zero) numEstateManagers++; - if (m_estateManager6 != LLUUID.Zero) numEstateManagers++; - if (m_estateManager7 != LLUUID.Zero) numEstateManagers++; - if (m_estateManager8 != LLUUID.Zero) numEstateManagers++; - if (m_estateManager9 != LLUUID.Zero) numEstateManagers++; + get { return m_ResetHomeOnTeleport; } + set { m_ResetHomeOnTeleport = value; } + } - return numEstateManagers; + private bool m_TaxFree = false; + + public bool TaxFree + { + get { return m_TaxFree; } + set { m_TaxFree = value; } } - public void AddEstateManager(LLUUID avatarID) + private bool m_PublicAccess = true; + + public bool PublicAccess { - LLUUID[] testateManagers = GetEstateManagers(); - LLUUID[] nestateManagers = new LLUUID[testateManagers.Length + 1]; + get { return m_PublicAccess; } + set { m_PublicAccess = value; } + } - int i = 0; - for (i = 0; i < testateManagers.Length; i++) - { - nestateManagers[i] = testateManagers[i]; - } + // All those lists... + // + private List l_EstateManagers = new List(); - nestateManagers[i] = avatarID; + public LLUUID[] EstateManagers + { + get { return l_EstateManagers.ToArray(); } + set { l_EstateManagers = new List(value); } + } - //Saves it to the estate settings file - estateManagers = nestateManagers; + private List l_EstateBans = new List(); + + public EstateBan[] EstateBans + { + get { return l_EstateBans.ToArray(); } + set { l_EstateBans = new List(value); } } - public void RemoveEstateManager(LLUUID avatarID) + private List l_EstateAccess = new List(); + + public LLUUID[] EstateAccess { - int notfoundparam = 11; // starting high so the condense routine (max ten) doesn't run if we don't find it. - LLUUID[] testateManagers = GetEstateManagers(); // temporary estate managers list + get { return l_EstateAccess.ToArray(); } + set { l_EstateAccess = new List(value); } + } + private List l_EstateGroups = new List(); - int i = 0; - int foundpos = notfoundparam; + public LLUUID[] EstateGroups + { + get { return l_EstateGroups.ToArray(); } + set { l_EstateGroups = new List(value); } + } - // search for estate manager. - for (i = 0; i < testateManagers.Length; i++) + public EstateSettings() + { + if (configMember == null) { - if (testateManagers[i] == avatarID) - { - foundpos = i; - break; - } + // Load legacy defaults + // + configMember = + new ConfigurationMember(Path.Combine(Util.configDir(), + "estate_settings.xml"), "ESTATE SETTINGS", + loadConfigurationOptions, + handleIncomingConfiguration, true); + + l_EstateManagers.Clear(); + configMember.performConfigurationRetrieve(); } - if (foundpos < notfoundparam) - { - LLUUID[] restateManagers = new LLUUID[testateManagers.Length - 1]; + } - // fill new estate managers array up to the found spot - for (int j = 0; j < foundpos; j++) - restateManagers[j] = testateManagers[j]; + public void Save() + { + if(OnSave != null) + OnSave(this); + } - // skip over the estate manager we're removing and compress - for (int j = foundpos + 1; j < testateManagers.Length; j++) - restateManagers[j - 1] = testateManagers[j]; + public void AddEstateManager(LLUUID avatarID) + { + if(avatarID == null || avatarID == LLUUID.Zero) + return; + if(!l_EstateManagers.Contains(avatarID)) + l_EstateManagers.Add(avatarID); + } - estateManagers = restateManagers; - } - else - { - m_log.Error("[ESTATESETTINGS]: Unable to locate estate manager : " + avatarID.ToString() + " for removal"); - } + public void RemoveEstateManager(LLUUID avatarID) + { + if(l_EstateManagers.Contains(avatarID)) + l_EstateManagers.Remove(avatarID); } - #endregion + public bool IsEstateManager(LLUUID avatarID) + { + return l_EstateManagers.Contains(avatarID); + } + + public bool IsBanned(LLUUID avatarID) + { + foreach (EstateBan ban in l_EstateBans) + if(ban.bannedUUID == avatarID) + return true; + return false; + } + + public void AddBan(EstateBan ban) + { + if(ban == null) + return; + if(!IsBanned(ban.bannedUUID)) + l_EstateBans.Add(ban); + } + + public void ClearBans() + { + l_EstateBans.Clear(); + } + + public void RemoveBan(LLUUID avatarID) + { + foreach (EstateBan ban in new List(l_EstateBans)) + if(ban.bannedUUID == avatarID) + l_EstateBans.Remove(ban); + } public void loadConfigurationOptions() { - configMember.addConfigurationOption("billable_factor", ConfigurationOption.ConfigurationTypes.TYPE_FLOAT, String.Empty, - "0.0", true); - configMember.addConfigurationOption("estate_id", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, String.Empty, "100", - true); - configMember.addConfigurationOption("parent_estate_id", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, - String.Empty, "1", true); - configMember.addConfigurationOption("max_agents", ConfigurationOption.ConfigurationTypes.TYPE_BYTE, String.Empty, "40", - true); - - configMember.addConfigurationOption("redirect_grid_x", ConfigurationOption.ConfigurationTypes.TYPE_INT32, String.Empty, - "0", true); - configMember.addConfigurationOption("redirect_grid_y", ConfigurationOption.ConfigurationTypes.TYPE_INT32, String.Empty, - "0", true); - configMember.addConfigurationOption("price_per_meter", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, - String.Empty, "1", true); - - configMember.addConfigurationOption("water_height", ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, String.Empty, - "20.0", true); - - configMember.addConfigurationOption("estate_name", ConfigurationOption.ConfigurationTypes.TYPE_STRING, - String.Empty, "TestEstate", true); - configMember.addConfigurationOption("estate_manager_0", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, - String.Empty, "00000000-0000-0000-0000-000000000000", true); - configMember.addConfigurationOption("estate_manager_1", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, - String.Empty, "00000000-0000-0000-0000-000000000000", true); - configMember.addConfigurationOption("estate_manager_2", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, - String.Empty, "00000000-0000-0000-0000-000000000000", true); - configMember.addConfigurationOption("estate_manager_3", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, - String.Empty, "00000000-0000-0000-0000-000000000000", true); - configMember.addConfigurationOption("estate_manager_4", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, - String.Empty, "00000000-0000-0000-0000-000000000000", true); - configMember.addConfigurationOption("estate_manager_5", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, - String.Empty, "00000000-0000-0000-0000-000000000000", true); - configMember.addConfigurationOption("estate_manager_6", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, - String.Empty, "00000000-0000-0000-0000-000000000000", true); - configMember.addConfigurationOption("estate_manager_7", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, - String.Empty, "00000000-0000-0000-0000-000000000000", true); - configMember.addConfigurationOption("estate_manager_8", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, - String.Empty, "00000000-0000-0000-0000-000000000000", true); - configMember.addConfigurationOption("estate_manager_9", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, - String.Empty, "00000000-0000-0000-0000-000000000000", true); + configMember.addConfigurationOption("billable_factor", + ConfigurationOption.ConfigurationTypes.TYPE_FLOAT, + String.Empty, "0.0", true); + +// configMember.addConfigurationOption("estate_id", +// ConfigurationOption.ConfigurationTypes.TYPE_UINT32, +// String.Empty, "100", true); + +// configMember.addConfigurationOption("parent_estate_id", +// ConfigurationOption.ConfigurationTypes.TYPE_UINT32, +// String.Empty, "1", true); + + configMember.addConfigurationOption("redirect_grid_x", + ConfigurationOption.ConfigurationTypes.TYPE_INT32, + String.Empty, "0", true); + + configMember.addConfigurationOption("redirect_grid_y", + ConfigurationOption.ConfigurationTypes.TYPE_INT32, + String.Empty, "0", true); + + configMember.addConfigurationOption("price_per_meter", + ConfigurationOption.ConfigurationTypes.TYPE_UINT32, + String.Empty, "1", true); + + configMember.addConfigurationOption("estate_name", + ConfigurationOption.ConfigurationTypes.TYPE_STRING, + String.Empty, "My Estate", true); + + configMember.addConfigurationOption("estate_manager_0", + ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, + String.Empty, "00000000-0000-0000-0000-000000000000", true); + + configMember.addConfigurationOption("estate_manager_1", + ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, + String.Empty, "00000000-0000-0000-0000-000000000000", true); + + configMember.addConfigurationOption("estate_manager_2", + ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, + String.Empty, "00000000-0000-0000-0000-000000000000", true); + + configMember.addConfigurationOption("estate_manager_3", + ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, + String.Empty, "00000000-0000-0000-0000-000000000000", true); + + configMember.addConfigurationOption("estate_manager_4", + ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, + String.Empty, "00000000-0000-0000-0000-000000000000", true); + + configMember.addConfigurationOption("estate_manager_5", + ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, + String.Empty, "00000000-0000-0000-0000-000000000000", true); + + configMember.addConfigurationOption("estate_manager_6", + ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, + String.Empty, "00000000-0000-0000-0000-000000000000", true); + + configMember.addConfigurationOption("estate_manager_7", + ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, + String.Empty, "00000000-0000-0000-0000-000000000000", true); + + configMember.addConfigurationOption("estate_manager_8", + ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, + String.Empty, "00000000-0000-0000-0000-000000000000", true); + + configMember.addConfigurationOption("estate_manager_9", + ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, + String.Empty, "00000000-0000-0000-0000-000000000000", true); + + configMember.addConfigurationOption("region_flags", + ConfigurationOption.ConfigurationTypes.TYPE_UINT32, + String.Empty, "336723974", true); } public bool handleIncomingConfiguration(string configuration_key, object configuration_result) { switch (configuration_key) { - case "billable_factor": - m_billableFactor = (float) configuration_result; + case "region_flags": + Simulator.RegionFlags flags = (Simulator.RegionFlags)(uint)configuration_result; + if((flags & (Simulator.RegionFlags)(1<<29)) != 0) + m_AllowVoice = true; + if((flags & Simulator.RegionFlags.AllowDirectTeleport) != 0) + m_AllowDirectTeleport = true; + if((flags & Simulator.RegionFlags.DenyAnonymous) != 0) + m_DenyAnonymous = true; + if((flags & Simulator.RegionFlags.DenyIdentified) != 0) + m_DenyIdentified = true; + if((flags & Simulator.RegionFlags.DenyTransacted) != 0) + m_DenyTransacted = true; + if((flags & Simulator.RegionFlags.AbuseEmailToEstateOwner) != 0) + m_AbuseEmailToEstateOwner = true; + if((flags & Simulator.RegionFlags.BlockDwell) != 0) + m_BlockDwell = true; + if((flags & Simulator.RegionFlags.EstateSkipScripts) != 0) + m_EstateSkipScripts = true; + if((flags & Simulator.RegionFlags.ResetHomeOnTeleport) != 0) + m_ResetHomeOnTeleport = true; + if((flags & Simulator.RegionFlags.TaxFree) != 0) + m_TaxFree = true; + if((flags & Simulator.RegionFlags.PublicAllowed) != 0) + m_PublicAccess = true; break; - case "estate_id": - m_estateID = (uint) configuration_result; - break; - case "parent_estate_id": - m_parentEstateID = (uint) configuration_result; + case "billable_factor": + m_BillableFactor = (float) configuration_result; break; +// case "estate_id": +// m_EstateID = (uint) configuration_result; +// break; +// case "parent_estate_id": +// m_ParentEstateID = (uint) configuration_result; +// break; case "redirect_grid_x": - m_redirectGridX = (int) configuration_result; + m_RedirectGridX = (int) configuration_result; break; case "redirect_grid_y": - m_redirectGridY = (int) configuration_result; + m_RedirectGridY = (int) configuration_result; break; case "price_per_meter": - m_pricePerMeter = Convert.ToInt32(configuration_result); + m_PricePerMeter = Convert.ToInt32(configuration_result); break; - case "estate_name": - m_estateName = (string) configuration_result; + m_EstateName = (string) configuration_result; break; case "estate_manager_0": - m_estateManager0 = (LLUUID) configuration_result; + AddEstateManager((LLUUID)configuration_result); break; case "estate_manager_1": - m_estateManager1 = (LLUUID) configuration_result; + AddEstateManager((LLUUID)configuration_result); break; case "estate_manager_2": - m_estateManager2 = (LLUUID) configuration_result; + AddEstateManager((LLUUID)configuration_result); break; case "estate_manager_3": - m_estateManager3 = (LLUUID) configuration_result; + AddEstateManager((LLUUID)configuration_result); break; case "estate_manager_4": - m_estateManager4 = (LLUUID) configuration_result; + AddEstateManager((LLUUID)configuration_result); break; case "estate_manager_5": - m_estateManager5 = (LLUUID) configuration_result; + AddEstateManager((LLUUID)configuration_result); break; case "estate_manager_6": - m_estateManager6 = (LLUUID) configuration_result; + AddEstateManager((LLUUID)configuration_result); break; case "estate_manager_7": - m_estateManager7 = (LLUUID) configuration_result; + AddEstateManager((LLUUID)configuration_result); break; case "estate_manager_8": - m_estateManager8 = (LLUUID) configuration_result; + AddEstateManager((LLUUID)configuration_result); break; case "estate_manager_9": - m_estateManager9 = (LLUUID) configuration_result; + AddEstateManager((LLUUID)configuration_result); break; } -- cgit v1.1