shaperd.2
Lukasz "S-K" Jarochowski
L.Jarochowski w sanity.int.pl
Nie, 17 Kwi 2005, 00:53:57 CEST
Witam.
Zrobiłem upgrade shaper'a do 2.2.24 z CVS'u i występował problem:
[root w pldserv ~]# shaperd
shaperd0: Unknown firewall type.
Exiting.
Po godzinie grzebania w kodzie i różnych takich doszedłem do tego gdzie leży
błąd, a leży on w źródłach:
w pliku shaperd_old.c:
#v+
int check_iptables(void)
{
FILE *fp;
char buf[1000];
char com[100];
sprintf(com,"%s -L -n 2> /dev/null\n",iptables_path);
if (fp = popen(com,"r"))
{
fgets(buf,1000,fp);
pclose(fp);
if (strstr(buf,"Chain INPUT")) return(1);
else return(0);
}
}
#v-
Funkcja ta działa tylko na niektórych systemach, gdzie łańcuch INPUT
wyświetli się jako jeden z pierwszego tysiąca znaków polecenia
iptables -L -n, naturalnie nie wszyscy tak mają, dlatego proponuję
rozwiązanie:
- if (strstr(buf,"Chain INPUT")) return(1);
+ if (strstr(buf,"Chain")) return(1);
I tak będzie dobrze, bo wystarczy żeby on cokolwiek wyłapał - po prostu musi
sprawdzić, czy polecenie zwróciło jakiś wynik - łańcuch Chain zawsze
wystąpi w poprawnym wyniku polecenia iptables -L -n
Z przyjemnością zrobiłbym jakąś łatkę, albo coś, ale nie wiem jak :)
Pozdrawiam
ŁJ
--
Wszędzie słyszę krzyk. Cierpień nieustająca melodia....
GG:0x4BE039 lukasz < w > sanity.int.pl
Więcej informacji o liście dyskusyjnej pld-devel-pl