From c991cdd635fc958e0a43ab5d657ef117a848f034 Mon Sep 17 00:00:00 2001 From: Kirill Solomko Date: Tue, 29 Mar 2016 15:57:08 +0200 Subject: [PATCH] MT#18499 contract location select non 0.0.0.0/0 blocks first Change-Id: I876fd3a1f9b32b74c3d6f553e76d4fae7748f9ed --- ngcp/cp.lua | 4 ++-- tests/ngcp_cp.lua | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ngcp/cp.lua b/ngcp/cp.lua index df04c9a..7eabc20 100644 --- a/ngcp/cp.lua +++ b/ngcp/cp.lua @@ -79,9 +79,9 @@ NGCPContractPrefs_MT.__tostring = function () end local con = self.config:getDBConnection() - local query = string.format("SELECT location_id FROM provisioning.voip_contract_locations cl JOIN provisioning.voip_contract_location_blocks cb ON cb.location_id = cl.id WHERE cl.contract_id = %s AND _ipv4_net_from <= UNHEX(HEX(INET_ATON('%s'))) AND _ipv4_net_to >= UNHEX(HEX(INET_ATON('%s'))) LIMIT 1", contract, ip, ip) + local query = string.format("SELECT location_id FROM provisioning.voip_contract_locations cl JOIN provisioning.voip_contract_location_blocks cb ON cb.location_id = cl.id WHERE cl.contract_id = %s AND _ipv4_net_from <= UNHEX(HEX(INET_ATON('%s'))) AND _ipv4_net_to >= UNHEX(HEX(INET_ATON('%s'))) ORDER BY cb.ip DESC, cb.mask DESC LIMIT 1", contract, ip, ip) if string.find(ip, ':') ~= nil then - query = string.format("SELECT location_id FROM provisioning.voip_contract_locations cl JOIN provisioning.voip_contract_location_blocks cb ON cb.location_id = cl.id WHERE cl.contract_id = %s AND _ipv6_net_from <= UNHEX(HEX(INET_ATON('%s'))) AND _ipv6_net_to >= UNHEX(HEX(INET_ATON('%s'))) LIMIT 1", contract, ip, ip) + query = string.format("SELECT location_id FROM provisioning.voip_contract_locations cl JOIN provisioning.voip_contract_location_blocks cb ON cb.location_id = cl.id WHERE cl.contract_id = %s AND _ipv6_net_from <= UNHEX(HEX(INET_ATON('%s'))) AND _ipv6_net_to >= UNHEX(HEX(INET_ATON('%s'))) ORDER BY cb.ip DESC, cb.mask DESC LIMIT 1", contract, ip, ip) end local cur,err = con:execute(query) diff --git a/tests/ngcp_cp.lua b/tests/ngcp_cp.lua index 0813ea7..a9049ac 100644 --- a/tests/ngcp_cp.lua +++ b/tests/ngcp_cp.lua @@ -112,7 +112,7 @@ TestNGCPContractPrefs = {} --class function TestNGCPContractPrefs:test_callee_load() assertTrue(self.d.config) - con:execute("SELECT location_id FROM provisioning.voip_contract_locations cl JOIN provisioning.voip_contract_location_blocks cb ON cb.location_id = cl.id WHERE cl.contract_id = 2 AND _ipv4_net_from <= UNHEX(HEX(INET_ATON('172.16.15.1'))) AND _ipv4_net_to >= UNHEX(HEX(INET_ATON('172.16.15.1'))) LIMIT 1") ;mc :returns(self.cur) + con:execute("SELECT location_id FROM provisioning.voip_contract_locations cl JOIN provisioning.voip_contract_location_blocks cb ON cb.location_id = cl.id WHERE cl.contract_id = 2 AND _ipv4_net_from <= UNHEX(HEX(INET_ATON('172.16.15.1'))) AND _ipv4_net_to >= UNHEX(HEX(INET_ATON('172.16.15.1'))) ORDER BY cb.ip DESC, cb.mask DESC LIMIT 1") ;mc :returns(self.cur) self.cur:fetch(mc.ANYARGS) ;mc :returns({location_id = 1 }) self.cur:close() con:execute("SELECT * FROM contract_preferences WHERE uuid ='2' AND location_id = 1") ;mc :returns(self.cur)