You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kamailio/modules/rtpproxy/examples/4to6.cfg

115 lines
2.8 KiB

# $Id$
#
# Simple application level gateway config script.
#
# Assumes that SER/rtpproxy run on a machine, which connected to
# both IPv4 and IPv6 networks.
#
# Correspondingly, this machine has two IP addresses: one IPv4
# and the second one IPv6
#
# For example:
#
# 192.168.0.1 - "internal" IPv4 address
# 2002:1234:5678::1 - "external" IPv6 address
#
# rtpproxy started with `-l 192.168.0.1 -6 /2002:1234:5678::1' option.
# ser started with `-l 192.168.0.1 -l [2002:1234:5678::1] option.
#
# ------------------ module loading ----------------------------------
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/nathelper.so"
loadmodule "/usr/local/lib/ser/modules/rtpproxy.so"
# ----------------- setting module-specific parameters ---------------
# -- nathelper params --
modparam("nathelper", "natping_interval", 15)
# ------------------ main fun below ----------------------------------
route {
# initial sanity checks -- messages with
# max_forwars == 0, or excessively long requests,
# or those that don't addressed to us
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;
};
if (!(uri == myself) && method == "INVITE") {
sl_send_reply("403", "Call cannot be served here");
break;
};
if (method == "REGISTER") {
if (af == inet) {
save("location-inet4");
} else if (af == inet6) {
save("location-inet6");
} else {
sl_send_reply("403", "Call cannot be served here");
};
break;
};
if (method == "INVITE") {
if (lookup("location-inet4")) {
# Comment out three lines below if you want
# RTP for IPv4->IPv4 calls to go directly
# between UAs
if (af == inet)
if (rtpproxy_offer("FAII"))
t_on_reply("1");
if (af == inet6)
if (rtpproxy_offer("FAEI"))
t_on_reply("1");
} else if (lookup("location-inet6")) {
if (af == inet)
if (rtpproxy_offer("FAIE"))
t_on_reply("1");
# Comment out three lines below if you want
# RTP for IPv6->IPv6 calls to go directly
# between UAs
if (af == inet6)
if (rtpproxy_offer("FAEE"))
t_on_reply("1");
} else {
sl_send_reply("403", "Call cannot be served here");
break;
};
}
if (method == "BYE" || method == "CANCEL")
unforce_rtp_proxy();
# Do strict routing if pre-loaded route headers present
if (loose_route()) {
t_relay();
break;
};
if (method == "INVITE")
record_route();
if (!t_relay())
sl_reply_error();
}
onreply_route[1] {
if (!(status=~"183" || status=~"200"))
break;
rtpproxy_answer("FA");
}