Can anyone tell me if there is an alternative option to connecting SER to a
carrier using T1/E1 lines ? I am looking for a more cost effective solution
that will avoid the setup and incremental cost of VOIP gateways and T1/E1
lines as the need for more and more concurrent calls escalates.
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.751 / Virus Database: 502 - Release Date: 9/2/2004
Hi everyone!
I come acrossed a problem
I have installed SER-0.8.14 on Red Hat Liunx 9.0 in source form.
I also have installed rtpproxy. It can run normally.
Two IP phones both with public IP address are able to get through and
both can hear. Another two IP phones both with private IP address are able
to get throuh and both can hear too.
The problem is as follows: when one with public IP address and another
with private IP address, they can get through but only the one with public
IP address can hear. The other cannot. When two phones separated to two LAN,
they both can not hear.
__________
| |
| LAN 2 |---phone 5
|________|
|
______|________
| | ___________
SER---| Internet |---| |--- phone 1
| | | LAN 1 |
|_____________| |_________|--- phone 2
| |
| |
phone 3 phone 4
The figure above shows phone 1 and phone 2 are both with private IP address.
Phone 3 and phone 4 are both with public IP address. Any two phones can get
through(can ring). When phone 1 calls phone 2, they both can hear. When phone 3
call phone 4, they both can hear too. When phone 1 call phone 3 or phone 3 call
phone 1, it can ring, and phone 3 can hear but phone 1 cannot hear. When phone 5
call phone 1 or phone 1 call phone 5, they both can not hear anything.
I have try many efforts but failed, Anyone help me will be appreciated!
Thank you !
# $Id: nathelper.cfg,v 1.1.2.1 2003/11/24 14:47:18 janakj Exp $
#
# simple quick-start config script including nathelper support
# This default script includes nathelper support. To make it work
# you will also have to install Maxim's RTP proxy. The proxy is enforced
# if one of the parties is behind a NAT.
#
# If you have an endpoing in the public internet which is known to
# support symmetric RTP (Cisco PSTN gateway or voicemail, for example),
# then you don't have to force RTP proxy. If you don't want to enforce
# RTP proxy for some destinations than simply use t_relay() instead of
# route(1)
#
# Sections marked with !! Nathelper contain modifications for nathelper
#
# NOTE !! This config is EXPERIMENTAL !
#
# ----------- global configuration parameters ------------------------
debug=3 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode
fork=no
log_stderror=yes
*/
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=5060
children=4
fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
#loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
#loadmodule "/usr/local/lib/ser/modules/auth.so"
#loadmodule "/usr/local/lib/ser/modules/auth_db.so"
# !! Nathelper
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
#modparam("usrloc", "db_mode", 2)
# -- auth params --
# Uncomment if you are using auth module
#
#modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which true in this config),
# uncomment also the following parameter)
#
#modparam("auth_db", "password_column", "password")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# !! Nathelper
modparam("registrar", "nat_flag", 6)
modparam("nathelper", "natping_interval", 30) # Ping interval 30 s
modparam("nathelper", "ping_nated_only", 1) # Ping only clients behind NAT
# ------------------------- request routing logic -------------------
# main routing logic
route{
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
break;
};
if (msg:len >= max_len ) {
sl_send_reply("513", "Message too big");
break;
};
# !! Nathelper
# Special handling for NATed clients; first, NAT test is
# executed: it looks for via!=received and RFC1918 addresses
# in Contact (may fail if line-folding is used); also,
# the received test should, if completed, should check all
# vias for rpesence of received
if (nat_uac_test("3")) {
# Allow RR-ed requests, as these may indicate that
# a NAT-enabled proxy takes care of it; unless it is
# a REGISTER
fix_nated_contact();
if (method == "REGISTER" || ! search("^Record-Route:")) {
log("LOG: Someone trying to register from private IP, rewriting\n");
# This will work only for user agents that support symmetric
# communication. We tested quite many of them and majority is
# smart enough to be symmetric. In some phones it takes a configuration
# option. With Cisco 7960, it is called NAT_Enable=Yes, with kphone it is
# called "symmetric media" and "symmetric signalling".
# fix_nated_contact(); # Rewrite contact with source IP of signalling
if (method == "INVITE") {
fix_nated_sdp("1"); # Add direction=active to SDP
};
force_rport(); # Add rport parameter to topmost Via
setflag(6); # Mark as NATed
};
};
# we record-route all messages -- to make sure that
# subsequent messages will go through our proxy; that's
# particularly good if upstream and downstream entities
# use different transport protocol
if (!method=="REGISTER") record_route();
# subsequent messages withing a dialog should take the
# path determined by record-routing
if (loose_route()) {
# mark routing logic in request
append_hf("P-hint: rr-enforced\r\n");
route(1);
break;
};
if (!uri==myself) {
# mark routing logic in request
append_hf("P-hint: outbound\r\n");
route(1);
break;
};
# if the request is for other domain use UsrLoc
# (in case, it does not work, use the following command
# with proper names and addresses in it)
if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
# if (!www_authorize("iptel.org", "subscriber")) {
# www_challenge("iptel.org", "0");
# break;
# };
save("location");
break;
};
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound alias\r\n");
route(1);
break;
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
append_hf("P-hint: usrloc applied\r\n");
route(1);
}
route[1]
{
# !! Nathelper
if ((uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" || !search("^Route:")){
sl_send_reply("479", "We don't forward to private IP addresses");
break;
};
# if client or server know to be behind a NAT, enable relay
if (isflagset(6)) {
force_rtp_proxy();
};
# NAT processing of replies; apply to all transactions (for example,
# re-INVITEs from public to private UA are hard to identify as
# NATed at the moment of request processing); look at replies
t_on_reply("1");
# send it out now; use stateful forwarding as it works reliably
# even for UDP2TCP
if (!t_relay()) {
sl_reply_error();
};
}
# !! Nathelper
onreply_route[1] {
# NATed transaction ?
if (isflagset(6) && status =~ "(183)|2[0-9][0-9]") {
fix_nated_contact();
fix_nated_sdp("1");
force_rtp_proxy();
# otherwise, is it a transaction behind a NAT and we did not
# know at time of request processing ? (RFC1918 contacts)
} else if (nat_uac_test("1"))
{
fix_nated_contact();
fix_nated_sdp("1");
force_rtp_proxy();
};
}
On Sep 2, 2004, at 2:34 PM, Ezequiel Colombo wrote:
> Hi Adrian, Jan, this is a good initiative.
> As a litle contribution i sugest the introduction of a "strip" column
> in the
> lcr table and the logic in the module to strip digits in the dialed
> number
> before prepend the "prefix". This digit manipulation is commonly
> needed in
> inter carrier routing.
>
Yes
> curious: (Adrian): You make the gateway lookup using a loop function
> that
> make several selects to db after obtain a match in "destination" ???
Yes because you might have 5 gateways with different priorities used in
each failure route
>
> Thanks
> Ezequiel Colombo
>
> ----- Original Message -----
> From: "Adrian Georgescu" <ag(a)ag-projects.com>
> To: "Jan Janak" <jan(a)iptel.org>
> Cc: <serusers(a)lists.iptel.org>
> Sent: Thursday, September 02, 2004 8:59 AM
> Subject: Re: [Serusers] Failover PSTN Gateways
>
>
>> Yes Jan, if less work the better.
>>
>> On Sep 2, 2004, at 1:41 PM, Jan Janak wrote:
>>
>>> On 02-09 13:06, Adrian Georgescu wrote:
>>>> On Sep 2, 2004, at 12:22 PM, Jan Janak wrote:
>>>>
>>>>> Just out of curiosity, in the document you mention that subsequent
>>>>> requests (ACK, BYE) go to the same gateway, but that is something
>>>>> that
>>>>> would happen anyway because the gateway puts its Contact into reply
>>>>> and
>>>>> record-routing will route subsequent messages to that contact.
>>>>> Do you plan to write any additional support for that or did I just
>>>>> misunderstand the text ?
>>>>
>>>> Yes there will be some additional support to make sure same route si
>>>> followed regardless of how the phone (mis)behaves.
>>>
>>> What does that mean ? Record-routing will do the job for you and if
>>> it
>>> is broken in the phone then there is a really high chance that it
>>> will
>>> have severe interoperability problems, so why bother with storing
>>> additional session state ?
>>>
>>> Jan.
>>
>> _______________________________________________
>> Serusers mailing list
>> serusers(a)lists.iptel.org
>> http://lists.iptel.org/mailman/listinfo/serusers
>>
>
HI,
I have an interconexion with a proxy-server registrar IPTEL to a Cisco
GATEWAY AS5300 for the PSTN.
When I make a call by a Cisco IP phone, I have no problem but when I make a
call with a call-box(Same as Cisco ATA) or a softphone Xpro (XTEN), I can
speak 20 s and after the call is cut.
I have analysed this problem, the problem is after the SIP ringing frame,
the softphone send a SIP frame ACK with a bad request-line.
IP ADDRESS 80.118.128.1 : CISCO AS5300 GATEWAY
IP ADDRESS 80.118.128.5 : SERVER IPTEL
The RED parameter in the first DEBUG is BAD, he as to be as the same of the
second debug.
That's my debug of the SOFT PHONE: BAD ACKNOWLEDGE
#########################################################
U 80.118.128.1:5060 -> 80.118.128.5:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
80.118.128.5;branch=z9hG4bKcce9.7a6be6f3.0,SIP/2.0/UDP
62.39.69.2:21791;rport=21791;branch=z9hG4bKB0A9B5A4D70A4FF8A745CCDD512FED41.
.Fr
om: Nicolas RUIZ <sip:0170708661@sip.vivaction.net>;tag=1756293558..To:
<sip:0156384185@sip.vivaction.net>;tag=E855BD4-163A..Date: Thu, 02 Sep 2004
12:39:19 GMT..Call-
ID: 475E7EC7-5CA5-457D-8F0D-BCF6B8FA6209@192.168.18.21..Server:
Cisco-SIPGateway/IOS-12.x..CSeq: 24531 INVITE..Allow: INVITE, OPTIONS, BYE,
CANCEL, ACK, PRACK, COMET,
REFER, SUBSCRIBE, NOTIFY, INFO..Allow-Events: telephone-event..Contact:
<sip:0156384185@80.118.128.1:5060>..Record-Route:
<sip:0156384185@80.118.128.5;ftag=1756293558;
lr=on>..Content-Type: application/sdp..Content-Length:
256....v=0..o=CiscoSystemsSIP-GW-UserAgent 16 8937 IN IP4
80.118.128.1..s=SIP Call..c=IN IP4 80.118.128.1..t=0 0
..m=audio 18194 RTP/AVP 18 101..c=IN IP4 80.118.128.1..a=rtpmap:18
G729/8000..a=fmtp:18 annexb=no..a=rtpmap:101
telephone-event/8000..a=fmtp:101 0-15..
#
U 80.118.128.5:5060 -> 62.39.69.2:21791
SIP/2.0 200 OK..Via: SIP/2.0/UDP
62.39.69.2:21791;rport=21791;branch=z9hG4bKB0A9B5A4D70A4FF8A745CCDD512FED41.
.From: Nicolas RUIZ <sip:0170708661@sip.vivaction.net>;tag
=1756293558..To:
<sip:0156384185@sip.vivaction.net>;tag=E855BD4-163A..Date: Thu, 02 Sep 2004
12:39:19 GMT..Call-ID: 475E7EC7-5CA5-457D-8F0D-BCF6B8FA6209(a)192.168.18.21.
.Server: Cisco-SIPGateway/IOS-12.x..CSeq: 24531 INVITE..Allow: INVITE,
OPTIONS, BYE, CANCEL, ACK, PRACK, COMET, REFER, SUBSCRIBE, NOTIFY,
INFO..Allow-Events: telephone
-event..Contact: <sip:0156384185@80.118.128.1:5060>..Record-Route:
<sip:0156384185@80.118.128.5;ftag=1756293558;lr=on>..Content-Type:
application/sdp..Content-Length:
256....v=0..o=CiscoSystemsSIP-GW-UserAgent 16 8937 IN IP4
80.118.128.1..s=SIP Call..c=IN IP4 80.118.128.1..t=0 0..m=audio 18194
RTP/AVP 18 101..c=IN IP4 80.118.128.1..
a=rtpmap:18 G729/8000..a=fmtp:18 annexb=no..a=rtpmap:101
telephone-event/8000..a=fmtp:101 0-15..
####
U 62.39.69.2:21791 -> 80.118.128.5:5060
ACK sip:0156384185@80.118.128.1:5060 SIP/2.0..Via: SIP/2.0/UDP
62.39.69.2:21791;rport;branch=z9hG4bKDDE6A61442CF4B3985D47F7A633E9A9F..From:
Nicolas RUIZ <sip:017070866
1(a)sip.vivaction.net>;tag=1756293558..To:
<sip:0156384185@sip.vivaction.net>;tag=E855BD4-163A..Contact:
<sip:0170708661@62.39.69.2:21791>..Route: <sip:0156384185@80.118
.128.5;ftag=1756293558;lr=on>..Call-ID:
475E7EC7-5CA5-457D-8F0D-BCF6B8FA6209@192.168.18.21..CSeq: 24531
ACK..Max-Forwards: 70..Content-Length: 0....
######
That's my debug of the IP PHONE: GOOD ACKNOWLEDGE
U 80.118.128.1:5060 -> 80.118.128.5:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
80.118.128.5;branch=z9hG4bK119a.2eb3c633.0,SIP/2.0/UDP
62.39.70.245:20105;branch=z9hG4bK21610a53..From: "ip.phone"
<sip:0170708662@sip
.vivaction.net>;tag=000f8f58915f002e0e896df1-21abefc7..To:
<sip:0156384185@sip.vivaction.net>;tag=EB213D4-226C..Date: Thu, 02 Sep 2004
13:28:10 GMT..Call-ID: 000f8f58-
915f0025-7e34225d-1cdf9dae@192.168.254.12..Server:
Cisco-SIPGateway/IOS-12.x..CSeq: 102 INVITE..Allow: INVITE, OPTIONS, BYE,
CANCEL, ACK, PRACK, COMET, REFER, SUBSCRIB
E, NOTIFY, INFO..Allow-Events: telephone-event..Contact:
<sip:0156384185@80.118.128.1:5060>..Record-Route:
<sip:0156384185@80.118.128.5;ftag=000f8f58915f002e0e896df1-2
1abefc7;lr=on>..Content-Type: application/sdp..Content-Length:
258....v=0..o=CiscoSystemsSIP-GW-UserAgent 1735 3645 IN IP4
80.118.128.1..s=SIP Call..c=IN IP4 80.118.12
8.1..t=0 0..m=audio 18760 RTP/AVP 18 101..c=IN IP4
80.118.128.1..a=rtpmap:18 G729/8000..a=fmtp:18 annexb=no..a=rtpmap:101
telephone-event/8000..a=fmtp:101 0-15..
#
U 80.118.128.5:5060 -> 62.39.70.245:20105
SIP/2.0 200 OK..Via: SIP/2.0/UDP
62.39.70.245:20105;branch=z9hG4bK21610a53..From: "ip.phone"
<sip:0170708662@sip.vivaction.net>;tag=000f8f58915f002e0e896df1-21abefc7..
To: <sip:0156384185@sip.vivaction.net>;tag=EB213D4-226C..Date: Thu, 02 Sep
2004 13:28:10 GMT..Call-ID:
000f8f58-915f0025-7e34225d-1cdf9dae@192.168.254.12..Server: Cisc
o-SIPGateway/IOS-12.x..CSeq: 102 INVITE..Allow: INVITE, OPTIONS, BYE,
CANCEL, ACK, PRACK, COMET, REFER, SUBSCRIBE, NOTIFY, INFO..Allow-Events:
telephone-event..Contact
: <sip:0156384185@80.118.128.1:5060>..Record-Route:
<sip:0156384185@80.118.128.5;ftag=000f8f58915f002e0e896df1-21abefc7;lr=on>..
Content-Type: application/sdp..Content-
Length: 258....v=0..o=CiscoSystemsSIP-GW-UserAgent 1735 3645 IN IP4
80.118.128.1..s=SIP Call..c=IN IP4 80.118.128.1..t=0 0..m=audio 18760
RTP/AVP 18 101..c=IN IP4 80.1
18.128.1..a=rtpmap:18 G729/8000..a=fmtp:18 annexb=no..a=rtpmap:101
telephone-event/8000..a=fmtp:101 0-15..
####
U 62.39.70.245:20600 -> 80.118.128.5:5060
ACK
sip:0156384185@80.118.128.5:5060;ftag=000f8f58915f002e0e896df1-21abefc7;lr=o
n SIP/2.0..Via: SIP/2.0/UDP 62.39.70.245:20105;branch=z9hG4bK47003517..From:
"ip.phone"
<sip:0170708662@sip.vivaction.net>;tag=000f8f58915f002e0e896df1-21abefc7..To
: <sip:0156384185@sip.vivaction.net>;tag=EB213D4-226C..Call-ID:
000f8f58-915f0025-7e34225d
-1cdf9dae@192.168.254.12..CSeq: 102 ACK..User-Agent: CSCO/6..Route:
<sip:0156384185@80.118.128.1:5060>..Content-Length: 0....
#
U 80.118.128.5:5060 -> 80.118.128.1:5060
ACK sip:0156384185@80.118.128.1:5060 SIP/2.0..Max-Forwards:
10..Record-Route:
<sip:0156384185@80.118.128.5;ftag=000f8f58915f002e0e896df1-21abefc7;lr=on>..
Via: SIP/2.0/
UDP 80.118.128.5;branch=0..Via: SIP/2.0/UDP
62.39.70.245:20105;branch=z9hG4bK47003517..From: "ip.phone"
<sip:0170708662@sip.vivaction.net>;tag=000f8f58915f002e0e896df1
-21abefc7..To:
<sip:0156384185@sip.vivaction.net>;tag=EB213D4-226C..Call-ID:
000f8f58-915f0025-7e34225d-1cdf9dae@192.168.254.12..CSeq: 102
ACK..User-Agent: CSCO/6..Con
tent-Length: 0....
Thans for your help
Nicolas RUIZ
PARIS, FRANCE
hello friends
i have two ser proxies
*.*.*.18 -- number is 36105
*.*.*.19 -- number is 214103
iam forwarding from *.*.*.19 to *.*.*.18 with
iam using the xlite as my user agents but when i try
to
call from 214103 to 36105 for few seconds it says it s
trying but afterwards it says it user not found
ser.cfg of *.*.*.19 is as follows
*******************************************************
# $Id: nathelper.cfg,v 1.1.2.1 2003/11/24 14:47:18
janakj Exp $
#
# simple quick-start config script including nathelper
support
# This default script includes nathelper support. To
make it work
# you will also have to install Maxim's RTP proxy. The
proxy is enforced
# if one of the parties is behind a NAT.
#
# If you have an endpoing in the public internet which
is known to
# support symmetric RTP (Cisco PSTN gateway or
voicemail, for example),
# then you don't have to force RTP proxy. If you don't
want to enforce
# RTP proxy for some destinations than simply use
t_relay() instead of
# route(1)
#
# Sections marked with !! Nathelper contain
modifications for nathelper
#
# NOTE !! This config is EXPERIMENTAL !
#
# ----------- global configuration parameters
------------------------
debug=8 # debug level (cmd line:
-dddddddddd)
fork=yes
log_stderror=yes # (cmd line: -E)
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=5060
children=4
fifo="/tmp/ser_fifo"
# ------------------ module loading
----------------------------------
# Uncomment this if you want to use SQL database
#loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
#loadmodule "/usr/local/lib/ser/modules/auth.so"
#loadmodule "/usr/local/lib/ser/modules/auth_db.so"
# !! Nathelper
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
# ----------------- setting module-specific parameters
---------------
# -- usrloc params --
modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
#modparam("usrloc", "db_mode", 2)
# -- auth params --
# Uncomment if you are using auth module
#
#modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which
true in this config),
# uncomment also the following parameter)
#
#modparam("auth_db", "password_column", "password")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# !! Nathelper
modparam("registrar", "nat_flag", 6)
modparam("nathelper", "natping_interval", 30) # Ping
interval 30 s
modparam("nathelper", "ping_nated_only", 1) # Ping
only clients behind NAT
# ------------------------- request routing logic
-------------------
# main routing logic
route{
# initial sanity checks -- messages with
# max_forwards==0, or excessively long
requests
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
break;
};
if (msg:len >= max_len ) {
sl_send_reply("513", "Message too
big");
break;
};
# !! Nathelper
# Special handling for NATed clients; first,
NAT test is
# executed: it looks for via!=received and
RFC1918 addresses
# in Contact (may fail if line-folding is
used); also,
# the received test should, if completed,
should check all
# vias for rpesence of received
if (nat_uac_test("3")) {
# Allow RR-ed requests, as these may
indicate that
# a NAT-enabled proxy takes care of
it; unless it is
# a REGISTER
if (method == "REGISTER" || !
search("^Record-Route:")) {
log("LOG: Someone trying to
register from private IP, rewriting\n");
# This will work only for user
agents that support symmetric
# communication. We tested quite
many of them and majority is
# smart enough to be symmetric. In
some phones it takes a configuration
# option. With Cisco 7960, it is
called NAT_Enable=Yes, with kphone it is
# called "symmetric media" and
"symmetric signalling".
fix_nated_contact(); # Rewrite
contact with source IP of signalling
if (method == "INVITE") {
fix_nated_sdp("1"); # Add
direction=active to SDP
};
force_rport(); # Add rport
parameter to topmost Via
setflag(6); # Mark as NATed
};
};
# we record-route all messages -- to make sure
that
# subsequent messages will go through our
proxy; that's
# particularly good if upstream and downstream
entities
# use different transport protocol
if (!method=="REGISTER") record_route();
# subsequent messages withing a dialog should
take the
# path determined by record-routing
if (loose_route()) {
# mark routing logic in request
append_hf("P-hint: rr-enforced\r\n");
route(1);
break;
};
if (!uri==myself) {
# mark routing logic in request
append_hf("P-hint: outbound\r\n");
route(1);
break;
};
# if the request is for other domain use
UsrLoc
# (in case, it does not work, use the
following command
# with proper names and addresses in it)
if (uri==myself) {
if (method=="REGISTER") {
log("********************* in
the registration***************");
save("location");
break;
};
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound
alias\r\n");
route(1);
break;
};
if(uri=~"^sip:3.*@")
{
log("***********************in
forward***********************");
forward(*.*.*.18,5060);
break;
}
else
{
if (!lookup("location"))
{
sl_send_reply("404",
"Not Found");
break;
}
forward(uri:host,uri:port);
}
};
append_hf("P-hint: usrloc applied\r\n");
route(1);
}
route[1]
{
# !! Nathelper
if
(uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)"
&& !search("^Route:")){
sl_send_reply("479", "We don't forward to
private IP addresses");
break;
};
# if client or server know to be behind a NAT,
enable relay
if (isflagset(6)) {
force_rtp_proxy();
};
# NAT processing of replies; apply to all
transactions (for example,
# re-INVITEs from public to private UA are
hard to identify as
# NATed at the moment of request processing);
look at replies
t_on_reply("1");
# send it out now; use stateful forwarding as
it works reliably
# even for UDP2TCP
if (!t_relay()) {
sl_reply_error();
};
}
# !! Nathelper
onreply_route[1] {
# NATed transaction ?
if (isflagset(6) && status =~ "(183)|2[0-9][0-9]")
{
fix_nated_contact();
force_rtp_proxy();
# otherwise, is it a transaction behind a NAT and
we did not
# know at time of request processing ? (RFC1918
contacts)
} else if (nat_uac_test("1")) {
fix_nated_contact();
};
}
*******************************************************
in my *.*.*.19 terminal i got this type of
messages
*******************************************************
8(12167) ***********************in
forward*********************** 8(12167)
check_via_address(*.*.*.81, *.*.*.81, 0)
8(12167) Sending:
ACK sip:36105@*.*.*.in SIP/2.0
Record-Route:
<sip:36105@*.*.*.19;ftag=3583624574;lr=on>
Via: SIP/2.0/UDP *.*.*.19;branch=0
Via: SIP/2.0/UDP
*.*.*.81:5060;rport=5060;branch=z9hG4bK5D01004E4BDF4856A07BEA7C1D0EC3D5
From: rama <sip:214103@*.*.*.in>;tag=3583624574
To:
<sip:36105@*.*.*.in>;tag=a6a1c5f60faecf035a1ae5b6e96e979a-de09
Contact: <sip:214103@*.*.*.81:5060>
Call-ID: C8ECA493-3AE1-4173-94AE-E33AFA5F0F93(a)*.*.*.81
CSeq: 48216 ACK
Max-Forwards: 69
Content-Length: 0
.
8(12167) orig. len=425, new_len=534, proto=1
8(12167) receive_msg: cleaning up
8(12167) SIP Request:
8(12167) method: <ACK>
8(12167) uri: <sip:36105@*.*.*.in>
8(12167) version: <SIP/2.0>
8(12167) parse_headers: flags=1
8(12167) Found param type 235, <rport> = <n/a>;
state=6
8(12167) Found param type 232, <branch> =
<z9hG4bK5D01004E4BDF4856A07BEA7C1D0EC3D5>; state=16
8(12167) end of header reached, state=5
8(12167) parse_headers: Via found, flags=1
8(12167) parse_headers: this is the first via
8(12167) After parse_msg...
8(12167) preparing to run routing scripts...
8(12167) DEBUG : sl_filter_ACK: to late to be a local
ACK!
8(12167) DEBUG : is_maxfwd_present: searching for
max_forwards header
8(12167) parse_headers: flags=128
8(12167) DEBUG: add_param:
tag=a6a1c5f60faecf035a1ae5b6e96e979a-de09
8(12167) end of header reached, state=29
8(12167) DEBUG: get_hdr_field: <To> [73];
uri=[sip:36105@*.*.*.in]
8(12167) DEBUG: to body [<sip:36105@*.*.*.in>]
8(12167) get_hdr_field: cseq <CSeq>: <48216> <ACK>
8(12167) DEBUG: is_maxfwd_present: value = 70
8(12167) check_via_address(*.*.*.81, *.*.*.81, 0)
8(12167) DEBUG: add_param: tag=3583624574
8(12167) end of header reached, state=29
8(12167) parse_headers: flags=256
8(12167) DEBUG: get_hdr_body : content_length=0
8(12167) found end of header
8(12167) find_first_route(): No Route headers found
8(12167) loose_route(): There is no Route HF
8(12167) check_self - checking if host==us: 17==9 &&
[*.*.*.in] == [127.0.0.1]
8(12167) check_self - checking if port 5060 matches
port 5060
8(12167) check_self - checking if host==us: 17==13 &&
[*.*.*.in] == [*.*.*.19]
8(12167) check_self - checking if port 5060 matches
port 5060
8(12167) check_self - checking if host==us: 17==9 &&
[*.*.*.in] == [127.0.0.1]
8(12167) check_self - checking if port 5060 matches
port 5060
8(12167) check_self - checking if host==us: 17==13 &&
[*.*.*.in] == [*.*.*.19]
8(12167) check_self - checking if port 5060 matches
port 5060
8(12167) lookup(): '36105' Not found in usrloc
8(12167) check_self - checking if host==us: 17==9 &&
[*.*.*.in] == [127.0.0.1]
8(12167) check_self - checking if port 5060 matches
port 5060
8(12167) check_self - checking if host==us: 17==13 &&
[*.*.*.in] == [*.*.*.19]
8(12167) check_self - checking if port 5060 matches
port 5060
*******************************************************
in my *.*.*.18 terminal i am getting this messages
*******************************************************
6(2291) SIP Request:
6(2291) method: <INVITE>
6(2291) uri: <sip:36105@*.*.*.in>
6(2291) version: <SIP/2.0>
6(2291) parse_headers: flags=1
6(2291) Found param type 232, <branch> = <0>;
state=16
6(2291) end of header reached, state=5
6(2291) parse_headers: Via found, flags=1
6(2291) parse_headers: this is the first via
6(2291) After parse_msg...
6(2291) preparing to run routing scripts...
6(2291) DEBUG : is_maxfwd_present: searching for
max_forwards header
6(2291) parse_headers: flags=128
6(2291) Found param type 232, <branch> =
<z9hG4bK3c48.f0b1ad35.0>; state=16
6(2291) end of header reached, state=5
6(2291) parse_headers: Via found, flags=128
6(2291) parse_headers: this is the second via
6(2291) Found param type 232, <branch> = <0>;
state=16
6(2291) end of header reached, state=5
6(2291) parse_headers: Via found, flags=128
6(2291) Found param type 235, <rport> = <5060>;
state=6
6(2291) Found param type 232, <branch> =
<z9hG4bK5D01004E4BDF4856A07BEA7C1D0EC3D5>; state=16
6(2291) end of header reached, state=5
6(2291) parse_headers: Via found, flags=128
6(2291) end of header reached, state=9
6(2291) DEBUG: get_hdr_field: <To> [31];
uri=[sip:36105@*.*.*.in]
6(2291) DEBUG: to body [<sip:36105@*.*.*.in>
]
6(2291) get_hdr_field: cseq <CSeq>: <48216> <INVITE>
6(2291) DEBUG: is_maxfwd_present: value = 67
6(2291) check_via_address(*.*.*.19, *.*.*.19, 0)
6(2291) DEBUG: add_param: tag=3583624574
6(2291) end of header reached, state=29
6(2291) parse_headers: flags=256
6(2291) DEBUG: get_hdr_body : content_length=297
6(2291) found end of header
6(2291) find_first_route(): No Route headers found
6(2291) loose_route(): There is no Route HF
6(2291) check_self - checking if host==us: 17==9 &&
[*.*.*.in] == [127.0.0.1]
6(2291) check_self - checking if port 5060 matches
port 5060
6(2291) check_self - checking if host==us: 17==13 &&
[*.*.*.in] == [202.65.128.18]
6(2291) check_self - checking if port 5060 matches
port 5060
6(2291) check_self: host != me
6(2291) parse_headers: flags=-1
6(2291) DEBUG: t_addifnew: msg id=4 , global msg id=3
, T on entrance=0xffffffff
6(2291) parse_headers: flags=-1
6(2291) parse_headers: flags=60
6(2291) t_lookup_request: start searching:
hash=33987, isACK=0
6(2291) DEBUG: proceeding to pre-RFC3261 transaction
matching
6(2291) DEBUG: non-ACK matched
6(2291) DEBUG: t_lookup_request: transaction found
(T=0x422ba740)
6(2291) DEBUG: reply retransmitted. buf=0x4006a640:
SIP/2.0 1..., shmem=0x422bbfb8: SIP/2.0 1
6(2291) receive_msg: cleaning up
10(2295) DEBUG: timer routine:0,tl=0x422ba8a0
next=(nil)
10(2295) DEBUG: FR_handler:stop retr. and send CANCEL
(0x422ba740)
10(2295) ->>>>>>>>> T_code=100, new_code=408
10(2295) DEBUG: relay_reply: branch=0, save=0, relay=0
10(2295) parse_headers: flags=-1
10(2295) check_via_address(*.*.*.19, *.*.*.19, 0)
10(2295) DEBUG: reply relayed. buf=0x80c3ec8: SIP/2.0
4..., shmem=0x422bbfb8: SIP/2.0 4
10(2295) DEBUG: add_to_tail_of_timer[4]: 0x422ba818
10(2295) DEBUG: add_to_tail_of_timer[0]: 0x422ba82c
10(2295) DEBUG: final_response_handler : done
10(2295) DEBUG: timer routine:7,tl=0x422ba88c
next=(nil)
6(2291) SIP Request:
6(2291) method: <ACK>
6(2291) uri: <sip:36105@*.*.*.in>
6(2291) version: <SIP/2.0>
6(2291) parse_headers: flags=1
6(2291) Found param type 232, <branch> = <0>;
state=16
6(2291) end of header reached, state=5
6(2291) parse_headers: Via found, flags=1
6(2291) parse_headers: this is the first via
6(2291) After parse_msg...
6(2291) preparing to run routing scripts...
6(2291) DEBUG : sl_filter_ACK: to late to be a local
ACK!
6(2291) DEBUG : is_maxfwd_present: searching for
max_forwards header
6(2291) parse_headers: flags=128
6(2291) Found param type 235, <rport> = <5060>;
state=6
6(2291) Found param type 232, <branch> =
<z9hG4bK5D01004E4BDF4856A07BEA7C1D0EC3D5>; state=16
6(2291) end of header reached, state=5
6(2291) parse_headers: Via found, flags=128
6(2291) parse_headers: this is the second via
6(2291) DEBUG: add_param:
tag=a6a1c5f60faecf035a1ae5b6e96e979a-de09
6(2291) end of header reached, state=29
6(2291) DEBUG: get_hdr_field: <To> [73];
uri=[sip:36105@*.*.*.in]
6(2291) DEBUG: to body [<sip:36105@*.*.*.in>]
6(2291) get_hdr_field: cseq <CSeq>: <48216> <ACK>
6(2291) DEBUG: is_maxfwd_present: value = 69
6(2291) check_via_address(*.*.*.19, *.*.*.19, 0)
6(2291) DEBUG: add_param: tag=3583624574
6(2291) end of header reached, state=29
6(2291) parse_headers: flags=256
6(2291) DEBUG: get_hdr_body : content_length=0
6(2291) found end of header
6(2291) find_first_route(): No Route headers found
6(2291) loose_route(): There is no Route HF
6(2291) check_self - checking if host==us: 17==9 &&
[*.*.*.in] == [127.0.0.1]
6(2291) check_self - checking if port 5060 matches
port 5060
6(2291) check_self - checking if host==us: 17==13 &&
[*.*.*.in] == [202.65.128.18]
6(2291) check_self - checking if port 5060 matches
port 5060
6(2291) check_self: host != me
6(2291) parse_headers: flags=-1
6(2291) DEBUG: t_addifnew: msg id=5 , global msg id=4
, T on entrance=0xffffffff
6(2291) parse_headers: flags=-1
6(2291) parse_headers: flags=60
6(2291) t_lookup_request: start searching:
hash=33987, isACK=1
6(2291) DEBUG: proceeding to pre-RFC3261 transaction
matching
6(2291) DEBUG: non-2xx ACK matched
6(2291) DEBUG: t_lookup_request: transaction found
(T=0x422ba740)
6(2291) DEBUG: cleanup_uacs: RETR/FR timers reset
6(2291) DEBUG: add_to_tail_of_timer[2]: 0x422ba7ac
6(2291) receive_msg: cleaning up
6(2291) SIP Request:
6(2291) method: <ACK>
6(2291) uri: <sip:36105@*.*.*.in>
6(2291) version: <SIP/2.0>
6(2291) parse_headers: flags=1
6(2291) Found param type 232, <branch> = <0>;
state=16
6(2291) end of header reached, state=5
6(2291) parse_headers: Via found, flags=1
6(2291) parse_headers: this is the first via
6(2291) After parse_msg...
6(2291) preparing to run routing scripts...
6(2291) DEBUG : sl_filter_ACK: to late to be a local
ACK!
6(2291) DEBUG : is_maxfwd_present: searching for
max_forwards header
6(2291) parse_headers: flags=128
6(2291) Found param type 235, <rport> = <5060>;
state=6
6(2291) Found param type 232, <branch> =
<z9hG4bK5D01004E4BDF4856A07BEA7C1D0EC3D5>; state=16
6(2291) end of header reached, state=5
6(2291) parse_headers: Via found, flags=128
6(2291) parse_headers: this is the second via
6(2291) DEBUG: add_param:
tag=a6a1c5f60faecf035a1ae5b6e96e979a-de09
6(2291) end of header reached, state=29
6(2291) DEBUG: get_hdr_field: <To> [73];
uri=[sip:36105@*.*.*.in]
6(2291) DEBUG: to body [<sip:36105@*.*.*.in>]
6(2291) get_hdr_field: cseq <CSeq>: <48216> <ACK>
6(2291) DEBUG: is_maxfwd_present: value = 69
6(2291) check_via_address(*.*.*.19, *.*.*.19, 0)
6(2291) DEBUG: add_param: tag=3583624574
6(2291) end of header reached, state=29
6(2291) parse_headers: flags=256
6(2291) DEBUG: get_hdr_body : content_length=0
6(2291) found end of header
6(2291) find_first_route(): No Route headers found
6(2291) loose_route(): There is no Route HF
6(2291) check_self - checking if host==us: 17==9 &&
[*.*.*.in] == [127.0.0.1]
6(2291) check_self - checking if port 5060 matches
port 5060
6(2291) check_self - checking if host==us: 17==13 &&
[*.*.*.in] == [202.65.128.18]
6(2291) check_self - checking if port 5060 matches
port 5060
6(2291) check_self: host != me
6(2291) parse_headers: flags=-1
6(2291) DEBUG: t_addifnew: msg id=6 , global msg id=5
, T on entrance=0xffffffff
6(2291) parse_headers: flags=-1
6(2291) parse_headers: flags=60
6(2291) t_lookup_request: start searching:
hash=33987, isACK=1
6(2291) DEBUG: proceeding to pre-RFC3261 transaction
matching
6(2291) DEBUG: non-2xx ACK matched
6(2291) DEBUG: t_lookup_request: transaction found
(T=0x422ba740)
6(2291) DEBUG: cleanup_uacs: RETR/FR timers reset
6(2291) receive_msg: cleaning up
10(2295) DEBUG: timer routine:0,tl=0x422ba82c
next=(nil)
10(2295) DEBUG: timer routine:4,tl=0x422ba818
next=(nil)
7(2292) udp_rcv_loop: probing packet received from
*.*.*.24 35091
10(2295) DEBUG: timer routine:2,tl=0x422ba7ac
next=(nil)
10(2295) DEBUG: wait_handler : removing 0x422ba740
from table
10(2295) DEBUG: delete transaction 0x422ba740
10(2295) DEBUG: wait_handler : done
*******************************************************
so where iam doing wrong
with regards
ser diehard
__________________________________
Do you Yahoo!?
Yahoo! Mail is new and improved - Check it out!
http://promotions.yahoo.com/new_mail
SER bugs found under OpenBSD 3.5:
ser 0.8.14 binary:
------------------
The ser-0.8.14_openbsd_i386.tar.gz binary will not work since the
executable is in the obsolete a.out format instead of ELF.
ser 0.8.14 source:
------------------
make produced syntax errors, so I used gmake.
It runs! Strangely, it doesn't emit an error or warning even when there is
no ser.cfg file at all. It doesn't seem to find /etc/ser/ser.cfg or
/etc/ser.cfg when I put one there.
Upon run it reports WARNING: could not read from /dev/random.
Under OpenBSD, /dev/random is reserved for hardware RNG's. Use
/dev/arandom (or /dev/urandom) instead.
There is confusion over whether the config file is /etc/ser.cfg or
/etc/ser/ser.cfg. The ser man page erroneously says the -f default is
./ser.cfg instead of /etc/...
man page errors:
Under FILES:
it lists /etc/ser/ser.cfg instead of /etc/ser.cfg -which is correct?
Also, /usr/sbin/ser should be /usr/local/sbin/ser
Also, /usr/lib/ser/modules/* is really /usr/local/lib/ser/modules/*
Missing: There is no man page for serctl.
Also, /usr/share/doc/ser/README.cfg should be
/usr/local/share/doc/ser/README.cfg
The file /usr/local/share/examples/ser/ser.cfg should be mentioned by the
man page.
Installation: The example ser.cfg should be copied to /etc/ser.cfg
Under OpenBSD, /usr/sbin and /usr/local/bin are in the path, but
/usr/local/sbin is not (go figure). This means ser will no execute
directly since it is not in the path. This may be a reason to use
/usr/sbin instead of /usr/local/sbin.
Personally, I don't care whether ser and it's files go in .../local/... or
not, as long as the documentation reflects this accurately.
-Steve
Hi all!!
I had an instance of ser using the next route structure:
t_on_failure[1];
t_relay_to_udp("x.x.x.x","5060");
failure_route[1]{
}
the problem is that SER treats redirections, such as 302, as errors and
jumps to failure_route block without processing the redirection answer.
Why is SER not processing the 302 answer and use the Contact header as
the next hop to forward the request??
Thanks in advance!
Samuel.
Unclassified
Hi,
I am using SER at my end and have integrated it with Pstn Gateway.But,when
i
call to a Pstn number the call is being forwarded to the Pstn Gateway and
the
call goes out and gets connected and we are able to speak for 32
seconds.Exactly,after 32 seconds the call gets disconnected.
Following were the logs when we tried tracing it :
Sep 2 14:00:58 sip1 /usr/sbin/ser[15877]: Warning:
sl_send_reply: I won't send a reply for ACK!!
Sep 2 14:01:00 sip1 /usr/sbin/ser[15886]: Warning:
sl_send_reply: I won't send a reply for ACK!!
Sep 2 14:01:04 sip1 /usr/sbin/ser[15892]: Warning:
sl_send_reply: I won't send a reply for ACK!!
The following is the config file :
Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp
$
#
# simple quick-start config script
#
# ----------- global configuration parameters
------------------------
#debug=3 # debug level (cmd line: -dddddddddd)
#fork=yes
#log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode
debug=7
fork=no
log_stderror=yes
*/
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=5060
#children=4
fifo="/tmp/ser_fifo"
# ------------------ module loading
----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so"
loadmodule "/usr/lib/ser/modules/tm.so"
loadmodule "/usr/lib/ser/modules/rr.so"
loadmodule "/usr/lib/ser/modules/maxfwd.so"
loadmodule "/usr/lib/ser/modules/usrloc.so"
loadmodule "/usr/lib/ser/modules/registrar.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/lib/ser/modules/auth.so"
loadmodule "/usr/lib/ser/modules/auth_db.so"
# ----------------- setting module-specific parameters
---------------
#---------------------time parameters-------------
modparam("tm", "fr_inv_timer", 12 )
modparam("tm", "fr_timer", 24 )
#modparam("tm", "noisy_ctimer", 1)
# -- usrloc params --
#modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
modparam("usrloc", "db_mode", 2)
# -- auth params --
# Uncomment if you are using auth module
#
modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which
true in this config),
# uncomment also the following parameter)
#
modparam("auth_db", "password_column", "password")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# ------------------------- request routing logic
-------------------
# main routing logic
route{
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
break;
};
if ( msg:len > max_len ) {
sl_send_reply("513", "Message too big");
break;
};
# we record-route all messages -- to make sure that
# subsequent messages will go through our proxy;
that's
# particularly good if upstream and downstream
entities
# use different transport protocol
record_route();
# loose-route processing
if (loose_route()) {
t_relay();
break;
};
if (uri=~"^sip:1")
{
strip(1);
# forward(202.56.170.144,5060);
t_relay_to_udp("202.56.170.144", "5060");
break;
};
# if the request is for other domain use UsrLoc
# (in case, it does not work, use the following
command
# with proper names and addresses in it)
if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest
authentication
# if (!www_authorize("iptel.org", "subscriber")) {
# www_challenge("iptel.org", "0");
# break;
# };
save("location");
break;
};
# native SIP destinations are handled using our
USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
# forward to current uri now; use stateful
forwarding; that
# works reliably even if we forward from TCP to UDP
if (!t_relay()) {
sl_reply_error();
};
}
Could you plz tell us where could the problem be with or, are we missing any
timer parameters that needs to be configured in SER.If yes, we kindly
request
you to help us in this matter at your earliest convenience.We are stuck in
the
middle of our project and we have been trying to aquire documentation on
this
but we weren't able to.
Your help will be greatly appreciated.
Regards,
Vishal
_________________________________________________________________
NRIs !
http://creative.mediaturf.net/creatives/icicibank/june/icicinri_tol_tl.htm
Access to over 6,00,000 ATMs.
no richard,
i have checked twice that s your Makefile only
i think it could not able to detect where is the
Python.h
but i tried to give the correct settins with
the python default settings according to my system
still it gives then same old error
with regards
serdiehard
--- Richard <richard(a)o-matrix.org> wrote:
> do you save the file to
> ./answer_machine/plug-in/ivr/Makefile
>
> Look like you are still using the old makefile.
>
>
> -----Original Message-----
> From: ser die [mailto:serdiehard@yahoo.com]
> Sent: Wednesday, September 01, 2004 11:15 PM
> To: Richard
> Subject: RE: [Sems] ivr with sems and ser
>
> richard
>
> it still gives the error
>
> as
>
> [root@server ivr]# make
> g++ -c -o Ivr.o Ivr.cpp
> In file included from Ivr.cpp:22:
> IvrPython.h:32:20: Python.h: No such file or
> directory
> IvrPython.h:33:21: compile.h: No such file or
> directory
>
>
> --- Richard <richard(a)o-matrix.org> wrote:
>
> > I attached the makefile I used.
> >
> > Let me know if there is any problem.
> >
> > -----Original Message-----
> > From: sems-bounces(a)lists.iptel.org
> > [mailto:sems-bounces@lists.iptel.org] On Behalf Of
> > ser die
> > Sent: Tuesday, August 31, 2004 8:09 PM
> > To: serusers(a)lists.iptel.org; sems(a)lists.iptel.org
> > Subject: [Sems] ivr with sems and ser
> >
> > in order to use the ivr with perl suppory i tried
> to
> >
> > comment the python modules from the makefile
> >
> > so which instrtucion do i need to comment
> >
> >
> ****************************************************
> >
> > plug_in_name = ivr
> >
> > #
> > # Python specific
> > # (no need to change this if you want to use
> perl)
> > #
> > # PYTHON_VERSION might also be 2.2
> > # do a ls /usr/include/python2.3/Python.h to see
> if
> > it's there
> > PYTHON_VERSION = 2.2
> > # adjust to point to python include path
> > # can also be /usr/include/python$(PYTHON_VERSION)
> > # look for Python.h in the specified path
> > # Python prefix is what you configured python with
> > # if you built from source (e.g. ./configure
> > --with-prefix=/usr/local)
> > # on debian it's often /usr, on SuSE /usr/local
> > PYTHON_PREFIX = /usr/local
> > PYTHON_DIR =
> > $(PYTHON_PREFIX)/include/python$(PYTHON_VERSION)
> > PYTHON_LIBDIR =
> > $(PYTHON_PREFIX)/lib/python$(PYTHON_VERSION)
> >
> > # put used Python modules from lib-dynload here,
> > e.g.
> > time, mysql, _cvs.so etc.
> > PYTHON_DYNLOAD_MODULES =
> > $(PYTHON_LIBDIR)/lib-dynload/time.so
> > PYTHON_module_cflags = -I$(PYTHON_DIR)
> > PYTHON_module_ldflags = -L$(PYTHON_LIBDIR)/config
> > -lpython$(PYTHON_VERSION)
> $(PYTHON_DYNLOAD_MODULES)
> >
> > #
> > # perl specific
> > #
> > # uncomment the next lines if you want to script
> the
> > ivr with perl scripts
> > # put used Perl modules here, e.g. time, mysql
> etc.
> > PERL_DYNLOAD_MODULES =
> > /usr/lib/perl/5.8/auto/IO/IO.so
> > /usr/lib/perl/5.8/auto/Fcntl/Fcntl.so \
> > /usr/lib/perl/5.8/auto/Socket/Socket.so
> > /usr/local/lib/perl/5.8.3/auto/DBI/DBI.so \
> > /usr/lib/perl/5.8/auto/Sys/Hostname/Hostname.so
> > /usr/lib/perl/5.8/auto/Sys/Syslog/Syslog.so \
> > /usr/lib/perl/5.8/auto/Sys/Syslog/Syslog.so
> > /usr/lib/perl5/auto/Date/Calc/Calc.so \
> > /usr/lib/perl/5.8/auto/MIME/Base64/Base64.so
> > /usr/lib/perl/5.8/auto/POSIX/POSIX.so \
> > /usr/lib/perl/5.8/auto/Time/HiRes/HiRes.so
> > /usr/lib/perl/5.8/auto/Cwd/Cwd.so \
> > /usr/lib/perl5/auto/Bit/Vector/Vector.so
> > /usr/lib/perl5/auto/DBD/mysql/mysql.so
> > PERL_module_ldflags = `perl -MExtUtils::Embed -e
> > ldopts` -DPERL_IMPLICIT_CONTEXT
> > $(PERL_DYNLOAD_MODULES)
> > PERL_module_cflags = -DIVR_PERL `perl
> > -MExtUtils::Embed -e ccopts `
> > -DPERL_IMPLICIT_CONTEXT
> >
> > #
> > # flite text to speech
> > #
> > # uncomment the next lines if you want to have
> flite
> > text-to-speech (ivr.say("Hello there"); )
> > FLITE_DIR = /usr/src/flite-1.2-release
> > ALT_FLITE_DIR = /usr/include/flite
> > IVR_TTS_module_ldflags = -L$(FLITE_DIR)/lib -lm
> > -lflite_cmu_us_kal -lflite_usenglish \
> > -lflite_cmulex -lflite
> > IVR_TTS_module_cflags = -I$(FLITE_DIR)/include
> > -I$(ALT_FLITE_DIR) -DIVR_WITH_TTS
> >
> >
> > LOCAL_INCLUDES = -I$(FLITE_DIR)/lang/usenglish
> > LD_FLAGS = -ldl -lpthread -lutil -lm -Xlinker
> > --export-dynamic -Xlinker --no-strip-discarded
> >
> >
> > module_ldflags = -ldl -lpthread -lutil -lm
> -Xlinker
> > --export-dynamic \
> > $(PYTHON_module_ldflags) \
> > $(IVR_TTS_module_ldflags) \
> > $(PERL_module_ldflags)
> >
> >
> > # for perl support:
> > # -DIVR_PERL `perl -MExtUtils::Embed -e ccopts `
> > # for flite text-to-speech support -DIVR_WITH_TTS
> > module_cflags = \
> > $(PYTHON_module_cflags) \
> > $(IVR_TTS_module_cflags) \
> > $(PERL_module_cflags)
> >
> > include ../Makefile.app_module
> >
> >
> ****************************************************
> > so when i tried to use the coomand make i get the
> > eroor
> > as
> >
> > IVR_mthr_usleep'
> > Ivr.cpp:352: invalid use of undefined type `struct
> > IvrMediaEvent'
> > Ivr.h:63: forward declaration of `struct
> > IvrMediaEvent'
> > Ivr.cpp:352: `DBG' cannot be used as a function
> > Ivr.cpp:353: invalid use of undefined type `struct
> > IvrMediaEvent'
> > Ivr.h:63: forward declaration of `struct
> > IvrMediaEvent'
> > Ivr.cpp:353: `usleep' cannot be used as a function
> > Ivr.cpp:354: `DBG' cannot be used as a function
> > make: *** [Ivr.o] Error 1
> >
> > with regards
> > serdiehard
> >
> >
> >
> > _______________________________
> > Do you Yahoo!?
> > Win 1 of 4,000 free domain names from Yahoo! Enter
> > now.
> > http://promotions.yahoo.com/goldrush
> >
> > _______________________________________________
> > Sems mailing list
> > sems(a)lists.iptel.org
> >
> http://lists.iptel.org/cgi-bin/mailman/listinfo/sems
> >
>
> > ATTACHMENT part 2 application/octet-stream
> name=Makefile
>
>
>
>
>
> _______________________________
> Do you Yahoo!?
>
=== message truncated ===
__________________________________
Do you Yahoo!?
Yahoo! Mail - Helps protect you from nasty viruses.
http://promotions.yahoo.com/new_mail