Hello Team,

I hope you're all doing well. I'm reaching out to request your insights on the following scenario.

Overview:
I have successfully configured Kamailio to authenticate IP addresses, primarily for PBXs and customers unable to register. With this setup, I can flawlessly receive incoming traffic and forward it to our internal FreeSwitch servers.

Current issue:
Now, I'm focusing on managing traffic in the opposite direction—specifically for DIDs. I have a DID table set up in Kamailio that associates DID numbers with their respective IP peers. Upon receiving a call, a database lookup is performed to find the destination number, after which the call is terminated at the customer's IP.

I'm facing difficulty in handling situations where a customer has multiple IP peers (for redundancy). My aim is to try each of these IPs sequentially when terminating a specific DID call towards them. The current logic I'm employing for the INVITE lookup looks like this:

# Database lookup for INVITEs

if (is_method("INVITE")) {
  sql_query("didrouting_db", "SELECT route_to FROM did_routing WHERE did_number='$rU'", "result");
  if ($dbr(result=>rows) > 0) {
     $var(route_to) = $dbr(result=>[0,0]);
     xlog("L_INFO", "Routing DID $rU to $var(route_to)\n");
     $du = "sip:" + $var(route_to) + ":5060";
  } else {
     $du = "sip:" + FS_IP + ":5060";
  }
}

The above logic works fine for a single IP. 

I intend to use a comma-separated list of IPs in my route_to column (for example 192.168.1.2,192.168.1.3, ...) and then iterate through these IPs one by one. I'm having trouble coming up with a workable logic or loop to achieve this. Would you be able to offer any guidance or suggestions? 

Please also recommend if there is a better approach available to handle this scenario. 

Thank you in advance for your valuable input.


Regards, 
Shah Hussain