The OpenNET Project / Index page

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

Патч для ipcad, решающий проблемы с алиасами интерфейсов (traffic ipcad patch)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: traffic, ipcad, patch,  (найти похожие документы)
From: Maxim Chirkov <mc@tyumen.ru.> Date: Mon, 29 Jan 2006 18:21:07 +0000 (UTC) Subject: Патч для ipcad, решающий проблемы с алиасами интерфейсов Оригинал: http://www.opennet.dev/openforum/vsluhforumID3/13280.html У ipcad есть одна логичная, но ощущаемая через наступание на грабли, особенность. Если интерфейсы выбираются по маске (например, "vlan*") и для некоторых из них есть алиасы, то для них трафик будет посчитан в N раз больше, т.е. для каждого алиаса в логах будет дубликат данных. Для обхода проблемы был создан небольшой патч (отправлен автору ipcad, но похоже где-то затерялся), вместо звездочки вводящий более строгую маску (например, vlan[0-9][0-9][0-9][0-9]), т.е. для примера "vlan0301:1" будет отброшен. 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;

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




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

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