[Click] Error: Write handler in RatedSource

Cliff Frey cliff at meraki.com
Mon Jun 20 13:41:38 EDT 2011


Yes, I am the one responsible for this (broken) code, and I think that your
assessment is correct, and that both the write handler and the configure()
methods should be improved.  Ideally we could add a testcase for it too...
but it'll be ok without one.

If you could make a patch and/or submit a pull request, that would be
awesome.

Cliff

On Mon, Jun 20, 2011 at 7:33 AM, Lars Bro <larsbro at gmail.com> wrote:

> 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
>
> _______________________________________________
> click mailing list
> click at amsterdam.lcs.mit.edu
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>


More information about the click mailing list