Re: 64bit & snmp

From
Eugene Grosbein (2:5006/1)
To
Pavel Gulchouck (2:5054/37.63)
Date
2009-09-23T08:09:06Z
Area
RU.CISCO
Reply-To: eugen@grosbein.pp.ru

22 сен 2009, вторник, в 08:24 KRAT, Pavel Gulchouck написал(а):

 EG>>>> Рисую общий pps через роутер путем выбора счетчиков по SNMP,
 EG>>>> суммированием *Pkts авком и скармливания результатов в mrtg через `cat
 EG>>>> file`,
 EG>>>> то есть cron обновляет файл, mrtg получает его через cat.
 EG>> Проблема-то не только у меня:
 EG>> https://bugzilla.redhat.com/show_bug.cgi?id=491336
 PG> Я эти патчи отправлял автору, но, кажется, они не успели войти в 2.16.2, а
 PG> с
 PG> тех пор стабильных релизов не было.
 PG> Надеюсь, поможет.
 PG> diff -r -u2 mrtg-2.16.2.orig/src/rateup.c mrtg-2.16.2/src/rateup.c
 PG> - --- src/rateup.c        Fri May 16 17:45:41 2008
 PG> +++ src/rateup.c        Sat Jul  5 12:10:35 2008
 PG> @@ -1515,5 +1515,5 @@
 PG> -  if (inrate < 0 || (unsigned) inrate > abs_max)
 PG> +  if (inrate < 0 || inrate > abs_max)
 PG>      {
 PG>        if (options & OPTION_UNKNASZERO)
 PG> @@ -1526,5 +1526,5 @@
 PG>         }
 PG>      }
 PG> -  if (outrate < 0 || (unsigned) outrate > abs_max)
 PG> +  if (outrate < 0 || outrate > abs_max)
 PG>      {
 PG>        if (options & OPTION_UNKNASZERO)
 PG> diff -r -u2 src/rateup.c src/rateup.c
 PG> - --- src/rateup.c        Fri May 16 17:45:41 2008
 PG> +++ src/rateup.c        Mon Jul  7 15:36:40 2008
 PG> @@ -1450,5 +1450,5 @@
 PG>             {
 PG>               inr = diff (in, last.in);
 PG> -             if (inr < 0)      /* wrapped 32-bit counter? */
 PG> +             if (inr < 0 && inr + ((long long) 1 << 32) > 0 && inr +
 PG> ((long
 PG> long) 1 << 32) < (1 << 30))        /* wrapped 32-bit counter? */
 PG>                 inr += (long long) 1 << 32;
 PG>             }
 PG> @@ -1491,5 +1491,5 @@
 PG>             {
 PG>               outr = diff (out, last.out);
 PG> -             if (outr < 0)     /* wrapped 32-bit counter? */
 PG> +             if (outr < 0 && outr + ((long long) 1 << 32) > 0 && outr +
 PG> ((long
 PG> long) 1 << 32) < (1 << 30))     /* wrapped 32-bit counter? */
 PG>                 outr += (long long) 1 << 32;
 PG>             }

Пересобрал mrtg с этим патчем, но никаких видимых изменений не последовало:
по-прежнему, rateup в .log в первой-то строчке пишет 3626693915532557
во втором поле, а во всех следующих нули для значений input :-(

Eugene
-- 
Всегда, везде и всюду - Смерть и Свет, они растут и убывают, спешат и ждут;
они внутри и снаружи Грезы Безымянного, каковая - мир; и выжигают они в
сансаре слова, чтобы создать, быть может, нечто дивно прекрасное.
--- slrn/0.9.8.1 (FreeBSD)
 * Origin: Svyaz Service JSC (2:5006/1@fidonet)
SEEN-BY: 50/204 450/1024 461/43 640 465/11 469/142 999 4625/8 4641/444
SEEN-BY: 5000/5000 5006/1 5007/1 5010/70 5011/13 5012/46 5015/28 5019/26
SEEN-BY: 5020/175 400 545 982 1521 2238 4441 5021/29 5025/3 5026/14 5027/12
SEEN-BY: 5030/1080 5034/13 5035/38 5036/1 5037/28 5045/7 5049/1 5054/1 4 8 9
SEEN-BY: 5054/28 30 36 37 67 75 81 89 5060/88 5061/15 5062/10 5063/3 5066/18
SEEN-BY: 5075/35 5077/70 5080/68 5084/9 5085/13 5095/20 5096/18 6001/10 6004/3
SEEN-BY: 6009/3
PATH: 5006/1 5020/400 545 5054/1 37