[Serusers] Re: nathelper and natping interval

Vitali Nikolaev vitaly at cifnet.com
Fri Jan 30 16:09:31 CET 2004


Hello Vitali,


ok.. nobody answering. or i asked something really stuped or nobody
knows :)


i traced get_all_ucontacts from dlist.c from usrloc. this function
supposed to give all contact that has specified flag set. and it
trying to compare flag in the database with: 1074111736 in :

                for (r = p->d->d_ll.first; r != NULL; r = r->d_ll.next) {
                        for (c = r->contacts; c != NULL; c = c->next) {
                                if (c->c.len <= 0)
                                        continue;
                                     /*
                                      * List only contacts that have all requested
                                      * flags set
                                      */
                                if ((c->flags & flags) != flags) {
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                        LOG(L_ERR, "Usrloc, get_all_ucontacts: flags != flags %d != %d\n", c->flags, flags);
//                                      continue;
                                }

I am still trying to find out how it happend.. please stop me from
reading sources if I forget something really important. just
commenting "continue" is really bad in my opinion

                                

Thursday, January 29, 2004, 12:07:27 PM, you wrote:

VN> Hello,

VN> I have problem with natping_interval.. it is not pinging at all and
VN> look like it just doesnot aware that I have something registered


VN> I use lates table release: 0.8.12

VN> I added some more debugging in nathelper.c to timer function:

VN>         DBG("DEBUG: nathelper buff != NULL\n");
VN>         cp = buf;
VN>         while (1) {
VN>                 memcpy(&(c.len), cp, sizeof(c.len));
VN>                 if (c.len == 0) {
VN>                         LOG(L_ERR, "ERROR: nathelper::c.len == 0\n");
VN>                         break;
VN>                 }

VN>  and can see that it break from the loop with c.len = 0. but when i
VN>  look at location table in mysql there is few devices registered.
VN>  probably something with ul_get_all_ucontact from usrloc..

VN>  please advise




VN> here is config:



VN> loadmodule "/usr/local/lib/ser/modules/sl.so"
VN> loadmodule "/usr/local/lib/ser/modules/tm.so"
VN> loadmodule "/usr/local/lib/ser/modules/rr.so"
VN> loadmodule "/usr/local/lib/ser/modules/auth.so"
VN> loadmodule "/usr/local/lib/ser/modules/auth_db.so"
VN> loadmodule "/usr/local/lib/ser/modules/mysql.so"
VN> loadmodule "/usr/local/lib/ser/modules/auth_mssql.so"
VN> loadmodule "/usr/local/lib/ser/modules/usrloc.so"
VN> loadmodule "/usr/local/lib/ser/modules/textops.so"
VN> loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
VN> loadmodule "/usr/local/lib/ser/modules/registrar.so"
VN> loadmodule "/usr/local/lib/ser/modules/nathelper.so"
VN> loadmodule "/usr/local/lib/ser/modules/exec.so"

VN> modparam("nathelper", "natping_interval", 10)
VN> modparam("registrar", "nat_flag", 6)
VN> # modparam("nathelper", "ping_nated_only", 1)   # Ping only clients behind NAT


VN> modparam("auth_db", "db_url","sql://ser:XXX@localhost/ser")
VN> modparam ("usrloc", "db_mode", 1)
VN> modparam("usrloc", "use_domain", 0)
VN> modparam("usrloc", "db_url", "sql://ser:XXX@localhost/ser")
VN> modparam("rr", "enable_full_lr", 1)

VN>         force_rport();
VN>         fix_nated_contact();
VN>         setflag(6);    # Mark as natted all clients 

VN>         if (!(method=="REGISTER")) record_route();   # 1=loose routing
VN>         # loose-route processing
VN>         if (loose_route()) {
VN>                 log(1, "LOOSE ROUTE\n");
VN>                 t_relay();
VN>                 break;
VN>         };
VN>         if(!uri==myself) {
VN>                 log(1, "URI!=myself");
VN>                 t_relay();
VN>                 break;
VN>         };


VN>         if (method=="REGISTER") {
VN>                 log(1, "REGISTER REQUEST RECEIVED\n");
VN>                 if (!mssql_authorize("209.227.183.21", "subscriber")) {
VN>                         log(1, "AUTH FAILED, REQUESTED\n");
VN>                         www_challenge("", "1");
VN>                         break;
VN>                 };
VN>                 log(1, "AUTH OK, REGISTER\n");
VN>                 save("location");
VN>                 break;
VN>         };

VN>         .....

  




-- 
Best regards,
 Vitali 




More information about the sr-users mailing list