The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"OpenNews: Учет трафика в Linux используя ipcad"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Для слежения за появлением новых сообщений в нити, нажмите "Проследить за развитием треда".
. "OpenNews: Учет трафика в Linux используя ipcad" +/
Сообщение от Maxim Chirkovemail (ok), 15-Янв-06, 21:58 
У ipcad есть одна логичная, но ощущаемая через наступания на грабли, особенность. Если интерфейсы выбираются по маске (например, "vlan*") и для некоторых из них есть алиасы,  то для них трафика будет посчитан в N раз больше, т.е. для каждого алиасы в логах будет дубликат данных.
Для обхода проблемы был создан небольшой патч (отправлен автору ipcad, но похоже где-то затерялся), вместо звездочки вводящий более строгую маску (например, vlan[0-9][0-9][0-9][0-0]):

diff -u --recursive --new-file ipcad-3.6.6/cfglex.l ipcad-3.6.6-new/cfglex.l
--- ipcad-3.6.6/cfglex.l        2005-03-22 14:57:25 +0500
+++ ipcad-3.6.6-new/cfglex.l    2005-08-08 16:45:56 +0600
@@ -66,7 +66,7 @@
                ipcacfglval.tv_char = strdup(yytext);
                return TOK_STRING;
        }
-       [a-z]+[_0-9*]*  {
+       [a-z]+[_0-9\*\[\]\-]*   {
                ipcacfglval.tv_char = strdup(yytext);
                return TOK_STRING;
        }
diff -u --recursive --new-file ipcad-3.6.6/headers.h ipcad-3.6.6-new/headers.h
--- ipcad-3.6.6/headers.h       2005-03-22 14:57:25 +0500
+++ ipcad-3.6.6-new/headers.h   2005-08-08 17:09:49 +0600
@@ -251,4 +251,7 @@
#define        MIN(a,b)        ((a)<(b)?(a):(b))
#endif /* MIN */

+#undef IFNAMSIZ
+#define IFNAMSIZ 32
+
#endif /* __HEADERS_H__ */
diff -u --recursive --new-file ipcad-3.6.6/psrc.c ipcad-3.6.6-new/psrc.c
--- ipcad-3.6.6/psrc.c  2005-03-22 14:57:25 +0500
+++ ipcad-3.6.6-new/psrc.c      2005-08-08 17:02:03 +0600
@@ -62,11 +62,12 @@
        /*
         * Initialize packet source descriptors.
         */
-       if(strchr(ifname, '*')) {
+//     if(strchr(ifname, '*')) {
+       if(strchr(ifname, '*') != NULL || strchr(ifname, '[') != NULL){
                /*
                 * The interface does not exist, so it might be dynamic.
                 */
-               fprintf(stderr, "[DYNAMIC] ");
+               fprintf(stderr, "[DYNAMIC] /%s/ ", ps->ifName);
                ps->process_ptr = process_dynamic;
                ps->print_stats = print_stats_dynamic;
                ps->iface_type = IFACE_DYNAMIC;

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
OpenNews: Учет трафика в Linux используя ipcad, opennews, 15-Янв-06, 21:30  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру