Annotation of embedaddon/bird2/lib/tbf.c, revision 1.1

1.1     ! misho       1: /*
        !             2:  *     BIRD Library -- Token Bucket Filter
        !             3:  *
        !             4:  *     (c) 2014 Ondrej Zajicek <santiago@crfreenet.org>
        !             5:  *     (c) 2014 CZ.NIC z.s.p.o.
        !             6:  *
        !             7:  *     Can be freely distributed and used under the terms of the GNU GPL.
        !             8:  */
        !             9: 
        !            10: #include "nest/bird.h"
        !            11: #include "lib/timer.h"
        !            12: 
        !            13: int
        !            14: tbf_limit(struct tbf *f)
        !            15: {
        !            16:   btime delta = current_time() - f->timestamp;
        !            17: 
        !            18:   if (delta > 0)
        !            19:   {
        !            20:     u64 next = f->count + delta * f->rate;
        !            21:     u64 burst = (u64) f->burst << 20;
        !            22:     f->count = MIN(next, burst);
        !            23:     f->timestamp += delta;
        !            24:   }
        !            25: 
        !            26:   if (f->count < 1000000)
        !            27:   {
        !            28:     f->drop++;
        !            29:     return 1;
        !            30:   }
        !            31:   else
        !            32:   {
        !            33:     f->count -= 1000000;
        !            34:     f->drop = 0;
        !            35:     return 0;
        !            36:   }
        !            37: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>