Annotation of embedaddon/bird2/lib/tbf.c, revision 1.1.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>