Hello All,
i would to iterate through all ips in Record-Route through @hf_value.Record_Route.
if i put static index like @hf_value.Record_Route[0] it works.
but $var(i) = 0; @hf_value.Record_Route[$var(i)] does not work.
is there a way to get the count of all headers values through @hf_value.Record_Route
For example i would like to iterate through all Record-Route Values if i receive it like this
Record-Route: <sip:1.1.1.1;lr=on;nat=yes>
Record-Route: <sip:2.2.2.2:5060;lr>,<sip:3.3.3.3:22506;lr>
hello,
My name is Fernando Piana from Colombia.
I am writing to you because I am testing Kamailio together with the Siremis
graphical environment.
I was visiting the siremis.org website and also the siremis wiki, but I
couldn't find the administration manual.
>From this medium I want to ask you if you can send me a copy of the Siremis
administration manual.
I await a response.
Thank you very much.
--
Fernando Piana
Ing. Comunicaciones y Bases de Datos
Cel: +57 311 641 7558
Hi,
I was wondering if it is safe from a cache consistency pow to enable usrloc
db_insert_update in a dmq replicated environment, where all registrars
share the same db.
I'm already using the filter option to avoid loading/deletion by server id,
but there's no similar option for writing.
I know that it is possible to use db mode 4 on all registrars (which get
synced by dmq) except one, which will be responsible for writing, but this
creates a little unbalanced setup in addition to performing writes only
from one proxy.
Any hint? Maybe is time to check how to filter writes, too :) ?
Thanks,
Matteo
Hi List
We cache stuff like call forwarding information in a htable cache to
minimizie SQL lookups and have it available via DMQ on all instances.
But of course, if the call forwarding information for a destination
changes in the database, we would like to flush either the whole cache,
or even better, that single entry.
What is the best way to do this?
Mit freundlichen Grüssen
-Benoît Panizzon-
--
I m p r o W a r e A G - Leiter Commerce Kunden
______________________________________________________
Zurlindenstrasse 29 Tel +41 61 826 93 00
CH-4133 Pratteln Fax +41 61 826 93 01
Schweiz Web http://www.imp.ch
______________________________________________________
Hi,
I discovered recently that, on Kamailio 5.5.4 at least, the dialog ’timeout_avp’ no longer appears to have effect.
Here are my (seemingly relevant) dialog parameters:
modparam("dialog", "enable_stats", 0)
modparam("dialog", "hash_size", 4096)
modparam("dialog", "rr_param", "dlgcor") # DLG "correlator"
modparam("dialog", "dlg_flag", 2)
modparam("dialog", "default_timeout", 28800) # 8 hours
modparam("dialog", "dlg_match_mode", 1)
modparam("dialog", "table_name", "dialog")
modparam("dialog", "send_bye", 1)
modparam("dialog", "wait_ack", 0)
modparam(“dialog”, “timeout_avp”, “$avp(dlg_timeout)”)
The flow is roughly like this:
request_route {
...
t_check_trans();
if(is_method(“INVITE”)) {
...
dlg_manage();
$avp(dlg_timeout) = 10;
...
if(!t_relay())
sl_reply_error();
return;
}
I was able to resolve the problem by switching to dlg_set_timeout() instead, but I wonder if there has been a regression. Last version I have on which this positively works is 4.4.7, though, so not sure when it might have broken.
One nuance: $avp(dlg_timeout) is not initialised prior to calling dlg_manage(), and the value is only set if certain conditions are true. Not sure if some stricter check appeared in later releases which could cause this to be a problem.
Thank you!
— Alex
--
Alex Balashov | Principal | Evariste Systems LLC
Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free)
Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
Hello,
I'm trying to setup the following scenario with sip ping:
UAC -> Kamailio Edge -> Kamailio Registrar
Edge proxy is a multihomed proxy with public/private ips and the registrar
is a kamailio on a private network. The edge acts as a nat proxy and
loadbalancer.
Edge proxy inserts a Path header (and contact alias) which get correctly
saved on registrar usrloc. Registration works as expected.
Now, since I need to keep nat open towards the uacs and expire them when
they're not reachable anymore, I'm trying to send sip pings from the
registrar via the edge proxy. I'm using nathelper sipping in the registrar.
What I see is that the registrar sends out a sip options putting in the
Route header the Path as expected, but the sip packet gets sent directly to
the UAC contact and not via the edge, as the Route header specifies.
After looking into the nathelper code, it seems that the sip packet is sent
via udp directly without any specific routing. So the question: it should
work what I'm trying to achieve? Maybe not?
Probably I can work around it setting the ;received in the contact on
registrar (it will set to the edge proxy) and since the contact is aliased
on the edge when the edge receives an option from the registrar it can
process the alias and send it to the correct endpoint, but seems a
workaround?
Or using the keepalive module maybe, even if that means setting specific
timers and manually do what the nathelper module already does?
Any hint?
Thanks,
Matteo
Hi sr-users,
Does pure RFC5626 outbound work without an edge proxy->internal proxy
design? By "pure" I mean no nathelper to rewrite addresses.
I tried setting up the following:
Configuration: use standard kamailio configuration without WITH_NAT
(Ignore RTP-rtpengine/rtpproxy for the moment as I am just testing the
control plane)
1. UA1 UA2 each behind NAT, with bogus Contact: headers
2. kamailio loaded with rr/tm (no outbound/path because I am using single
proxy/registrar — without edge proxies)
3. no nathelper: no Contact rewriting, set_contact_alias etc
4. Both UA1 and UA2 establish persistent TLS to kamailio
5. INVITE/200 OK/ACK does work.
6. Contact headers show the NAT bogus addresses (as expected). UA1/UA2 are
configured to be "dumb"(i.e. don't self-rewrite Contact:/SDP based on
rport/received).
Problem:
7. In-dialog requests don't work as kamailio tries to route to the bogus
addresses per the Contact header. I.e. kamailio doesn't seem to resolve the
UAs(bogus Contact addresses) to the persistent TLS connections.
Now in the Route header I don't see any flow-token so probably kamailio is
doing "normal" routing instead of RFC5626 routing (i.e. because it has no
flow-token to match with an existing flow).
This leads me to ask: for pure RFC5626 to work (no nathelper stuff at all)
is it a must that there is a "edge-proxy--[1]-->internal-proxy" layout?
...and...the flow-tokens in [1] are what make it possible to skip bogus
Contact: header and route to an existing flow?
Regards
Shih-Ping Chan
```
def ksr_route_relay(self, msg):
if KSR.is_method_in("IBSU"):
if KSR.tm.t_is_set("branch_route") < 0:
KSR.tm.t_on_branch("ksr_branch_manage")
if KSR.is_method_in("ISU"):
if KSR.tm.t_is_set("onreply_route") < 0:
KSR.tm.t_on_reply("ksr_onreply_manage")
if KSR.is_INVITE():
KSR.info("try and relay the traffic\n")
if KSR.tm.t_is_set("ksr_failure_route") < 0:
KSR.tm.t_on_failure("ksr_failure_manage")
t_relay_result = KSR.tm.t_relay(["10.0.0.6", "5060"])
KSR.info(f't_relay: {t_relay_result}\n')
KSR.info(f'MSG: {msg}')
if KSR.tm.t_is_set("ksr_failure_route_one"):
KSR.tm.t_on_reply("ksr_on_reply_route_one")
```
ERROR: app_python3 [python_exec.c:91]: apy_exec(): ksr_request_route not
found or is not callable
Again this only happens after t_replay is called. Any help understanding
why this happens would be appreciated.
--
- Nigel
Hi List
Service Numbers, like to activate CFW probably often start with * and
end with a #
# is a special character that needs to be urlencoded in an SIP URI. So
best would be to use a generic kamailio urldecode transormation. I guess
{s.urldecode.param} is what I was looking for.
So when I get a call to the 'enable CFW' service I get
$rU => "*21+419999999%23"
So I want to extract the destination number and remove the urlencoded # sign.
So I do $var(cfw-dest) =
$var(cfw-dest) = $rU;
$var(cfw-dest) = $(var(cfw-dest){s.substr,3,0}); # "+419999999%23"
$var(cfw-dest) = $(var(cfw-dest){s.urldecode.param});
But now I end up with 419999999# the + sigh disappeared.
Is this expected behavior? How would this be done the correct way?
Mit freundlichen Grüssen
-Benoît Panizzon-
--
I m p r o W a r e A G - Leiter Commerce Kunden
______________________________________________________
Zurlindenstrasse 29 Tel +41 61 826 93 00
CH-4133 Pratteln Fax +41 61 826 93 01
Schweiz Web http://www.imp.ch
______________________________________________________
Please Read the Scenario in full and then guide me.
In my scenario, I have three Kamailio (KamA, KamB, KamC) running in
production. They do load balancing for the asterisks which are about 9.
Kamailios randomly receive calls from the SIP trunk. I have set the limit
of 750 calls on each kamailios. I want to provide only 1000 Calls to my
client but they are enjoying calls more than this since each kamailio can
receive 750 calls (I have set this limit for redundancy purpose). And I
cannot set the limit like 750 on KamA and the rest on KamB and KamC for
redundancy purposes. If one kamailio goes down then they send calls on the
other kamailios so that no call drops. So, I want to know if there is a
module or a way that my redundancy is not affected and I limit total calls
on the three kamailios to not exceed 1000. Waiting for a prompt response.
Let me know if you need any further information.
Regards,
Vicky
(Off-topic)
Hello,
In about two weeks I will be a few days in Vienna (12h - 14th July).
If you want to meet for a drink to chat about Kamailio and other topics, just contact me off-list.
Thanks, and regards,
Henning
Hello,
I hope somebody could help me.
This is my scheme.
User-agent is behind NAT1. Kamailio and pbx are behind NAT2
[Client ip-phone 192.168.89.213 without stun] - LAN1 - NAT1(46.0.0.30) -
(internet) - (51.0.0.60)NAT2 - Local2 - (10.130.0.23:5060)kamailio(
10.130.0.23:5070) - pbx
*Questions*:
*1*. The VIA header (with 10.130.0.23 and 51.0.0.60) wasn't included in SIP
packets. Why? For example 200OK reply. It came from pbx through kamailio.
Which setting could break it?
Session Initiation Protocol (200)
Status-Line: SIP/2.0 200 OK
Message Header
Via: SIP/2.0/UDP 192.168.89.213:5060
;rport=9570;received=46.0.0.30;branch=z9hG4bK2480172053
Record-Route: <sip:c172.19.19.111.8348.call.cgatepro;lr>
Record-Route: <sip:172.19.19.111:5060;lr>
Record-Route: <sip:10.130.0.23:5070
;r2=on;lr;ftag=4268683942;nat=yes>,<sip:51.0.0.60;r2=on;lr;ftag=4268683942;nat=yes>
From: "Aleksey" <sip:a.yakimkin@mail.domain.ru:5060>;tag=4268683942
To: <sip:2961@mail.domain.ru:5060
>;tag=A03E2397-404246-FA7543E4_jizmelr-582D
Call-ID: 6_1903330087(a)192.168.89.213
[Generated Call-ID: 6_1903330087(a)192.168.89.213]
CSeq: 2 INVITE
Contact: <sip:signode-404246-FA7543E4_jizmelr-582D@172.19.19.111
;alias=51.0.0.60~5060~1>
Supported: 100rel,timer,replaces,histinfo,precondition
Allow: INVITE,BYE,CANCEL,ACK,OPTIONS,INFO,MESSAGE,PRACK,UPDATE,REFER
Session-Expires: 1800;refresher=uas
Content-Type: application/sdp
Content-Length: 1170
Message Body
*2*. About Registrar, Path and $du.
Phone set Register with headers:
Via: SIP/2.0/UDP 192.168.89.213:5060;branch=z9hG4bK2691182696
From: "Aleksey" <sip:a.yakimkin@mail.domain.ru:5060>;tag=3926879477
To: "Aleksey" <sip:a.yakimkin@mail.domain.ru:5060>
Contact: <sip:a.yakimkin@192.168.89.213:5060>
Kamailio respond
Via: SIP/2.0/UDP 192.168.89.213:5060
;rport=9570;received=46.0.0.30;branch=z9hG4bK617463686
Path: <sip:10.130.0.23:5070
;lr;received=46.0.0.30~9570~1;r2=on>,<sip:51.0.0.60;lr;received=46.0.0.30~9570~1;r2=on>
From: "Aleksey" <sip:a.yakimkin@mail.domain.ru:5060>;tag=3926879477
To: "Aleksey" <sip:a.yakimkin@mail.domain.ru:5060>;tag=194ED16D
Contact: <sip:a.yakimkin@192.168.89.213:5060>;expires=360
Contact: <sip:2447@192.168.89.221:5060>;expires=247
Contact: <sip:2447@192.168.9.16:5060>;expires=2116
I try to make a call from pbx to ip phone.
pbx inserts in Invite header Route: <sip:10.130.0.23:5070
;lr;received=46.0.0.30~9570~1;r2=on>
But kamailio relayed Invite direct to 192.168.89.213. (There is network
connectivity between ip-phone and kamailio through vpn). The code below
helps me to solve my issue. I saw mail-list with similar trouble. But no
setting could get kamailio to relay Invite to "Route-received" ip.
$var(the_route) = $hdr(Route);
$var(route0) = $(var(the_route){s.select,0,,});
$var(new_host) = $(var(route0){param.value,received}{s.select,0,~});
$var(new_port) = $(var(route0){param.value,received}{s.select,1,~});
if (!strempty($var(new_host)) && !strempty($var(new_port)) ) {
$du = "sip:" + $var(new_host) + ":" + $var(new_port);
}
*Kamailio settings:*
I have such listeners
listen=udp:10.130.0.23:5070 # to local network
listen=udp:10.130.0.23:5060 advertise 51.0.0.60:5060 # to internet
#MODULE SETTING
#---
# ----- jsonrpcs params -----
modparam("jsonrpcs", "pretty_format", 1)
/* set the path to RPC fifo control file */
# modparam("jsonrpcs", "fifo_name", "/var/run/kamailio/kamailio_rpc.fifo")
/* set the path to RPC unix socket control file */
# modparam("jsonrpcs", "dgram_socket",
"/var/run/kamailio/kamailio_rpc.sock")
modparam("path", "use_received", 1)
modparam("path", "enable_r2", 1)
modparam("path", "received_format", 1)
# ----- ctl params -----
/* set the path to RPC unix socket control file */
# modparam("ctl", "binrpc", "unix:/var/run/kamailio/kamailio_ctl")
# ----- tm params -----
# auto-discard branches from previous serial forking leg
modparam("tm", "failure_reply_mode", 3)
# default retransmission timeout: 30sec
modparam("tm", "fr_timer", 30000)
# default invite retransmission timeout after 1xx: 120sec
modparam("tm", "fr_inv_timer", 120000)
modparam("tm", "auto_inv_100_reason", "Trying")
# ----- rr params -----
# set next param to 1 to add value to ;lr param (helps with some UAs)
modparam("rr", "enable_full_lr", 0)
# do not append from tag to the RR (no need for this script)
modparam("rr", "append_fromtag", 1)
modparam("rr", "enable_double_rr", 2)
modparam("rr", "force_send_socket", 1)
# ----- registrar params -----
modparam("registrar", "method_filtering", 1)
/* uncomment the next line to disable parallel forking via location */
# modparam("registrar", "append_branches", 0)
/* uncomment the next line not to allow more than 10 contacts per AOR */
# modparam("registrar", "max_contacts", 10)
/* max value for expires of registrations */
modparam("registrar", "max_expires", 3600)
/* set it to 1 to enable GRUU */
modparam("registrar", "gruu_enabled", 0)
modparam("registrar", "use_path", 1)
modparam("registrar", "path_use_received", 1)
modparam("registrar", "path_mode", 0)
#---
For register I use this code
route[REGISTRAR] {
...
add_path_received();
set_send_socket("udp:10.130.0.23:5070");
route(DISPATCH);
...
}
route[RELAY] {
...
if ($Ru eq "sip:10.130.0.23:5070") {
$fs = "udp:10.130.0.23:5060";
} else {
$fs = "udp:10.130.0.23:5070";
}
...
}
route[NATMANAGE] {
#!ifdef WITH_NAT
if (is_request()) {
if(has_totag()) {
if(check_route_param("nat=yes")) {
setbflag(FLB_NATB);
}
}
}
if (!(isflagset(FLT_NATS) || isbflagset(FLB_NATB))) return;
#send INVITE to IP:PROT from Route:...;received=
$var(the_route) = $hdr(Route);
$var(route0) = $(var(the_route){s.select,0,,});
$var(new_host) = $(var(route0){param.value,received}{s.select,0,~});
$var(new_port) = $(var(route0){param.value,received}{s.select,1,~});
if (!strempty($var(new_host)) && !strempty($var(new_port)) ) {
$du = "sip:" + $var(new_host) + ":" + $var(new_port);
}
if (client_nat_test("3")) {
if(nat_uac_test("18")) {
if ($Ru == "sip:10.130.0.23:5070") {
rtpproxy_manage("co", "51.0.0.60"); #
fix_nated_sdp
} else {
rtpproxy_manage("co");
}
if (is_method("REGISTER")) {
#if ($Ru == "sip:10.130.0.23:5070") {
# fix_nated_contact();
#} else {
# set_contact_alias();
#}
set_contact_alias();
} else {
if(is_first_hop()) {
set_contact_alias();
} else {
add_contact_alias("51.0.0.60",
"5060", "udp");
#fix_nated_contact();
}
}
} else {
if ($Ru == "sip:10.130.0.23:5070") {
rtpproxy_manage("cor", "51.0.0.60"); #
fix_nated_sdp
} else {
rtpproxy_manage("cor");
}
}
} else {
rtpproxy_manage("co");
}
if (is_request()) {
if (!has_totag()) {
if(t_is_branch_route()) {
add_rr_param(";nat=yes");
#fix_contact();
}
}
}
if (is_reply()) {
if(isbflagset(FLB_NATB)) {
if(is_first_hop())
set_contact_alias();
#} else {
#fix_contact();
#}
}
}
#!endif
return;
}
Thank you.
--
Best regards,
Alex
Hello,
We are looking to implement a system with one Kamailio server and multiple
rtpengine servers. I see that the rtpengine module allows the server
configuration to be stored in a database table with multiple entries, which
is perfect.
My question is - how does Kamailio distribute load between multiple
rtpengine servers in the same set?
If one of the rtpengine servers goes offline then will Kamailio note this
and not send calls to that server until it comes back online? If not then
presumably calls could be delayed by whatever the timeout for accessing a
server is?
Thank you very much,
--
David Cunningham, Voisonics Limited
http://voisonics.com/
USA: +1 213 221 1092
New Zealand: +64 (0)28 2558 3782
Hello,
Kamailio SIP Server v5.6.1 stable release is out.
This is a maintenance release of the latest stable branch, 5.6, that
includes fixes since the release of v5.6.0. There is no change to
database schema or configuration language structure that you have to do
on previous installations of v5.6.x. Deployments running previous v5.6.x
versions are strongly recommended to be upgraded to v5.6.1.
For more details about version 5.6.1 (including links and guidelines to
download the tarball or from GIT repository), visit:
* https://www.kamailio.org/w/2022/07/kamailio-v5-6-1-released/
RPM, Debian/Ubuntu packages will be available soon as well.
Adding a short note that the dates of next Kamailio World Conference -
Online have been set for September 7-8, 2022. Event website and more
details will be published soon!
Many thanks to all contributing and using Kamailio!
Cheers,
Daniel
--
Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda
im using dns failover with tm module.
i set parameter reparse_on_dns_failover to 0 so that branch_route is called .
but when trying next peer of dns failover initial transaction branch_route is not called.
do i missing something ?
for the first peer branch_route is called and the peer timeout
so kamailio tries next peer but branch_route is not called !.
do i need again to set branch_route in failure_route ?
Thanks for help.
Hey All,
I'm just trying to change the From user before I do a 301 Redirect within a
Failure Route. Here's the code snippet:
$fu = "+15555555555";
append_to_reply("Contact: sip:+1$var(redirect_did)@$si:$sp\r\n");
t_reply("302", "Redirect");
The From user is not changed and msg_apply_changes() isn't allowed. What
am I doing wrong?
Thanks
Hi,
I am trying STIR/SHAKEN using libstirshaken in Kamailio 5.5.
I used a self signed certificate as this is just a test in the local docker
environment. However, when I try to add identity with private key
(stirshaken_add_identity_with_key), I get "[error_code: 447] Buffer for key
from file /tmp/cert/private.pem too short (2000 <= 3247)"
I have tried using 2048 and 4096 size
root@5907e44bd056:/tmp/cert# openssl rsa -in private.pem -text -noout |
grep "Private-Key"
RSA Private-Key: (4096 bit, 2 primes)
Could you tell me what is wrong with the certificate?
Kamailio version:
root@5907e44bd056:/usr/local/kamailio/etc/kamailio# kamailio -v
version: kamailio 5.5.4 (x86_64/linux) 469465
Error:
0(404) ERROR: {1 30587 INVITE NzIhM1-2YABveZZ1mPvs3m3tw8K7meSq} stirshaken
[stirshaken_mod.c:761]: ki_stirshaken_add_identity_with_key(): Failed to
load private key
0(404) DEBUG: {1 30587 INVITE NzIhM1-2YABveZZ1mPvs3m3tw8K7meSq} stirshaken
[stirshaken_mod.c:117]: stirshaken_print_error_details(): failure details:
0(404) DEBUG: {1 30587 INVITE NzIhM1-2YABveZZ1mPvs3m3tw8K7meSq} stirshaken
[stirshaken_mod.c:118]: stirshaken_print_error_details(): failure reason
is: src/stir_shaken_ssl.c:2112: [error_code: 447] Buffer for key from file
/tmp/cert/private.pem too short (2000 <= 3247)
0(404) DEBUG: {1 30587 INVITE NzIhM1-2YABveZZ1mPvs3m3tw8K7meSq} stirshaken
[stirshaken_mod.c:119]: stirshaken_print_error_details(): failure error
code is: 447
0(404) ERROR: {1 30587 INVITE NzIhM1-2YABveZZ1mPvs3m3tw8K7meSq} <script>:
Failed
Regards
*Maharaja Azhagiah*
Hi, thank you for your reply, I have tried it at kamailio 5.5 and 5.6
versions, and there are two network interfaces. Actually, I have created a
testing vm for this, with a simple almost default kamailio configuration.
And yes, with forcing socket everything is working fine, but I just want to
know maybe there is a kamailio params that allow "mhomed" params to work
with tcp/tls destinations, or is it impossible by TCP design, or is it a
kamailio bug.
I wonder if anyone uses kamailio with 2+ network interfaces and uses tls
and don't use $fs?
--
Aidar
on 5.5 kamailio wiki for core it is stated that return (0) is the same as exit. but that's not true
request_route {
if (route(POS)){
xlog("POS PASS\r\n");
}
if (!route(NEG)){
xlog("NEG PASS\r\n");
}
if (!route(ZERO)) {
xlog("ZERO PASS\r\n");
}
xlog("AFTER ZERO\r\n");
send_reply("400","Error");
return;
}
route[POS]{
return 1;
}
route[NEG]{
return -1;
}
route[ZERO] {
return 0;
}
for example from the config above not only ZERO PASS will be printed but also all the actions after route(ZERO) are still executed.
instead if i replace return 0 with exit in route[ZERO]. this work as expected.
Hello,
I have faced an issue when mhomed parameter working well only for udp
destinations in systems with multiple network interfaces.
If kamailio forward call to the UDP destination, mhomed option chooses the
correct Via and the correct network interface for sending.
But if the destination is tls, mhomed chooses first described in
configuration file "listen=" interface and use this IP in Via header
Network routes in the system are correct and "ip r get IP" returns the
correct route and interface.
Should mhomed work with tcp/tls or is this impossible with TCP design?
--
Aidar
Hi, everyone!
In one sentence, I want to know how to how to add the shared key (aka. K, Ki) used by AKA algorithm to Kamailio.
I’m using Kamailio as an IMS server to test my own 5G Core. As you know, UE would send its first SIP Registration message to Kamailio with its IMPI and IMPU, then Kamailio should use the shared key to proceed AKA algorithm to generate the authentication vector, then respond UE with 401 unauthorized message to challenge the UE. I’ve done my research and I still can’t figure out how to let Kamailio know this shared key. And when I was doing my test, it seems like Kamailio used some default key to generate the auth vector.
Could anybody help me? I’ve been stuck here for days.
Hello Community,
We are running Kamailio with 3 instances as PCSCF/ICSCF/SCSCF, and we don't want IPsec to be used in between PCSCF and UE and we confirmed the initial Register UE send do not have the Security-Client header. However, seems the IPsec is enabled by default in current PCSCF cfg, we tried to comment WITH_IPSEC as well as couple ipsec_forward function out in the cfg, but when the 401 Challenging message send to PCSCF and PCSCF failed to forward it to UE due to (Create ipsec failed) reason.
So I want to reach out and see if anyone have experience not using IPsec with currently Kamailio PCSCF? Any clue or comment will be appreciated!
BR,
Weiqi
Hello,
Cannot compile tlsa module. I get the following error message:
LD (gcc) [M tlsa.so] tlsa.so
/usr/bin/ld:
/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libssl.a(ssl_lib.o):
relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making
a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libssl.a: error
adding symbols: Bad value
collect2: error: ld returned 1 exit status
../../Makefile.rules:191: recipe for target 'tlsa.so' failed
make[2]: *** [tlsa.so] Error 1
Makefile:511: recipe for target 'modules' failed
make[1]: *** [modules] Error 1
make[1]: Leaving directory '/usr/local/src/kamailio-5.6/kamailio/src'
Makefile:34: recipe for target 'all' failed
make: *** [all] Error 2
Please find below some information about my environment system:
root@sbc:/usr/local/src/kamailio-5.6/kamailio# cat /etc/debian_version
8.6
root@sbc:/usr/local/src/kamailio-5.6/kamailio# openssl version
OpenSSL 3.0.4 21 Jun 2022 (Library: OpenSSL 3.0.4 21 Jun 2022)
Regards
Abdoul
Hello guys,
Ab initio, I'm loving Kamailio and the endless horizons it opens-up.
Is there any document somewhere to get Kamailio installed in a captive
network that runs w/o internet? I know this seems bizarre but in the mining
industry most of the locations do not have internet facilities but they
still want to use VoIP.
I do not have the privilege to pull a blade system and put it on the
internet to install Kamailio, FS etc.
Any suggestions?
--
Warm Regds.
MathuRahul
Hi,
Question:
Is there a way to forward a reply from the reply route and do other stuff
afterward? We are currently doing operations on a 183 reply and it would be
useful if we could forward the reply before continuing to process other
stuff.
High-Level example:
*route { t_on_reply("REPLY"); t_relay();}onreply_route[REPLY] { //
Forward the reply to the Caller t_relay(); // Does not work, as t_relay is
only allowed in request and failure-routes // Do other fancy stuff, e.g.
a DB Update or anything else}*
Any ideas?
Thanks,
Carsten
--
Carsten Bock I CTO & Founder
ng-voice GmbH
Trostbrücke 1 I 20457 Hamburg I Germany
T +49 179 2021244 I www.ng-voice.com
Registry Office at Local Court Hamburg, HRB 120189
Managing Directors: Dr. David Bachmann, Carsten Bock
Hello !
I have this issue with the telco provider they give the sip trunk on a
private connection with private ips, the problem is that i am trying to
relocate the sip trunk in remote server and I've tried though basic
networking/tunnels/vpn and no go; their sbc is dropping requests and
rejects if they are more via headers, they force me to use that connection
and the ip allocated.
The challenge is how to do this in kamailio, basically I just want to
transport the trunk (similar to a reverse proxy for web) to its new
destination and from there handle everything.
Any hints on how to achieve this?
Hi,
I have just installed Goautodial v4.
I have followed all the guide to register a phone but this does not work.
Is kamailio the reason. I am new to linux need help.
[root@vaglxc01 ~]# systemctl status kamailio
● kamailio.service - Kamailio (OpenSER) - the Open Source SIP Server
Loaded: loaded (/usr/lib/systemd/system/kamailio.service; enabled; vendor preset: disabled)
Active: failed (Result: start-limit) since Sun 2022-06-26 16:11:41 +06; 10min ago
Process: 1545 ExecStart=/usr/sbin/kamailio -DD -P /var/run/kamailio/kamailio.pid -f $CFGFILE -m $SHM_MEMORY -M $PKG_MEMORY (code=exited, status=255)
Main PID: 1545 (code=exited, status=255)
Jun 26 16:11:41 vaglxc01.goautodial.com systemd[1]: Unit kamailio.service entered failed state.
Jun 26 16:11:41 vaglxc01.goautodial.com systemd[1]: kamailio.service failed.
Jun 26 16:11:41 vaglxc01.goautodial.com systemd[1]: kamailio.service holdoff time over, scheduling restart.
Jun 26 16:11:41 vaglxc01.goautodial.com systemd[1]: start request repeated too quickly for kamailio.service
Jun 26 16:11:41 vaglxc01.goautodial.com systemd[1]: Failed to start Kamailio (OpenSER) - the Open Source SIP Server.
Jun 26 16:11:41 vaglxc01.goautodial.com systemd[1]: Unit kamailio.service entered failed state.
Jun 26 16:11:41 vaglxc01.goautodial.com systemd[1]: kamailio.service failed.
Jun 26 16:11:47 vaglxc01.goautodial.com systemd[1]: start request repeated too quickly for kamailio.service
Jun 26 16:11:47 vaglxc01.goautodial.com systemd[1]: Failed to start Kamailio (OpenSER) - the Open Source SIP Server.
Jun 26 16:11:47 vaglxc01.goautodial.com systemd[1]: kamailio.service failed.
[root@vaglxc01 ~]# kamailio -version
version: kamailio 5.0.7 (x86_64/linux) 743c2d
flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: 743c2d
compiled on 03:02:32 Aug 26 2018 with gcc 4.8.5
Best regards,
Farhan Sahariar
Assistant Manager
Customer Support Services Division
LEADS Corporation Limited
[Description: Description: Green Living Slogan_Email]
Hi Gang
We want to allow customers to send a 301 to forward calls to mimik ISDN
PARE.
The new destination is in the contact user HF.
So I guess I could handle this on the t_on_failure route to catch that
error, extract the contact user HF, craft an appropriate Diversion
header and send the call on.
But I wonder, is there maybe a module which handles all of this out of
the box?
--
Mit freundlichen Grüssen
-Benoît Panizzon- @ HomeOffice und normal erreichbar
--
I m p r o W a r e A G - Leiter Commerce Kunden
______________________________________________________
Zurlindenstrasse 29 Tel +41 61 826 93 00
CH-4133 Pratteln Fax +41 61 826 93 01
Schweiz Web http://www.imp.ch
______________________________________________________
hello is there a cleaner/fastest way to update PAI header user part other than using subst
i come up with
subst('/^P-Asserted-Identity:(.*)(sip|sips|tel|tels):([^@]*)@([a-zA-Z0-9.]+)(.*)$/P-Asserted-Identity:\1\2:$var(newPAIUser)@\4\5/ig');
Thanks.
Hi Gang
Next question.
I have some broken CPE which do not set a=ptime despite using 20ms which
then causes the call to get rejected in certain destinations, because
ptime header is missing.
So I would like to match the user-agents in question and add back
a=ptime:20
Google searches found an user with the exact same problem almost 10
years ago and Daniel replying that indeed a function to add a body line
would be handy.
https://www.kamailio.org/docs/modules/devel/modules/textops.html
How could this be accomplished? I don't see a add_body_line or other
function which does not 'replace' a body line.
--
Mit freundlichen Grüssen
-Benoît Panizzon- @ HomeOffice und normal erreichbar
--
I m p r o W a r e A G - Leiter Commerce Kunden
______________________________________________________
Zurlindenstrasse 29 Tel +41 61 826 93 00
CH-4133 Pratteln Fax +41 61 826 93 01
Schweiz Web http://www.imp.ch
______________________________________________________
Hi
I have a setup where Kamailio is connected to several telephony providers using different IP addresses to communicate with them.
So I have a socket per provider.
I am using the dispatcher module to route calls to the different providers.
My question is if there is a way to get the advertised address of the socket chosen by dispatcher?
I have a socket pointer in the XAVP, but I can't figure out if it is possible to get the advertised address from it somehow.
Thanks in advance.
Tor
Hello Kamailio users,
I would like testers to try out a new module tls_wolfssl,
an alternate TLS transport based on wolfSSL.
Why another TLS transport implementation?
The travails of using OpenSSL >= 1.1.1 in Kamailio’s multi-process
paradigm has been documented by OpenSIPS (and that sister
project has implemented tls_wolfssl). Essentially, OpenSSL makes
no concessions to the multi-process use case and in fact has implementation
details that work against global shared memory structures.
As a result Kamailio contains some tricky code
* a pthread polyfill in core
* duplicated SSL_CTX per worker
* atexit workaround
How to test?
The code is currently in master and can be built in the usual way.
Debian has 5.2.0 libwolfssl-dev needed; for some RPM distros (el8, el9,
fc36) I have created a Copr repository
https://copr.fedorainfracloud.org/coprs/beaveryoga/wolfSSL/
Known limitations
The current state can be considered as identical to tls+OpenSSL 1.1.1/3.0.x.
Old TLS protocols < 1.2 and cipher list configuration don’t work, i.e., only
TLS 1.2 and 1.3 work with the default cipher list.
In your configuration just replace
loadmodule “tls.so”
with
loadmodule “tls_wolfssl.so”
The rest of the TLS configuration can remain unchanged unless
you are using a funky protocol version/cipher list combination.
Thanks!
S-P
Hi
Does anyone have the procedure model for Kamailio_cdrs, I'm trying to implement the model from the book, but the syntax error always appears.
Thanks for the support.
Adriano Vieira
hello i have problem on receive source port rtp packet
client-ip = 5.202.105.250
server-ip = 194.5.205.33
client2-ip = 188.212.241.46
In the 200 ok packet from client2 ,The value 4002 is set in the audio port
[image: photo_2022-06-12_17-44-37.jpg]
I expect rtp packets to be sent to me from source port 4002, but these
packets are sent to me from another source , which is port 55755 in the
image below, and I just opened this port(4002) in the firewall.
If I turn on my firewall service, all packets will be dropped. I have to
have this firewall
[image: photo_2022-06-12_17-44-48.jpg]
thanks for help me
Hello,
is there an rsync endpoint available or is there a possiblity of setting
this up? Creating a mirror via HTTP is a rather quick and dirty solution
and while the deb-repo can be mirrored using debmirror, the rpm repo is
hard to sync to a non-CentOS-based machine due to missing dependencies
such as yum and reposync in latest Debian-based systems.
Would be great to get some input in regards to this topic.
Cheers
Hi Daniel and kamailio users,
In my integration adventure of wolfSSL and kamailio I have encountered an
alignment issue sometime causing segfaults.
May I enquire what is the alignment of shm_malloc and friends?
The wolfSSL library integration requires that ser_malloc and ser_realloc
return values aligned on alignof(_max_align_t) which
in the case of x86_64 is 16.
Thank you
Shih-Ping
Hi all
Any chance of Ubuntu 22.04 LTS "Jammy Jellyfish” being added to the Jenkins package builder for kamailio 5.6?
Ubuntu native repo seems to have 5.5 in it.
Thanks
Mark
Hi
I have a setup where Kamailio is connected to several telephony providers using different IP addresses to communicate with them.
I am using the dispatcher module to route calls to the different providers.
My question is if there is a way to get the advertised address of the socket chosen by dispatcher?
I have a socket pointer in the XAVP but I can't figure out if it is possible to get the advertised address from it somehow.
Thanks in advance.
Tor
Hello,
Is there any way to advertise a different IP Address in the Record-Route
header individually per branch?
I have a setup here - where Kamailio is listening on 2 different
interfaces: Local IP and External IP. At the moment if the packet is coming
through the internal interface - I'm checking where is it going to and
based on that I'm setting the Record-Route header accordingly - and
everything works well, except when I have multiple branches: one going
through the internal interface and another one through the external one, so
in this case, I have to add a different record-route header per branch, by
doing this in the branch_route - it's not working and getting the
error: w_record_route_advertised_address(): Double attempt to record-route.
What would be another way to accomplish this?
HI all,
Just a quick heads up that RTPengine is now available in Debian
sid/unstable mainline repositories. Big thanks to our own Victor Seva
and Guillem Jover for making this possible.
Cheers
Playing around with WSS support:
if (nat_uac_test(64)) {
force_rport();
......
if (!add_contact_alias()) {
xinfo("Error aliasing contact <$ct>\n");
sl_send_reply("400", "Bad Request");
exit;
}
set_contact_alias() throws this error on ACK without Contact,
add_contact_alias() doesn't (and thats OK). Is this the expected behavior?