Re: 64bit & snmp

From
Pavel Gulchouck (2:463/68)
To
Eugene Grosbein (2:5054/37.63)
Date
2009-09-22T10:24:12Z
Area
RU.CISCO
Hi Eugene!

22 Sep 09, Eugene Grosbein ==> 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

Я эти патчи отправлял автору, но, кажется, они не успели войти в 2.16.2, а с тех пор стабильных релизов не было.
Надеюсь, поможет.

diff -r -u2 mrtg-2.16.2.orig/src/rateup.c mrtg-2.16.2/src/rateup.c
--- src/rateup.c        Fri May 16 17:45:41 2008
+++ src/rateup.c        Sat Jul  5 12:10:35 2008
@@ -1515,5 +1515,5 @@


-  if (inrate < 0 || (unsigned) inrate > abs_max)
+  if (inrate < 0 || inrate > abs_max)
     {
       if (options & OPTION_UNKNASZERO)
@@ -1526,5 +1526,5 @@
        }
     }
-  if (outrate < 0 || (unsigned) outrate > abs_max)
+  if (outrate < 0 || outrate > abs_max)
     {
       if (options & OPTION_UNKNASZERO)


diff -r -u2 src/rateup.c src/rateup.c
--- src/rateup.c        Fri May 16 17:45:41 2008
+++ src/rateup.c        Mon Jul  7 15:36:40 2008
@@ -1450,5 +1450,5 @@
            {
              inr = diff (in, last.in);
-             if (inr < 0)      /* wrapped 32-bit counter? */
+             if (inr < 0 && inr + ((long long) 1 << 32) > 0 && inr + ((long long) 1 << 32) < (1 << 30))        /* wrapped 32-bit counter? */
                inr += (long long) 1 << 32;
            }
@@ -1491,5 +1491,5 @@
            {
              outr = diff (out, last.out);
-             if (outr < 0)     /* wrapped 32-bit counter? */
+             if (outr < 0 && outr + ((long long) 1 << 32) > 0 && outr + ((long long) 1 << 32) < (1 << 30))     /* wrapped 32-bit counter? */
                outr += (long long) 1 << 32;
            }


              Lucky carrier,
                           Паша
                           aka  gul@gul.kiev.ua
--- GoldED+/LNX 1.1.5
 * Origin: Опыт - это то, что мы получаем вместо того, что хотели (2:463/68)
SEEN-BY: 46/50 450/186 1024 451/30 452/25 154 461/76 463/68 94 327 407 561 822
SEEN-BY: 463/1124 1337 2223 6969 469/418 4614/20 4615/21 4623/178 4624/8
SEEN-BY: 4633/2 5000/5000 5001/100 5001 5003/58 5004/58 5010/126 5011/13
SEEN-BY: 5012/9 30 46 5015/28 5019/26 5020/175 400 545 715 758 830 1042 1641
SEEN-BY: 5020/2238 4441 5021/29 5022/128 5023/11 5025/3 5026/49 5027/12
SEEN-BY: 5029/60 5030/115 500 830 966 1256 1900 5035/38 5042/12 13 5045/7
SEEN-BY: 5049/96 5052/4 5054/1 4 8 9 28 30 36 37 67 75 81 89 5058/42 999
SEEN-BY: 5059/37 5062/10 5063/3 5070/156 5075/35 5077/70 5080/31 68 80 111 237
SEEN-BY: 5080/1003 5083/1 5084/9 5085/13 45 131 5090/108 5093/55 5095/20
SEEN-BY: 5096/18 6001/10 6004/3 6009/3 6055/2 6083/12 6090/1
PATH: 463/68 5080/1003 5020/4441 545 5054/1 37