I'm testing the p_usrloc module (Kamailio version 3.3.2, installed via ubuntu package) and it looks like it's working but for some reason a re-registration is causing a new entry being added to the distributed location table instead of updating the existing one.
The kamailio configuration looks like this:
#!define DBURL "mysql://openser:openserrw@localhost/openser"
loadmodule "p_usrloc.so"
modparam("p_usrloc", "db_mode", 3)
modparam("p_usrloc", "write_db_url", DBURL)
modparam("p_usrloc", "read_db_url", DBURL)
modparam("p_usrloc", "write_on_db", 1)
modparam("p_usrloc", "alg_location", 1)
modparam("p_usrloc", "reg_db_table", "locdb")
mysql> select * from locdb;
+----+----+-------------------------------------------+--------+--------+---------------------+-------+----+
| id | no | url | status | errors | failover | spare | rg |
+----+----+-------------------------------------------+--------+--------+---------------------+-------+----+
| 1 | 1 | mysql://root:secret@172.16.10.131/openser | 1 | 0 | 1900-01-01 00:00:01 | 0 | 0 |
| 1 | 2 | mysql://root:secret@172.16.10.132/openser | 1 | 0 | 1900-01-01 00:00:01 | 0 | 0 |
+----+----+-------------------------------------------+--------+--------+---------------------+-------+----+
When using the default usrloc functionality everything is working fine. The only difference I noticed is that the default usrloc is using MYSQL UPDATE to update the location entry and that p_usrloc is using MYSQL REPLACE.
Regards
Hans