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