[SR-Users] Issues with keepalive_timeout

Alex Balashov abalashov at evaristesys.com
Thu Feb 20 01:14:24 CET 2014


Hello Kristian,

On 02/19/2014 06:51 PM, Kristian Kielhofner wrote:

> It seems that with modparam("nathelper", "ping_nated_only", 0) set my
> configuration should work without always also setting nat_bflag (as
> that is used in various other places currently).

Seemingly, yes. From nh_timer:

     rval = ul.get_all_ucontacts(buf, cblen, 
(ping_nated_only?ul.nat_flag:0),
         ((unsigned int)(unsigned 
long)timer_idx)*natping_interval+iteration,
         natping_processes*natping_interval);

The implication being that if ping_nated_only is < 1, contacts to ping 
are not filtered by the usrloc NAT flag. It did strike me as interesting 
that the usrloc API field is called 'nat_flag', but the usrloc modparam 
is called 'nat_bflag', but usrloc.c clearly reveals that they are one 
and the same:

    unsigned int  nat_flag;   /*! nat_flag module parameter */
    api->nat_flag   = nat_bflag;

And the filter in get_all_mem_ucontacts() does apply the flags argument:

    if ((c->cflags & flags) != flags)
       continue;

But it seems to me that it might not match if there are any other UL 
flags set besides the nat_bflag, e.g.

    #define POWPOW (1 << 1)
    #define PINGPONG (1 << 2)

    int flags = 0;

    flags |= PINGPONG;

    if((flags & POWPOW) != POWPOW)
       printf("Problem?\n");

    sasha at tambourine:~$ ./ns
    Problem?

Are there other UL contact flags that could be in use here and breaking 
this comparison in get_all_mem_ucontacts()?

-- 
Alex Balashov - Principal
Evariste Systems LLC
235 E Ponce de Leon Ave
Suite 106
Decatur, GA 30030
United States
Tel: +1-678-954-0670
Web: http://www.evaristesys.com/, http://www.alexbalashov.com/



More information about the sr-users mailing list