common/fdb_flush.lua (24 lines of code) (raw):
local keys = redis.call('KEYS', KEYS[1])
local n = table.getn(keys)
for i = 1, n do
if KEYS[2] == "" and KEYS[3] == "1" then
redis.call('DEL', keys[i])
elseif KEYS[2] == "" and KEYS[3] == "0" then
local type = redis.call('HGET', keys[i], "SAI_FDB_ENTRY_ATTR_TYPE");
if type == "SAI_FDB_ENTRY_TYPE_DYNAMIC" then
redis.call('DEL', keys[i])
end
elseif KEYS[2] ~= "" then
local bridge_port = redis.call('HGET', keys[i], "SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID");
if bridge_port == KEYS[2] then
if KEYS[3] == "1" then
redis.call('DEL', keys[i])
else
local type = redis.call('HGET', keys[i], "SAI_FDB_ENTRY_ATTR_TYPE");
if type == "SAI_FDB_ENTRY_TYPE_DYNAMIC" then
redis.call('DEL', keys[i])
end
end
end
end
end