there is an issue with a cornercase of resolving
domain preferences allowed_ips overloads. the cursor
loop of the proc therefor now gets proper statemachine
logic.
Change-Id: Ieeacc4d7c8a931c6e9f0f8087b2a05112f78c675
(cherry picked from commit 73a55b33ae)
(cherry picked from commit 2acc2fb3b0)
(cherry picked from commit f423dc3d3c)
rationale:
-ipv6 allowed_ip adresses were not yet supported in kamailio
-the current ipv4 allowed_ip check has bad performance
this change introduces a new UDF to check the UA ip against
allowed_ip and man_allowed_ip preferences in a fast and
convenient way, ie.:
SELECT provisioning.ip_is_allowed(
<subscriber_uuid>,
<ipv4_or_ipv6_address>
);
the check is based on range queries supported by indexes,
following the proven approach we already use for roaming/
billing_networks.
it requires to transfrom IPnet values of existing data into
numerical representation of the network start (network) and
end (broadcast) addresses.
mariadb does not support arithmetic or bitwise operation
for varbinary or numerical values larger than bigint, which
is required to calculate network and broadcast adresses.
the change therefore provides an own implementation for
large integer operations. it works with hex string
representations, which fits the existing mariadb "hex()",
"unhex()" and "inet6_aton/ntoa()" functions.
Change-Id: I9dbaa769252babf168243167c061f035f0f43242
(cherry picked from commit 7c1453e460)
(cherry picked from commit 796fa0e5e6)
(cherry picked from commit e8837f2c55)
The format of Android push tokens is a free-form binary string of up to
4096 bytes. Currently the tokens are under 256 bytes long, but we expand
the DB field anyway to be future-proof. Unfortunately MySQL doesn't
allow keys that long, so we have to restrict the field to 3072 bytes.
Further add an auto-increment integer primary key to make InnoDB happy.
Change-Id: Ic664d47b80f751397ec51688d8f399da06eac176
(cherry picked from commit 31527c2281)
* determine the master db node name to use
for ngcp-sync-db master-slave replication restoration
if the CENTRAL_DBHOST is set by default to db01 only.
if the current nodename ends with "a" then db01a is used,
otehrwise db01b is used as the master host. that is
to make sure that during the upgrade the correct "side"
is used to replicate the data from and avoid lossy
statements that break replication.
Change-Id: I1a51bd0d975390d9269ef5208ce8275f9e055a1f
(cherry picked from commit 1cfafba736)
In mr7.5 block_on_clir and adm_block_on_clir are not dependent
anymore on the configurations of block_in_mode and adm_block_in_mode.
Thus the value has to be updated in order to preserve the system
functionality.
Change-Id: I045bbf216f8648fb53e02339a979ff9656406035
Change kamailio.location expires and last_modified columns
from datetime to bigint
Change-Id: I2baa7134fe84960f07efda1e621cf0508345e1b1
(cherry picked from commit 6618e9be0c)
* allowed_ips_header preference provides with a SIP
header name to take the IP address from for
"allowed_clis" ipauth check
Change-Id: I23790881c35534a82993e9afd645a754fb5723c0
* provisioning.voip_peer_rules triggers use internally
a join by IP address to insert/update entries in
kamailio.lcr_rule_target. in cases where there are 2 hosts
per peering group with the same IP address, the triggers
fail because they select duplicate peer hosts. to address
that the "lcr_rule_target join" in the relevant triggers
is adjusted to join the hosts tables by gw_name isntead,
since gw_name is guaranteed unique per peer group
(controlled by a unique key)
Change-Id: I36669efc22bb62ad34c57aac4d978435dbb26f0c