setflag("NAT") 设置事务标志
setbflag("NAT") 设置分支标志
isflagset("NAT") 检查事务标志
isbflagset("NAT") 检查分支标志
有的标志是通知模块的(模块有flag参数),有的是脚本自己用
下面是官方给的一段例子,建议仔细揣摩:
modparam("usrloc", "nat_bflag", "NAT_BFLAG")
route {
..........
if (nat detected)
setbflag(NAT_BFLAG); # set branch flag "NAT_BFLAG" for the branch 0
..........
if (is_method("REGISTER")) {
# the branch flags (including "NAT_BFLAG") will be saved into location
save("location");
exit;
} else {
# lookup will load the branch flag from location
if (!lookup("location")) {
sl_send_reply("404","Not Found");
exit;
}
t_on_branch("1")
t_relay();
}
}
branch_route[1] {
xlog("-------branch=$T_branch_idx, branch flags=$bf\n");
if (isbflagset(NAT_BFLAG)) {
#current branch is marked as natted
.........
}
}
确实,这些东西最开始不容易懂,需要多琢磨,说不定哪天就一通百通了。