The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"OpenNews: Учет трафика в Linux используя ipcad"
Отправлено Maxim Chirkov, 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;

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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