[Click] Error: Write handler in RatedSource

Lars Bro larsbro at gmail.com
Mon Jun 20 10:33:04 EDT 2011


The following is from the read handler in Rated Source. As far I read
this, a "token bucket" is now used, which
is an improved mechanism for managing packet flows. The token bucket
has both a rate and a capacity, both must not be 0.

However, as CLICK_HZ is 1000 on my machine, the RatedSource will stop
working in the interval from 20 to 199 when
the rate is set by a write handler.

I assume that the point is that the capacity is a constant(2) until
rate is so big that rate / another constant is greater.
Something like

  rate / 200 >= 2 : rate/200 ? 2

Is this correct?

 189   case 1: {                     // rate
 190       unsigned rate;
 191       if (!IntArg().parse(s, rate))
 192           return errh->error("syntax error");
 193       rs->_tb.assign_adjust(rate, rate < CLICK_HZ / 50 ? 2 : rate / 200);
 194       break;
 195   }


cat test.click
rs::RatedSource() | Print() -> Discard();

click -p 23232 test.click

telnet 127.0.0.1 23232
write rs.rate 19
write rs.rate 20
write rs.rate 199
write rs.rate 200

19 works, 20 thru 199 does not work, 200 works


yours,
Lars Bro



More information about the click mailing list