diff --git a/httpdocs/templates/pages/components/pool-select.template b/httpdocs/templates/pages/components/pool-select.template
new file mode 100644
index 0000000000..0a41e755af
--- /dev/null
+++ b/httpdocs/templates/pages/components/pool-select.template
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/scripts/lua/if_stats.lua b/scripts/lua/if_stats.lua
index c6a098988b..f2e95eaca8 100644
--- a/scripts/lua/if_stats.lua
+++ b/scripts/lua/if_stats.lua
@@ -20,6 +20,9 @@ local format_utils = require "format_utils"
local top_talkers_utils = require "top_talkers_utils"
local internals_utils = require "internals_utils"
local page_utils = require("page_utils")
+local ui_utils = require("ui_utils")
+local interface_pools = require ("interface_pools")
+
require "lua_utils"
require "prefs_utils"
@@ -31,6 +34,7 @@ local recording_utils = require "recording_utils"
local companion_interface_utils = require "companion_interface_utils"
local storage_utils = require "storage_utils"
+
local have_nedge = ntop.isnEdge()
if ntop.isPro() then
@@ -1411,6 +1415,7 @@ elseif(page == "config") then
return
end
+ local interface_pools_instance = interface_pools:create()
local messages = {}
-- Flow dump check
@@ -1434,6 +1439,13 @@ elseif(page == "config") then
end
end
+ if _SERVER["REQUEST_METHOD"] == "POST" then
+ -- bind interface to pool
+ if (_POST["pool"]) then
+ interface_pools_instance:bind_member(ifid, tonumber(_POST["pool"]))
+ end
+ end
+
if not table.empty(messages) then
printMessageBanners(messages)
print(" ")
@@ -1460,6 +1472,16 @@ elseif(page == "config") then
]]
+ -- Interface Pool
+ print([[
+
+ ]])
+
-- Interface speed
if not have_nedge then
print[[
diff --git a/scripts/lua/modules/ui_utils.lua b/scripts/lua/modules/ui_utils.lua
index aad0ecfcea..8e6d9c78a8 100644
--- a/scripts/lua/modules/ui_utils.lua
+++ b/scripts/lua/modules/ui_utils.lua
@@ -17,7 +17,7 @@ end
function ui_utils.render_notes(notes_items)
if notes_items == nil then
- traceError(TRACE_ERROR, TRACE_DEBUG, "The notes table is nil!")
+ traceError(TRACE_DEBUG, TRACE_CONSOLE, "The notes table is nil!")
return ""
end
@@ -26,6 +26,30 @@ function ui_utils.render_notes(notes_items)
})
end
+function ui_utils.render_pools_dropdown(pools_instance, member, key)
+
+ if (pools_instance == nil) then
+ traceError(TRACE_DEBUG, TRACE_CONSOLE, "The pools instance is nil!")
+ return ""
+ end
+
+ if (member == nil) then
+ traceError(TRACE_DEBUG, TRACE_CONSOLE, "The member is nil!")
+ return ""
+ end
+
+ local selected_pool = pools_instance:get_pool_by_member(member)
+ local selected_pool_id = selected_pool and selected_pool.pool_id or pools_instance.DEFAULT_POOL_ID
+
+ local all_pools = pools_instance:get_all_pools()
+
+ return template_utils.gen("pages/components/pool-select.template", {
+ pools = all_pools,
+ selected_pool_id = selected_pool_id,
+ key = key,
+ })
+end
+
function ui_utils.create_navbar_title(title, subpage, title_link)
if isEmptyString(subpage) then return title end
diff --git a/scripts/lua/network_details.lua b/scripts/lua/network_details.lua
index 50d908a9ab..6be0f7aceb 100644
--- a/scripts/lua/network_details.lua
+++ b/scripts/lua/network_details.lua
@@ -15,6 +15,8 @@ local graph_utils = require "graph_utils"
local alert_utils = require "alert_utils"
local page_utils = require("page_utils")
local ts_utils = require("ts_utils")
+local ui_utils = require("ui_utils")
+local local_network_pools = require ("local_network_pools")
local network = _GET["network"]
local network_name = _GET["network_cidr"]
@@ -110,6 +112,8 @@ elseif (page == "config") then
return
end
+ local local_network_pools_instance = local_network_pools:create()
+
print[[