sysfence-commit Mailing List for sysfence (Page 2)
Status: Alpha
Brought to you by:
emes
You can subscribe to this list here.
| 2004 |
Jan
|
Feb
|
Mar
(2) |
Apr
(3) |
May
(99) |
Jun
(45) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2005 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
(5) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Michal S. <em...@us...> - 2004-06-07 11:45:10
|
Update of /cvsroot/sysfence/sysfence/dokprojektlic In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21266 Modified Files: speckonstrukcyjna.tex Log Message: * poprawkesy ;) Index: speckonstrukcyjna.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/speckonstrukcyjna.tex,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- speckonstrukcyjna.tex 6 Jun 2004 19:00:53 -0000 1.9 +++ speckonstrukcyjna.tex 7 Jun 2004 11:44:57 -0000 1.10 @@ -48,55 +48,62 @@ \subsubsection{Modu³ \textit{sighandlers}} \begin{itemize} - \item \textit{void signal\_init (int process)} -- funkcja inicjuje obs³ugê sygna³ów, - ustawia odpowiednie procedury ich obs³ugi; parametr (\texttt{PARENT} dla \textit{sfftch} lub - \texttt{CHILD} dla \textit{stwatch}) - rozró¿nia dzia³anie funkcji dla ró¿nych procesów; - \item \textit{void signals\_handling (int onoff)} -- funkcja blokuje (\texttt{SIGBLOCK}) lub odblokowuje - (\texttt{SIGUNBLOCK}) przyjmowanie sygna³ów; wykorzystywana jest przed wej¶ciem programu do sekcji krytycznej - (czyli operacji na pamiêci dzielonej) i po wyj¶ciu; + \item \textit{void signal\_init (int process)} -- funkcja inicjuje obs³ugê sygna³ów + za pomoc± odpowiednich procedur. Parametr (\texttt{PARENT} dla + \textit{sffetch} lub \texttt{CHILD} dla \textit{stwatch}) + pozwala zró¿nicowaæ dzia³anie funkcji dla ró¿nych procesów. + \item \textit{void signals\_handling (int onoff)} -- funkcja blokuje + (\texttt{SIGBLOCK}) lub odblokowuje (\texttt{SIGUNBLOCK}) przyjmowanie sygna³ów. + Wykorzystywana jest przed wej¶ciem programu do sekcji krytycznej (czyli operacji + na pamiêci dzielonej) i po wyj¶ciu z niej. \end{itemize} \subsubsection{Modu³ \textit{communication}} \begin{itemize} - \item \textit{int semaphore\_init (int val)} -- inicjalizacja pojedynczego semafora; argument - \texttt{SEMAPHORE\_SET} lub \texttt{SEMAPHORE\_RESET} - decyduje o jego pocz±tkowym stanie; funkcja zwraca \textit{semid}; - - \item \textit{semaphore\_wait(int semid)} i \textit{semaphore\_post(int semid)} -- makra do operacji na semaforze; - \item \textit{int semaphore\_del (int semid)} -- dealokacja semafora; - \item \textit{int shared\_mem\_init (int memsize)} -- inicjalizacja pamiêci dzielonej o rozmiarze \textit{memsize}; - funkcja zwraca identyfikator pamiêci \textit{shmid}; - \item \textit{void *shared\_mem\_attach (int shmid)} -- przy³±czenie do pamiêci dzielonej o identyfikatorze - \textit{shmid}; funkcja zwraca wska¼nik do pocz±tku pamiêci \textit{shm}; - \item \textit{void shared\_mem\_detach (void *shm)} -- od³±czenie od pamiêci; - \item \textit{void shared\_mem\_del (int shmid)} -- usuniêcie pamiêci dzielonej; + \item \textit{int semaphore\_init (int val)} -- inicjalizacja pojedynczego semafora. + Argument \texttt{SEMAPHORE\_SET} lub \texttt{SEMAPHORE\_RESET} decyduje o jego + pocz±tkowym stanie. Funkcja zwraca identyfikator semafora (\textit{semid}). + \item \textit{semaphore\_wait(int semid)} i \textit{semaphore\_post(int semid)} + -- makra do operacji na semaforze. + \item \textit{int semaphore\_del (int semid)} -- likwidacja semafora. + \item \textit{int shared\_mem\_init (int memsize)} -- inicjalizacja segmentu + pamiêci dzielonej o rozmiarze \textit{memsize}. Funkcja zwraca identyfikator + pamiêci (\textit{shmid}). + \item \textit{void *shared\_mem\_attach (int shmid)} -- przy³±czenie pamiêci + dzielonej o identyfikatorze \textit{shmid}. Funkcja zwraca wska¼nik do pocz±tku + pamiêci (\textit{shm}). + \item \textit{void shared\_mem\_detach (void *shm)} -- od³±czenie pamiêci dzielonej. + \item \textit{void shared\_mem\_del (int shmid)} -- usuniêcie segmentu pamiêci + dzielonej. \end{itemize} \subsubsection{Modu³ \textit{processtitle}} -Idea tego modu³u zaczerpniêta zosta³a z kodu ¼ród³owego programu \textit{sendmail} (dok³adnie z pliku -sys/conf.c). +Idea tego modu³u zaczerpniêta zosta³a z kodu ¼ród³owego programu \textit{sendmail} +(dok³adnie z pliku sys/conf.c). \begin{itemize} - \item \textit{void initproctitle (int argc, char **argv)} -- funkcja kopiuje obszar \textit{environ} w nowy - obszar pamiêci; zmienia wska¼nik \textit{environ} aby wskazywa³ na ten obszar; oryginalny obszar - zmiennych ¶rodowiskowych wykorzystywany jest do zwiêkszenia obszaru przeznaczonego na pamiêtanie - nazwy procesu; funkcja wyznacza te¿ maksymaln± d³ugo¶æ nazwy procesu, jest on pamiêtana jest w globalnej - zmiennej modu³u; - \item \textit{void setproctitle (int process, int state, const char *rulename)} -- ustawia tytu³ procesu; - \textit{process} - \texttt{MAIN\_PROCESS} lub \texttt{RULE\_PROCESS}; dozwolone stany (\textit{state}) - to \texttt{STATE\_STOPPED}, - \texttt{STATE\_NORMAL} lub \texttt{STATE\_EXEC}; \textit{rulename} jest wska¼nikiem na ³añcuch umieszczony w apostrofach; + \item \textit{void initproctitle (int argc, char **argv)} -- funkcja kopiuje + obszar zajêty przez zmienne ¶rodowiskowe (\textit{environ}) w inne miejsce + pamiêci i zmienia wska¼nik \textit{environ} tak aby wskazywa³ na ten obszar. + Pamiêæ zajmowana przez oryginalny obraz zmiennych ¶rodowiskowych wykorzystywany + jest do zwiêkszenia bufora przeznaczonego na pamiêtanie nazwy procesu. Funkcja + wyznacza te¿ maksymaln± d³ugo¶æ nazwy procesu. Jest on pamiêtana jest w globalnej + zmiennej modu³u. + \item \textit{void setproctitle (int process, int state, const char *rulename)} -- + ustawia tytu³ procesu \textit{process} na \texttt{MAIN\_PROCESS} lub + \texttt{RULE\_PROCESS}. Dozwolone stany (\textit{state}) to \texttt{STATE\_STOPPED}, + \texttt{STATE\_NORMAL} lub \texttt{STATE\_EXEC}. \textit{rulename} jest + wska¼nikiem na ³añcuch umieszczony w apostrofach. \end{itemize} \subsubsection{Modu³ \textit{xalloc}} \begin{itemize} \item \textit{void * xalloc (void * ptr, size\_t size)} -- pomocnicza funkcja do alokacji pamiêci, - je¶li wska¼nik \textit{ptr} ma warto¶æ ró¿n± od \texttt{NULL} obszar jest zwiêkszany; je¶li wyst±pi³ - b³±d podczac przydzielania pamiêci, funkcja koñczy dzia³anie programu z kodem \texttt{EXIT\_MEM}; + je¶li wska¼nik \textit{ptr} ma warto¶æ ró¿n± od \texttt{NULL} obszar jest zwiêkszany. Je¶li wyst±pi³ + b³±d podczac przydzielania pamiêci, funkcja koñczy dzia³anie programu z kodem \texttt{EXIT\_MEM}. \end{itemize} \subsubsection{Modu³ \textit{exit}} @@ -106,31 +113,33 @@ \texttt{EXIT\_IO}, \texttt{EXIT\_MEM}, \texttt{EXIT\_NOCONF}, \texttt{EXIT\_NORULE}, \texttt{EXIT\_PARSE}, \texttt{EXIT\_VALUE}, \texttt{EXIT\_OPTION}, \texttt{EXIT\_SHM}, \texttt{EXIT\_SEM}, \texttt{EXIT\_BUG}; - \item \textit{void bail\_out (int excode, const char *details)} -- koñczy dzia³anie programu z odpowiednim kodem; - \textit{details} jest dodatkow± informacj± wympisywan± na \textit{stderr}; + \item \textit{void bail\_out (int excode, const char *details)} -- koñczy dzia³anie + programu z odpowiednim kodem i komunikatem. \textit{details} jest dodatkow± informacj± + wypisywan± poprzez \textit{stderr}. \end{itemize} \subsubsection{Modu³ \textit{cp2memory}} \begin{itemize} \item \textit{void *cp\_list (void **buf, sf\_list *list)} i \textit{void *cp\_rule (void **buf, sf\_rule *rule)} -- - przekopiowuj± odpowiednie drzewiaste struktury do ci±g³ego bufora; + przekopiowuj± odpowiednie drzewiaste struktury do ci±g³ego bufora. \end{itemize} \subsubsection{Modu³ \textit{conditions}} \begin{itemize} - \item \textit{int check\_atomic (sf\_atomic *at)} -- sprawdza warto¶æ wyra¿enia atomicznego; - \item \textit{int check\_expression (sf\_expression *ex)} -- sprawdza warto¶æ wyra¿enia \textit{ex}; + \item \textit{int check\_atomic (sf\_atomic *at)} -- sprawdza warto¶æ wyra¿enia atomicznego. + \item \textit{int check\_expression (sf\_expression *ex)} -- sprawdza warto¶æ z³o¿onego + wyra¿enia \textit{ex}. \end{itemize} \subsubsection{Modu³ \textit{mainloop}} \begin{itemize} \item \textit{void rule\_watch\_loop (sf\_rule *rule)} -- g³ówna pêtla procesu \textit{sfwatch} - w której cyklicznie wywo³ywane - s± wszystkie funkcje; - \item \textit{void res\_probe\_loop (sf\_database *db)} -- g³ówna pêtla procesu \textit{sffetch}; + w której cyklicznie sprawdzana jest logiczna warto¶æ regu³y. + \item \textit{void res\_probe\_loop (sf\_database *db)} -- g³ówna pêtla procesu \textit{sffetch}, + w której z systemu pobierane s± wszelkie niezbêdne dane. \end{itemize} \subsubsection{Modu³ \textit{sysfence}} |
|
From: Michal S. <em...@us...> - 2004-06-07 11:44:33
|
Update of /cvsroot/sysfence/sysfence/dokprojektlic In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21121 Modified Files: testowanie.tex Log Message: + poprawki * DEBUG ju¿ w ca³o¶ci idzie do logu Index: testowanie.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/testowanie.tex,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- testowanie.tex 5 Jun 2004 18:25:21 -0000 1.5 +++ testowanie.tex 7 Jun 2004 11:44:24 -0000 1.6 @@ -3,11 +3,14 @@ W celu u³atwienia uruchomienia i testowania aplikacji wprowadzili¶my dodatkow± opcjê kompilacji. Polecenie \texttt{make debug} kompiluje program z dodatkowymi informacjami dla programu debuguj±cego, -a program podczas dzia³ania wypisuje na standardowe wyj¶cie dodatkowe -informacje. Testowanie aplikacji zosta³o przeprowadzone na stacji roboczej +a program podczas dzia³ania zapisuje w dzienniku systemowym dodatkowe +informacje. + +Testowanie aplikacji zosta³o przeprowadzone na stacji roboczej wyposa¿onej w system operacyjny RedHat w wersji 9.0. Obci±¿enie systemu by³o symulowane za pomoc± innych aplikacji (programu archiwizuj±cego dane, -programu odtwarzaj±cego film itp.). Testowe pliki konfiguracyjne zamieszczamy w za³±czniku~\ref{pliki}. +programu odtwarzaj±cego film itp.). Testowe pliki konfiguracyjne +zamieszczamy w za³±czniku~\ref{pliki}. Testowanie aplikacji podzielili¶my na $4$ g³ówne etapy: \begin{enumerate} @@ -61,16 +64,18 @@ oraz czy wznowione procesy dzia³aj± poprawnie (plik testowy: test2.conf); \item do procesów \texttt{sfwatch} wysy³ali¶my sygna³ \texttt{SIGTERM} koñcz±cy - ich dzia³anie; obserwowali¶my czy nie wp³ywa to na pracê pozosta³ych procesów oraz - czy liczba procesów korzystaj±cych z pamiêci dzielonej siê zmniejszy³a (polecenie \texttt{ipcs -sm}); + ich dzia³anie; obserwowali¶my czy nie wp³ywa to na pracê pozosta³ych procesów + oraz czy liczba procesów korzystaj±cych z pamiêci dzielonej siê zmniejszy³a + (polecenie \texttt{ipcs -sm}); \item do procesu \texttt{sffetch} wysy³ali¶my sygna³ \texttt{SIGTERM} koñcz±cy dzia³anie programu; obserwowali¶my czy koñczone s± wszystkie procesy i czy zasoby IPC s± zwalniane (polecenie \texttt{ipcs -sm}). \item - program uruchomili¶my z jedn± regu³± (plik testowy: test3.conf), która uruchamia³a program \texttt{mozilla}; - program ten trzeba zakoñczyæ aby regu³a mog³a byæ nadal monitorowna; obserwowali¶my nazwê procesu - (podczas wykonywania polecenia jest do niej dodawane s³owo \texttt{EXEC}). + program uruchomili¶my z jedn± regu³± (plik testowy: test3.conf), która + uruchamia³a program \texttt{mozilla}; program ten trzeba zakoñczyæ aby regu³a + mog³a byæ nadal monitorowna; obserwowali¶my nazwê procesu (podczas wykonywania + polecenia jest do niej dodawane s³owo \texttt{EXEC}). \end{itemize} \end{enumerate} Wszystkie b³êdy znalezione podczas testowania zosta³y usuniête. |
|
From: mkoperto <mko...@us...> - 2004-06-06 19:01:04
|
Update of /cvsroot/sysfence/sysfence/dokprojektlic In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28512 Modified Files: speckonstrukcyjna.tex Log Message: opisalem modulu w ktorych sie orientowalem Index: speckonstrukcyjna.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/speckonstrukcyjna.tex,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- speckonstrukcyjna.tex 6 Jun 2004 17:49:54 -0000 1.8 +++ speckonstrukcyjna.tex 6 Jun 2004 19:00:53 -0000 1.9 @@ -53,28 +53,103 @@ \texttt{CHILD} dla \textit{stwatch}) rozró¿nia dzia³anie funkcji dla ró¿nych procesów; \item \textit{void signals\_handling (int onoff)} -- funkcja blokuje (\texttt{SIGBLOCK}) lub odblokowuje - (\texttt{SIGUNBLOCK}) przyjmowanie sygna³ów; wykrzystywana jest przed wej¶ciem programu do sekcji krytycznej - (czyli opercji na pamiêci dzielonej) i po wyj¶ciu; + (\texttt{SIGUNBLOCK}) przyjmowanie sygna³ów; wykorzystywana jest przed wej¶ciem programu do sekcji krytycznej + (czyli operacji na pamiêci dzielonej) i po wyj¶ciu; \end{itemize} \subsubsection{Modu³ \textit{communication}} \begin{itemize} - \item \textit{int semaphore\_init (int val)} -- inicjalizacja pojedeyczego semafora; argument + \item \textit{int semaphore\_init (int val)} -- inicjalizacja pojedynczego semafora; argument \texttt{SEMAPHORE\_SET} lub \texttt{SEMAPHORE\_RESET} decyduje o jego pocz±tkowym stanie; funkcja zwraca \textit{semid}; - \item \textit{semaphore\_wait(int semid)} i \textit{semaphore\_post(int semid)} -- makra do opercji na semaforze; + \item \textit{semaphore\_wait(int semid)} i \textit{semaphore\_post(int semid)} -- makra do operacji na semaforze; \item \textit{int semaphore\_del (int semid)} -- dealokacja semafora; \item \textit{int shared\_mem\_init (int memsize)} -- inicjalizacja pamiêci dzielonej o rozmiarze \textit{memsize}; funkcja zwraca identyfikator pamiêci \textit{shmid}; - \item \textit{void *shared\_mem\_attach (int shmid)} -- przy³aczenie do pamiêci dzielonej o idetyfikatorze + \item \textit{void *shared\_mem\_attach (int shmid)} -- przy³±czenie do pamiêci dzielonej o identyfikatorze \textit{shmid}; funkcja zwraca wska¼nik do pocz±tku pamiêci \textit{shm}; \item \textit{void shared\_mem\_detach (void *shm)} -- od³±czenie od pamiêci; \item \textit{void shared\_mem\_del (int shmid)} -- usuniêcie pamiêci dzielonej; \end{itemize} +\subsubsection{Modu³ \textit{processtitle}} + +Idea tego modu³u zaczerpniêta zosta³a z kodu ¼ród³owego programu \textit{sendmail} (dok³adnie z pliku +sys/conf.c). +\begin{itemize} + \item \textit{void initproctitle (int argc, char **argv)} -- funkcja kopiuje obszar \textit{environ} w nowy + obszar pamiêci; zmienia wska¼nik \textit{environ} aby wskazywa³ na ten obszar; oryginalny obszar + zmiennych ¶rodowiskowych wykorzystywany jest do zwiêkszenia obszaru przeznaczonego na pamiêtanie + nazwy procesu; funkcja wyznacza te¿ maksymaln± d³ugo¶æ nazwy procesu, jest on pamiêtana jest w globalnej + zmiennej modu³u; + \item \textit{void setproctitle (int process, int state, const char *rulename)} -- ustawia tytu³ procesu; + \textit{process} - \texttt{MAIN\_PROCESS} lub \texttt{RULE\_PROCESS}; dozwolone stany (\textit{state}) + to \texttt{STATE\_STOPPED}, + \texttt{STATE\_NORMAL} lub \texttt{STATE\_EXEC}; \textit{rulename} jest wska¼nikiem na ³añcuch umieszczony w apostrofach; +\end{itemize} + +\subsubsection{Modu³ \textit{xalloc}} + +\begin{itemize} + \item \textit{void * xalloc (void * ptr, size\_t size)} -- pomocnicza funkcja do alokacji pamiêci, + je¶li wska¼nik \textit{ptr} ma warto¶æ ró¿n± od \texttt{NULL} obszar jest zwiêkszany; je¶li wyst±pi³ + b³±d podczac przydzielania pamiêci, funkcja koñczy dzia³anie programu z kodem \texttt{EXIT\_MEM}; +\end{itemize} + +\subsubsection{Modu³ \textit{exit}} + +\begin{itemize} + \item \textit{exit.h} -- zwiera definicjê kodów zakoñczenia programu: \texttt{EXIT\_OK}, + \texttt{EXIT\_IO}, \texttt{EXIT\_MEM}, \texttt{EXIT\_NOCONF}, \texttt{EXIT\_NORULE}, + \texttt{EXIT\_PARSE}, \texttt{EXIT\_VALUE}, \texttt{EXIT\_OPTION}, \texttt{EXIT\_SHM}, + \texttt{EXIT\_SEM}, \texttt{EXIT\_BUG}; + \item \textit{void bail\_out (int excode, const char *details)} -- koñczy dzia³anie programu z odpowiednim kodem; + \textit{details} jest dodatkow± informacj± wympisywan± na \textit{stderr}; +\end{itemize} + +\subsubsection{Modu³ \textit{cp2memory}} + +\begin{itemize} + \item \textit{void *cp\_list (void **buf, sf\_list *list)} i \textit{void *cp\_rule (void **buf, sf\_rule *rule)} -- + przekopiowuj± odpowiednie drzewiaste struktury do ci±g³ego bufora; +\end{itemize} + +\subsubsection{Modu³ \textit{conditions}} + +\begin{itemize} + \item \textit{int check\_atomic (sf\_atomic *at)} -- sprawdza warto¶æ wyra¿enia atomicznego; + \item \textit{int check\_expression (sf\_expression *ex)} -- sprawdza warto¶æ wyra¿enia \textit{ex}; +\end{itemize} + +\subsubsection{Modu³ \textit{mainloop}} + +\begin{itemize} + \item \textit{void rule\_watch\_loop (sf\_rule *rule)} -- g³ówna pêtla procesu \textit{sfwatch} + w której cyklicznie wywo³ywane + s± wszystkie funkcje; + \item \textit{void res\_probe\_loop (sf\_database *db)} -- g³ówna pêtla procesu \textit{sffetch}; +\end{itemize} + +\subsubsection{Modu³ \textit{sysfence}} + +Najwa¿niejsze funkcje wywo³ywane w pocz±tkowym okresie dzia³ania aplikacji to (wg. kolejno¶ci wywo³ywania): +\begin{itemize} + \item \textit{read\_config\_files ()}; + \item \textit{open\_files ()}; + \item \textit{daemon ()}; + \item \textit{semaphore\_init ()}; + \item \textit{shared\_mem\_init ()}; + \item \textit{shared\_mem\_attach ()}; + \item \textit{cp\_rule ()}; + \item \textit{fetch\_* ()}; + \item \textit{fork ()}; + \item \textit{signal\_init ()}; + \item \textit{initproctitle ()}; + \item \textit{rule\_*\_loop ()}; +\end{itemize} \subsection{Przep³yw danych} |
|
From: mkoperto <mko...@us...> - 2004-06-06 17:50:04
|
Update of /cvsroot/sysfence/sysfence/dokprojektlic In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15119 Modified Files: main.tex speckonstrukcyjna.tex Log Message: input -> include skoro od nowych stronmain.tex Index: speckonstrukcyjna.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/speckonstrukcyjna.tex,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- speckonstrukcyjna.tex 5 Jun 2004 15:15:21 -0000 1.7 +++ speckonstrukcyjna.tex 6 Jun 2004 17:49:54 -0000 1.8 @@ -45,6 +45,36 @@ \end{tabular} \end{table} +\subsubsection{Modu³ \textit{sighandlers}} + +\begin{itemize} + \item \textit{void signal\_init (int process)} -- funkcja inicjuje obs³ugê sygna³ów, + ustawia odpowiednie procedury ich obs³ugi; parametr (\texttt{PARENT} dla \textit{sfftch} lub + \texttt{CHILD} dla \textit{stwatch}) + rozró¿nia dzia³anie funkcji dla ró¿nych procesów; + \item \textit{void signals\_handling (int onoff)} -- funkcja blokuje (\texttt{SIGBLOCK}) lub odblokowuje + (\texttt{SIGUNBLOCK}) przyjmowanie sygna³ów; wykrzystywana jest przed wej¶ciem programu do sekcji krytycznej + (czyli opercji na pamiêci dzielonej) i po wyj¶ciu; +\end{itemize} + +\subsubsection{Modu³ \textit{communication}} + +\begin{itemize} + \item \textit{int semaphore\_init (int val)} -- inicjalizacja pojedeyczego semafora; argument + \texttt{SEMAPHORE\_SET} lub \texttt{SEMAPHORE\_RESET} + decyduje o jego pocz±tkowym stanie; funkcja zwraca \textit{semid}; + + \item \textit{semaphore\_wait(int semid)} i \textit{semaphore\_post(int semid)} -- makra do opercji na semaforze; + \item \textit{int semaphore\_del (int semid)} -- dealokacja semafora; + \item \textit{int shared\_mem\_init (int memsize)} -- inicjalizacja pamiêci dzielonej o rozmiarze \textit{memsize}; + funkcja zwraca identyfikator pamiêci \textit{shmid}; + \item \textit{void *shared\_mem\_attach (int shmid)} -- przy³aczenie do pamiêci dzielonej o idetyfikatorze + \textit{shmid}; funkcja zwraca wska¼nik do pocz±tku pamiêci \textit{shm}; + \item \textit{void shared\_mem\_detach (void *shm)} -- od³±czenie od pamiêci; + \item \textit{void shared\_mem\_del (int shmid)} -- usuniêcie pamiêci dzielonej; +\end{itemize} + + \subsection{Przep³yw danych} @@ -65,3 +95,4 @@ \includegraphics[scale=0.4]{przeplyw.eps} \caption{Przep³yw danych} \end{figure} + Index: main.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/main.tex,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- main.tex 5 Jun 2004 18:25:19 -0000 1.11 +++ main.tex 6 Jun 2004 17:49:54 -0000 1.12 @@ -21,22 +21,16 @@ \newpage % tu dodawac rozdzialy: -\input{wstep} -\newpage -\input{specuzytkownika} -\newpage -\input{wymagania} -\newpage -\input{speckonstrukcyjna} -\newpage -\input{testowanie} - -\newpage +\include{wstep} +\include{specuzytkownika} +\include{wymagania} +\include{speckonstrukcyjna} +\include{testowanie} % appendix \appendix %\input{tabele} -\input{gramatyka} +\include{gramatyka} \include{plikitestowe} % bibliography |
|
From: mkoperto <mko...@us...> - 2004-06-05 18:25:36
|
Update of /cvsroot/sysfence/sysfence/dokprojektlic In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13955 Modified Files: main.tex testowanie.tex Added Files: plikitestowe.tex Log Message: + pliki testowe, troche wiecej opisu --- NEW FILE: plikitestowe.tex --- \section{Pliki testowe} \label{pliki} \textbf{test1.conf} {\scriptsize \begin{verbatim} if "regula1" { la1 >= 5.0 and { { la5 > 3.0 and la5 < 5.0 } or { la15 > 2.0 and la15 < 5.0 } } } run 'echo "regula1"' if "regula2" { 20 >= nproc } run 'echo "regula2"' if "regula3" { 10 >= nproc "http" and la15 > 2.0 } run 'echo "regula3"' if "regula4" { freespace "/var" < 100M } run 'echo "regula4"' if "regula5" { freemem < 128M or swapused > 256M } run 'echo "regula4"' \end{verbatim} } \textbf{test2.conf} {\scriptsize \begin{verbatim} if "regula1" { la1 >= 0.1 } run 'echo "regula1"' if "regula2" { la1 >= 0.1 } run 'echo "regula2"' if "regula3" { la1 >= 0.1 } run 'echo "regula3"' \end{verbatim} } \textbf{test3.conf} {\scriptsize \begin{verbatim} if "regula1" { la1 >= 0.1 } run 'mozilla' \end{verbatim} } Index: testowanie.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/testowanie.tex,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- testowanie.tex 5 Jun 2004 16:16:28 -0000 1.4 +++ testowanie.tex 5 Jun 2004 18:25:21 -0000 1.5 @@ -5,9 +5,9 @@ kompiluje program z dodatkowymi informacjami dla programu debuguj±cego, a program podczas dzia³ania wypisuje na standardowe wyj¶cie dodatkowe informacje. Testowanie aplikacji zosta³o przeprowadzone na stacji roboczej -wyposarzonej w system operacyjny RedHat w wersji 9.0. Obci±¿enie systemu by³o -symulowane za pomoc± innych aplikacji (np. odtwarzanie filmu, sprawdzanie spójno¶ci dysków, -napisanych do tego specjalnie programów) +wyposa¿onej w system operacyjny RedHat w wersji 9.0. Obci±¿enie systemu by³o +symulowane za pomoc± innych aplikacji (programu archiwizuj±cego dane, +programu odtwarzaj±cego film itp.). Testowe pliki konfiguracyjne zamieszczamy w za³±czniku~\ref{pliki}. Testowanie aplikacji podzielili¶my na $4$ g³ówne etapy: \begin{enumerate} @@ -16,18 +16,20 @@ \item program podczas debugowania wypisuje na standardowe wyj¶cie ilo¶æ wczytanych regu³ oraz ich interpretacjê; testowanie polega³o na porównaniu tych danych - z informacjami zawartymi w plikach konfiguracyjnych; + z informacjami zawartymi w plikach konfiguracyjnych (plik testowy: test1.conf); \end{itemize} \item \textbf{testowanie monitorowania regu³ i podejmowania akcji} \begin{itemize} \item proces \texttt{sffetch} po pobraniu danych z systemu wypisuje je; - dane porównywali¶my z danym dostarczanymi przez program \texttt{top}; + dane porównywali¶my z danym dostarczanymi przez programy \texttt{top}; \item ka¿dy z procesów \texttt{sfwatch} po sprawdzeniu warunku wypisuje informacje czy zosta³ on spe³niony i czy akcja zosta³a wykonana; na podstawie tych danych okre¶lali¶my czy wyra¿enie zosta³o dobrze zinterpretowane; + regu³y testowe zosta³y tak dobrane aby przetestowaæ wszystkie rodzaje monitorowanych zasobów + (plik testowy: test1.conf); \end{itemize} \item \textbf{testowanie komunikacji IPC} @@ -47,22 +49,28 @@ prawid³owe dzia³anie programu by³oby zupe³nie przypadkowe; \end{itemize} - \item \textbf{testowanie obs³ugi sygna³ów} + \item \textbf{testowanie obs³ugi sygna³ów i zmiany nazw procesów} \begin{itemize} \item program uruchomili¶my z zestawem regu³, które by³y zawsze spe³nione; akcja ka¿dej regu³y polega³a na wypisaniu krótkiej informacji na standardowym wyj¶ciu; wysy³aj±c sygna³y \texttt{SIGUSR1} i - \texttt{SIGCONT} obserwowali¶my: informacje zwracane przez program - \texttt{ps} oraz czy wznowione procesy dzia³aj± poprawnie; + \texttt{SIGCONT} obserwowali¶my: informacje zwracane przez program \texttt{ps} + (w~szczególno¶ci nazwy procesów) + oraz czy wznowione procesy dzia³aj± poprawnie (plik testowy: test2.conf); \item do procesów \texttt{sfwatch} wysy³ali¶my sygna³ \texttt{SIGTERM} koñcz±cy - ich dzia³anie; obserwowali¶my czy nie wp³ywa to na pracê pozosta³ych procesów; + ich dzia³anie; obserwowali¶my czy nie wp³ywa to na pracê pozosta³ych procesów oraz + czy liczba procesów korzystaj±cych z pamiêci dzielonej siê zmniejszy³a (polecenie \texttt{ipcs -sm}); \item do procesu \texttt{sffetch} wysy³ali¶my sygna³ \texttt{SIGTERM} koñcz±cy dzia³anie programu; obserwowali¶my czy koñczone s± wszystkie procesy i czy zasoby IPC s± zwalniane (polecenie \texttt{ipcs -sm}). + \item + program uruchomili¶my z jedn± regu³± (plik testowy: test3.conf), która uruchamia³a program \texttt{mozilla}; + program ten trzeba zakoñczyæ aby regu³a mog³a byæ nadal monitorowna; obserwowali¶my nazwê procesu + (podczas wykonywania polecenia jest do niej dodawane s³owo \texttt{EXEC}). \end{itemize} \end{enumerate} Wszystkie b³êdy znalezione podczas testowania zosta³y usuniête. Index: main.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/main.tex,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- main.tex 5 Jun 2004 15:15:21 -0000 1.10 +++ main.tex 5 Jun 2004 18:25:19 -0000 1.11 @@ -37,6 +37,7 @@ \appendix %\input{tabele} \input{gramatyka} +\include{plikitestowe} % bibliography %\input{bibliography} |
|
From: mkoperto <mko...@us...> - 2004-06-05 16:16:38
|
Update of /cvsroot/sysfence/sysfence/dokprojektlic In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21935 Modified Files: specuzytkownika.tex testowanie.tex Log Message: cudzyslowy.., Index: testowanie.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/testowanie.tex,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- testowanie.tex 30 May 2004 11:06:23 -0000 1.3 +++ testowanie.tex 5 Jun 2004 16:16:28 -0000 1.4 @@ -4,12 +4,15 @@ dodatkow± opcjê kompilacji. Polecenie \texttt{make debug} kompiluje program z dodatkowymi informacjami dla programu debuguj±cego, a program podczas dzia³ania wypisuje na standardowe wyj¶cie dodatkowe -informacje. +informacje. Testowanie aplikacji zosta³o przeprowadzone na stacji roboczej +wyposarzonej w system operacyjny RedHat w wersji 9.0. Obci±¿enie systemu by³o +symulowane za pomoc± innych aplikacji (np. odtwarzanie filmu, sprawdzanie spójno¶ci dysków, +napisanych do tego specjalnie programów) Testowanie aplikacji podzielili¶my na $4$ g³ówne etapy: \begin{enumerate} \item \textbf{testowanie czytania plików konfiguracyjnych i tworzenia regu³} - \begin{itemize} + \begin{itemize} \item program podczas debugowania wypisuje na standardowe wyj¶cie ilo¶æ wczytanych regu³ oraz ich interpretacjê; testowanie polega³o na porównaniu tych danych Index: specuzytkownika.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/specuzytkownika.tex,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- specuzytkownika.tex 5 Jun 2004 15:58:15 -0000 1.10 +++ specuzytkownika.tex 5 Jun 2004 16:16:28 -0000 1.11 @@ -166,12 +166,12 @@ w³a¶cicielem oraz na stan procesu,np: \begin{itemize} - \item \texttt{nproc \"root\", \"http\"} -- zwróci liczbê procesów nale¿±cych do u¿ytkowników + \item \texttt{nproc ''root'', ''http''} -- zwróci liczbê procesów nale¿±cych do u¿ytkowników \textit{root} i \textit{http}. Mo¿na tak¿e u¿yæ warto¶ci numerycznej (bez cudzys³owu). \item \texttt{nproc uninterruptible, stopped} -- poda ilo¶æ procesów w stanie \textit{uninterruptible} (czekaj±ce na zakoñczenie operacji wej¶cia/wyj¶cia) lub \textit{stopped} (zatrzymane, np. ¶ledzone przez debugger). - \item \texttt{nproc \"root\", \"http\" uninterruptible, stopped} -- przekrój w.w. zbiorów + \item \texttt{nproc ''root'', ''http'' uninterruptible, stopped} -- przekrój w.w. zbiorów \end{itemize} |
|
From: Michal S. <em...@us...> - 2004-06-05 15:58:23
|
Update of /cvsroot/sysfence/sysfence/dokprojektlic In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17682 Modified Files: specuzytkownika.tex Log Message: + info o grsecurity/Openwall Index: specuzytkownika.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/specuzytkownika.tex,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- specuzytkownika.tex 5 Jun 2004 15:15:21 -0000 1.9 +++ specuzytkownika.tex 5 Jun 2004 15:58:15 -0000 1.10 @@ -186,3 +186,8 @@ \item zombie -- \texttt{zombie}, \texttt{defunct}, \end{itemize} +Dane dotycz±ce procesów mog± byæ niepe³ne gdy \emph{sysfence} zostanie uruchomiony z +prawami zwyk³ego u¿ytkownika na systemie z restrykcyjnymi prawami (np. Linux z ³at± +\emph{grsecurity} lub \emph{Openwall}). + + |
|
From: Michal S. <em...@us...> - 2004-06-05 15:51:53
|
Update of /cvsroot/sysfence/sysfence In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16579 Modified Files: sysfence.c Log Message: + info message when running with user privileges Index: sysfence.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/sysfence.c,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- sysfence.c 5 Jun 2004 13:48:35 -0000 1.28 +++ sysfence.c 5 Jun 2004 15:51:44 -0000 1.29 @@ -54,6 +54,7 @@ int total_rules_size = 0; int pid; + int uid; if (argc < 2) bail_out (EXIT_NOCONF, NULL); @@ -73,6 +74,13 @@ } syslog (LOG_INFO, "loaded %d rules", rulecount); + /* check if we're running with r00t uid */ + uid = getuid (); + if (uid) + syslog (LOG_INFO, + "running with UID %d, process data may be inaccurate", + uid); + /* open files for reading data and detach from console */ open_files (); |
|
From: mkoperto <mko...@us...> - 2004-06-05 15:15:30
|
Update of /cvsroot/sysfence/sysfence/dokprojektlic In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9774 Modified Files: main.tex speckonstrukcyjna.tex specuzytkownika.tex tabele.tex Log Message: przeniesione rysunki i tabelki Index: tabele.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/tabele.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- tabele.tex 31 May 2004 10:29:13 -0000 1.1 +++ tabele.tex 5 Jun 2004 15:15:21 -0000 1.2 @@ -1,75 +1,9 @@ \section{Tabele i ryciny} -\begin{table}[ht] -\centering -\caption{Komunikacja z \texttt{sffetch}} -\begin{tabular}{|c|p{8cm}|} \hline \label{tab:sffetch} -\textbf{Sygna³} & \multicolumn{1}{p{8cm}|}{\centering \textbf{Reakcja}} \\ \hline -\texttt{SIGUSR1} & zatrzymuje proces \texttt{sffetch} i wszystkie - \texttt{sfwatch}\\ \hline -\texttt{SIGCONT} & wznawia wszystkie procesy\\ \hline -\texttt{SIGTERM} & poprawnie koñczy prace programu: wysy³a \texttt{SIGTERM} do wszystkich - dzia³aj±cych procesów \texttt{sfwatch} oraz zwalnia wszystkie zasoby - (w szczególno¶ci IPC) \\ \hline -\end{tabular} -\end{table} %% -\begin{table}[ht] -\centering -\caption{Komunikacja z \texttt{sffwatch}} -\begin{tabular}{|c|p{8cm}|} \hline \label{tab:sfwatch} -\textbf{Sygna³} & \multicolumn{1}{p{8cm}|}{\centering \textbf{Reakcja}} \\ \hline -\texttt{SIGUSR1} & zatrzymuje monitorowanie regu³y \\ \hline -\texttt{SIGCONT} & wznawia monitorowanie regu³y\\ \hline -\texttt{SIGTERM} & poprawnie koñczy monitorowanie regu³y, pozosta³e - regu³y s± nadal monitorowane\\ \hline -\end{tabular} -\end{table} - -%% - -\begin{table}[ht] -\centering -\caption{Podzia³ na modu³y} -\begin{tabular}{|l|l|p{7cm}|} \hline \label{tab:moduly} -\centering \textbf{Katalog} & \textbf{Nazwa modu³u} & \multicolumn{1}{p{7cm}|}{\centering \textbf{Funkcja}}\\ \hline -/ & sysfence & g³ówny modu³ aplikacji (zwiera funkcjê \textit{main}); wczytanie regu³ z plików konfiguracyjnych; - inicjalizacja zasobów IPC (pamiêæ dzielona, semafor); utworzenie - procesów potomnych\\ \cline{2-3} - & mainloop & zawiera dwie funkcje: \textit{rule\_watch\_loop} i \textit{res\_probe\_loop} - s± to g³ówne funkcje procesów ¶ledz±cych regu³y i zasoby systemu; - ka¿da z funkcji zwiera nieskoñczon± pêtlê\\ \cline{2-3} - & datastruct & definicja struktur danych i podstawowych funkcji na nich - operuj±cych\\ \cline{2-3} - & getstats & funkcje pobieraj±ce z systemu informacje o zasobach\\ \cline{2-3} - & conditions & funkcje sprawdzaj±ce warunki w regu³ach\\ \cline{2-3} - & cp2memory & funkcje kopiuj±ce struktury danych (regu³y) do pamiêci dzielonej\\ \hline -parseopt/ & confread & wczytanie regu³ z plików\\ \cline{2-3} - & lex & przetwarza plik tekstowy z konfiguracj± - na strukturê tokenów\\ \cline{2-3} - & parse & tworzy regu³y\\ \cline{2-3} - & parseopt & rozpoznaje i zapisuje sta³e tekstowe i numeryczne z pliku tekstowego\\ \hline -sys/ & communiaction & obs³uga komunikacji IPC, funkcje do przydzielania/zwalniania - pamiêci dzielonej i semaforów\\ \cline{2-3} - & sighandlers & funkcje obs³ugi i blokowania sygna³ów\\ \cline{2-3} - & processtitle & zmiana nazw procesów wy¶wietlanych przez \texttt{ps wux}\\ \cline{2-3} - & log & logowanie danych\\ \cline{2-3} - & exit & funkcja koñcz±c± wykonywanie procesu \textit{bail\_out}; definicja kodów - wyj¶ciowych\\ \cline{2-3} - & xalloc & pomocnicza funkcja do alokacji pamiêci\\ \hline -\end{tabular} -\end{table} - %% -\begin{figure} -\label{ryc_przeplyw} -%\begin{center} - \includegraphics[angle=90,height=\textheight,width=\textwidth]{przeplyw.eps} - \caption{Przep³yw danych} -%\end{center} -\end{figure} Index: speckonstrukcyjna.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/speckonstrukcyjna.tex,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- speckonstrukcyjna.tex 31 May 2004 10:28:48 -0000 1.6 +++ speckonstrukcyjna.tex 5 Jun 2004 15:15:21 -0000 1.7 @@ -8,9 +8,44 @@ \texttt{-O2} kompilatora. \subsection{Modu³y} -W tablicy~\ref{tab:moduly} (strona \pageref{tab:moduly}) zamieszczamy +W tablicy~\ref{tab:moduly} +%(strona \pageref{tab:moduly}) +zamieszczamy podzia³ aplikacji na modu³y i ich funkcje. +\begin{table}[hp] +\centering +\caption{Podzia³ na modu³y} +\begin{tabular}{|l|l|p{7cm}|} \hline \label{tab:moduly} +\centering \textbf{Katalog} & \textbf{Nazwa modu³u} & \multicolumn{1}{p{7cm}|}{\centering \textbf{Funkcja}}\\ \hline +/ & sysfence & g³ówny modu³ aplikacji (zwiera funkcjê \textit{main}); wczytanie regu³ z plików konfiguracyjnych; + inicjalizacja zasobów IPC (pamiêæ dzielona, semafor); utworzenie + procesów potomnych\\ \cline{2-3} + & mainloop & zawiera dwie funkcje: \textit{rule\_watch\_loop} i \textit{res\_probe\_loop} + s± to g³ówne funkcje procesów ¶ledz±cych regu³y i zasoby systemu; + ka¿da z funkcji zwiera nieskoñczon± pêtlê\\ \cline{2-3} + & datastruct & definicja struktur danych i podstawowych funkcji na nich + operuj±cych\\ \cline{2-3} + & getstats & funkcje pobieraj±ce z systemu informacje o zasobach\\ \cline{2-3} + & conditions & funkcje sprawdzaj±ce warunki w regu³ach\\ \cline{2-3} + & cp2memory & funkcje kopiuj±ce struktury danych (regu³y) do pamiêci dzielonej\\ \hline +parseopt/ & confread & wczytanie regu³ z plików\\ \cline{2-3} + & lex & przetwarza plik tekstowy z konfiguracj± + na strukturê tokenów\\ \cline{2-3} + & parse & tworzy regu³y\\ \cline{2-3} + & parseopt & rozpoznaje i zapisuje sta³e tekstowe i numeryczne z pliku tekstowego\\ \hline +sys/ & communiaction & obs³uga komunikacji IPC, funkcje do przydzielania/zwalniania + pamiêci dzielonej i semaforów\\ \cline{2-3} + & sighandlers & funkcje obs³ugi i blokowania sygna³ów\\ \cline{2-3} + & processtitle & zmiana nazw procesów wy¶wietlanych przez \texttt{ps wux}\\ \cline{2-3} + & log & logowanie danych\\ \cline{2-3} + & exit & funkcja koñcz±c± wykonywanie procesu \textit{bail\_out}; definicja kodów + wyj¶ciowych\\ \cline{2-3} + & xalloc & pomocnicza funkcja do alokacji pamiêci\\ \hline +\end{tabular} +\end{table} + + \subsection{Przep³yw danych} Po uruchomieniu programu dokonywana jest analiza leksykalna i sk³adniowa pliku @@ -21,6 +56,12 @@ dzielonej. \emph{sffetch} ma tak¿e mo¿liwo¶æ kierowania prac± procesów potomnych za pomoc± sygna³ów (patrz strona \pageref{sygnaly}). -Przep³yw danych zilustrowany jest na rycinie~\ref{ryc_przeplyw} (strona -\pageref{ryc_przeplyw}). +Przep³yw danych zilustrowany jest na rycinie~\ref{ryc_przeplyw}. +%(strona \pageref{ryc_przeplyw}). +\begin{figure}[ht] + \label{ryc_przeplyw} + \centering + \includegraphics[scale=0.4]{przeplyw.eps} + \caption{Przep³yw danych} +\end{figure} Index: specuzytkownika.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/specuzytkownika.tex,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- specuzytkownika.tex 5 Jun 2004 13:49:45 -0000 1.8 +++ specuzytkownika.tex 5 Jun 2004 15:15:21 -0000 1.9 @@ -34,12 +34,40 @@ \label{sygnaly} Komunikacja z procesami odbywa siê za pomoc± sygna³ów. Przydatne sygna³y -zamieszczone s± w tablicach~\ref{tab:sffetch} i~\ref{tab:sfwatch} (strona -\pageref{tab:sffetch}). +zamieszczone s± w tablicach~\ref{tab:sffetch} i~\ref{tab:sfwatch}. +%(strona \pageref{tab:sffetch}). Pos³uguj±c siê sygna³ami mo¿na tymczasowo wstrzymaæ sprawdzanie ca³o¶ci lub pojedynczych regu³, a nastêpnie je wznowiæ bez konieczno¶ci wprowadzania zmian do plików konfiguracyjnych. +\begin{table}[ht] +\centering +\caption{Komunikacja z \texttt{sffetch}} +\begin{tabular}{|c|p{8cm}|} \hline \label{tab:sffetch} +\textbf{Sygna³} & \multicolumn{1}{p{8cm}|}{\centering \textbf{Reakcja}} \\ \hline +\texttt{SIGUSR1} & zatrzymuje proces \texttt{sffetch} i wszystkie + \texttt{sfwatch}\\ \hline +\texttt{SIGCONT} & wznawia wszystkie procesy\\ \hline +\texttt{SIGTERM} & poprawnie koñczy prace programu: wysy³a \texttt{SIGTERM} do wszystkich + dzia³aj±cych procesów \texttt{sfwatch} oraz zwalnia wszystkie zasoby + (w szczególno¶ci IPC) \\ \hline +\end{tabular} +\end{table} + +%% + +\begin{table}[ht] +\centering +\caption{Komunikacja z \texttt{sffwatch}} +\begin{tabular}{|c|p{8cm}|} \hline \label{tab:sfwatch} +\textbf{Sygna³} & \multicolumn{1}{p{8cm}|}{\centering \textbf{Reakcja}} \\ \hline +\texttt{SIGUSR1} & zatrzymuje monitorowanie regu³y \\ \hline +\texttt{SIGCONT} & wznawia monitorowanie regu³y\\ \hline +\texttt{SIGTERM} & poprawnie koñczy monitorowanie regu³y, pozosta³e + regu³y s± nadal monitorowane\\ \hline +\end{tabular} +\end{table} + Nie zaleca siê wysy³ania sygna³ów \texttt{SIGSTOP} i \texttt{SIGKILL} gdy¿ mog± spowodowaæ zak³ócenia w pracy pozosta³ych procesów aplikacji. Index: main.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/main.tex,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- main.tex 5 Jun 2004 13:49:45 -0000 1.9 +++ main.tex 5 Jun 2004 15:15:21 -0000 1.10 @@ -35,7 +35,7 @@ % appendix \appendix -\input{tabele} +%\input{tabele} \input{gramatyka} % bibliography |
|
From: Michal S. <em...@us...> - 2004-06-05 13:50:24
|
Update of /cvsroot/sysfence/sysfence/dokprojektlic In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28637 Added Files: gramatyka.tex Log Message: + gramatyka do zalacznika --- NEW FILE: gramatyka.tex --- \section{Opis gramatyki} \label{gramatyka} {\scriptsize \begin{verbatim} ruleset := rule [<string>] <block_expression> <rundata> [<logdata>] [<stepdata>] | rule [<string>] <block_expression> <logdata> [<rundata>] [<stepdata>] block_expression := { <expression> } expression := <atomic> [<log_op> <expression>] | <block_expression> [<log_op> <expression>] logdata := log [once] rundata := run [once] "command" stepdata := step <integer> atomic := <stat> <comp_op> <threshold> stat := la1 | la5 | la15 | memfree | memused | swapfree | swapused | <fs_cond> | <proc_cond> fs_cond := spacefree "path" | spaceavail "path" | spaceused "path" proc_cond := nproc [<user_list>] [<state_list>] user_list := <uid> [, <user_list>] | <username> [, <user_list>] state_list := <state> [, <state_list>] state := sleeping | running | stopped | uninterruptible | zombie log_op := && | || comp_op := = | < | > | <= | >= | != \end{verbatim} } |
|
From: Michal S. <em...@us...> - 2004-06-05 13:49:53
|
Update of /cvsroot/sysfence/sysfence/dokprojektlic In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28484 Modified Files: main.tex specuzytkownika.tex Log Message: + o uzywaniu ;) Index: specuzytkownika.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/specuzytkownika.tex,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- specuzytkownika.tex 31 May 2004 10:28:48 -0000 1.7 +++ specuzytkownika.tex 5 Jun 2004 13:49:45 -0000 1.8 @@ -48,34 +48,9 @@ Konfiguracja programu wczytywana jest z plików. Plik konfiguracyjny sk³ada siê z regu³. Ka¿da regu³a sk³ada siê z trzech czê¶ci: nazwy, warunku i akcji. Przyk³adowy plik z regu³ami dostêpny w \texttt{doc/example.conf}. Plik dodatkowo -zawiera skrócony opis sk³adni jêzyka regu³. Poni¿ej zamieszczamy orientacyjny -opis gramatyki. - -{\scriptsize \begin{verbatim} -ruleset := rule [<string>] <block_expression> <rundata> [<logdata>] [<stepdata>] - | rule [<string>] <block_expression> <logdata> [<rundata>] [<stepdata>] -block_expression := { <expression> } -expression := <atomic> [<log_op> <expression>] - | <block_expression> [<log_op> <expression>] -logdata := log [once] -rundata := run [once] "command" -stepdata := step <integer> -atomic := <stat> <comp_op> <threshold> -stat := la1 | la5 | la15 | memfree | memused | swapfree | swapused - | <fs_cond> | <proc_cond> -fs_cond := spacefree "path" - | spaceavail "path" - | spaceused "path" -proc_cond := nproc [<user_list>] [<state_list>] -user_list := <uid> [, <user_list>] - | <username> [, <user_list>] -state_list := <state> [, <state_list>] -state := sleeping | running | stopped | uninterruptible | zombie -log_op := && | || -comp_op := = | < | > | <= | >= | != -\end{verbatim} } +zawiera skrócony opis sk³adni jêzyka regu³. Orientacyjny opis gramatyki znajduje +siê na stronie~\pageref{gramatyka}. -Jest on dostêpny równie¿ w pliku \texttt{parseopt/grammar.txt}. Poni¿ej zamieszczamy kilka przyk³adowych regu³. {\footnotesize \begin{verbatim} @@ -112,7 +87,7 @@ program lub nawet skrypt. Sprawdzanie regu³y jest wstrzymane do chwili zakoñczenia tej akcji. -Parametrami monitorowanymi w wersji 0.12 programu s±: +Parametrami monitorowanymi w wersji 0.14 programu s±: \begin{itemize} \item \textbf{la1} -- obci±¿enie systemu w ostatniej minucie, \item \textbf{la5} -- obci±¿enie systemu w ci±gu ostatnich $5$ minut, @@ -120,9 +95,66 @@ \item \textbf{freemem} -- wolna pamiêæ RAM, \item \textbf{usedswap} -- wykorzystana pamiêæ RAM, \item \textbf{freeswap} -- wolna przestrzeñ wymiany (swap), - \item \textbf{useedswap} -- wykorzystana przesrzeñ wymiany, + \item \textbf{usedswap} -- wykorzystana przesrzeñ wymiany, \item \textbf{usedspace} -- zajêta przestrzeñ w systemie plików, \item \textbf{freespace} -- ilo¶æ wolnego miejsca dla systemu plików, \item \textbf{availspace} -- dostêpny obszar w systemie plików (ilo¶æ - wolnego miejsca po odjêciu przestrzeni zarezerwowanej dla superu¿ytkownika) + wolnego miejsca po odjêciu przestrzeni zarezerwowanej dla superu¿ytkownika), + \item \textbf{nproc} -- liczba procesów (tak¿e z selekcj± wg. u¿ytkownika + bêd±cego w³a¶cicielem oraz stanu, w jakim znajduje siê proces) +\end{itemize} + +\subsubsection{Obci±¿enie systemu} + +Obci±¿enie systemu okre¶lane jest przez warto¶æ zwan± \emph{load average} (w skrócie +\emph{LA}). +W uproszczeniu jest to ¶rednia liczba procesów czekaj±cych w kolejce do wykonania. +Je¶li warto¶æ \emph{load average} przekracza liczbê procesorów u¿ywanych przez +system, oznacza to ¿e maszyna jest przeci±¿ona. J±dro udostêpnia warto¶ci \emph{LA} +z ostatniej minuty, piêciu oraz piêtnastu miut, dziêki czemu mo¿na sprawdziæ czy +nadmierne obci±¿enie jest zjawiskiem chwilowym (co zdarza siê bardzo czêsto przy +normalnej pracy) czy d³ugotrwa³ym. + +\subsubsection{Ilo¶æ pamiêci RAM} + +Nawet gdy nie jest to konieczne, Linux wykorzystuje niemal¿e ca³± woln± przestrzeñ +RAM na bufory (\textit{cache}), by mieæ mo¿liwo¶æ szybkiego wykonania du¿ych +operacji na dysku. Zawarto¶æ wiêkszo¶ci z tych buforów jest zsynchronizowana z trwa³ym +no¶nikiem i w razie potrzeby wydzielenia pamiêci dla nowego procesu, mo¿e byæ +natychmiast zwolniona. Przy takiej strategii zarz±dzania, podawanie faktycznej ilo¶ci +wolnej pamiêci mija³oby siê z celem. Tak wiêc ilo¶æ wolnej pamiêci RAM podawana przez +\emph{sysfence} zawiera równie¿ wspomniane bufory dyskowe, a zajêtej - jedynie +przestrzeñ zajmowan± przez j±dro i dzia³aj±ce procesy. + +Nak³adaj±c dolne ograniczenie na ilo¶æ wolnej pamiêci, nale¿y mieæ na uwadze ¿e musz± +zmie¶ciæ siê w niej bufory, a ich zmniejszenie mo¿e bardzo negatywnie wp³yn±æ na szybko¶æ +operacji dyskowych. + +\subsubsection{Liczba procesów} + +Przy pomocy s³owa kluczowego \texttt{nproc} mo¿na monitorowaæ liczbê procesów. Bez +argumentów, \texttt{nproc} zwróci nam liczbê wszystkich aktualnie wykonywanych procesów +i w±tków. Mozliwe jest te¿ dokonanie selekcji ze wzglêdu na u¿ytkownika bêd±cego +w³a¶cicielem oraz na stan procesu,np: + +\begin{itemize} + \item \texttt{nproc \"root\", \"http\"} -- zwróci liczbê procesów nale¿±cych do u¿ytkowników + \textit{root} i \textit{http}. Mo¿na tak¿e u¿yæ warto¶ci numerycznej (bez cudzys³owu). + \item \texttt{nproc uninterruptible, stopped} -- poda ilo¶æ procesów w stanie + \textit{uninterruptible} (czekaj±ce na zakoñczenie operacji wej¶cia/wyj¶cia) lub + \textit{stopped} (zatrzymane, np. ¶ledzone przez debugger). + \item \texttt{nproc \"root\", \"http\" uninterruptible, stopped} -- przekrój w.w. zbiorów \end{itemize} + + +Stany procesów mog± byæ identyfikowane poni¿szymi s³owami kluczowymi: + + +\begin{itemize} + \item dzia³ajace (\textit{running}) -- \texttt{running}, \texttt{run}, + \item u¶pione (\textit{sleeping}) -- \texttt{sleeping}, \texttt{sleep}, + \item \textit{uninterruptible} -- \texttt{uninterruptible}, \texttt{unint}, \texttt{io}, + \item zatrzymane (\textit{stopped}) -- \texttt{stopped}, \texttt{stop}, \texttt{traced}, + \item zombie -- \texttt{zombie}, \texttt{defunct}, +\end{itemize} + Index: main.tex =================================================================== RCS file: /cvsroot/sysfence/sysfence/dokprojektlic/main.tex,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- main.tex 31 May 2004 10:28:48 -0000 1.8 +++ main.tex 5 Jun 2004 13:49:45 -0000 1.9 @@ -36,6 +36,7 @@ % appendix \appendix \input{tabele} +\input{gramatyka} % bibliography %\input{bibliography} |
|
From: Michal S. <em...@us...> - 2004-06-05 13:48:59
|
Update of /cvsroot/sysfence/sysfence In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28300 Modified Files: sysfence.c Log Message: * version Index: sysfence.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/sysfence.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -d -r1.27 -r1.28 --- sysfence.c 5 Jun 2004 12:49:40 -0000 1.27 +++ sysfence.c 5 Jun 2004 13:48:35 -0000 1.28 @@ -37,7 +37,7 @@ #include "sys/processtitle.h" const char *usage = - "sysfence v0.14, 01-03-2004\n" + "sysfence v0.14, 05-06-2004\n" "Usage: sysfence <config file> [<config file> ...] \n" "\n" "http://sysfence.sourceforge.net/\n" |
|
From: Michal S. <em...@us...> - 2004-06-05 12:49:50
|
Update of /cvsroot/sysfence/sysfence In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17425 Modified Files: Makefile datastruct.c getstats.c mainloop.c sysfence.c Log Message: * bugfixes. nproc seems to be working Index: getstats.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/getstats.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- getstats.c 4 Jun 2004 13:07:03 -0000 1.20 +++ getstats.c 5 Jun 2004 12:49:40 -0000 1.21 @@ -142,7 +142,7 @@ db->load[2] = atof (three); #ifdef DEBUG - printf ("fetch_la(): la1=%0.2f la5=%0.2f la15=%0.2f\n", + syslog (LOG_DEBUG, "fetch_la(): la1=%0.2f la5=%0.2f la15=%0.2f\n", db->load[0], db->load[1], db->load[2]); #endif } @@ -196,7 +196,7 @@ db->mem[VA_AVAIL] = db->mem[VA_FREE]; #ifdef DEBUG - printf ("fetch_mem(): memfree=%d memused=%d swapfree=%d swapused=%d\n", + syslog (LOG_DEBUG, "fetch_mem(): memfree=%llu memused=%llu swapfree=%llu swapused=%llu\n", db->mem[VA_FREE], db->mem[VA_USED], db->swap[VA_FREE], Index: Makefile =================================================================== RCS file: /cvsroot/sysfence/sysfence/Makefile,v retrieving revision 1.25 retrieving revision 1.26 diff -u -d -r1.25 -r1.26 --- Makefile 5 Jun 2004 10:40:14 -0000 1.25 +++ Makefile 5 Jun 2004 12:49:40 -0000 1.26 @@ -28,11 +28,22 @@ $(CC) -ggdb -o sysfence ${objects} ${parseopt} ${sys} debug: + $(CC) -DDEBUG -c conditions.c -o conditions.o + $(CC) -DDEBUG -c getstats.c -o getstats.o + $(CC) -DDEBUG -c datastruct.c -o datastruct.o + make -C parseopt/ debug + make -C sys/ debug + $(CC) -DDEBUG -c mainloop.c -o mainloop.o + $(CC) -DDEBUG -c cp2memory.c -o cp2memory.o + $(CC) -DDEBUG -c sysfence.c -o sysfence.o + $(CC) -o sysfence ${objects} ${parseopt} ${sys} + +debugdb: $(CC) -DDEBUG -ggdb -c conditions.c -o conditions.o $(CC) -DDEBUG -ggdb -c getstats.c -o getstats.o $(CC) -DDEBUG -ggdb -c datastruct.c -o datastruct.o - make -C parseopt/ debug - make -C sys/ debug + make -C parseopt/ debugdb + make -C sys/ debugdb $(CC) -DDEBUG -ggdb -c mainloop.c -o mainloop.o $(CC) -DDEBUG -ggdb -c cp2memory.c -o cp2memory.o $(CC) -DDEBUG -ggdb -c sysfence.c -o sysfence.o Index: datastruct.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/datastruct.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- datastruct.c 5 Jun 2004 10:46:29 -0000 1.11 +++ datastruct.c 5 Jun 2004 12:49:40 -0000 1.12 @@ -18,6 +18,7 @@ #include <stdlib.h> #include <string.h> #include "sys/xalloc.h" +#include "sys/users.h" #include "parseopt/lex.h" #include "datastruct.h" #ifdef DEBUG @@ -129,15 +130,11 @@ * used to register new paths while parsing config file */ sf_list *l = *hd; - sf_fs_stat *e; + sf_fs_stat *e; #ifdef DEBUG - if (!hd) - syslog (LOG_DEBUG, "add_fs_entry_to_list(NULL, %s)", path); - else if (! l) - syslog (LOG_DEBUG, "add_fs_entry_to_list(%x -> NULL, %s)", hd, path); - else - syslog (LOG_DEBUG, "add_fs_entry_to_list(%x -> %x, %s)", hd, l, path); + if (! l) + syslog (LOG_DEBUG, "add_fs_entry_to_list: %s", path); #endif if (! l) { @@ -157,9 +154,6 @@ e = (sf_fs_stat *) l->el; /* do not insert duplicates */ -#ifdef DEBUG - syslog (LOG_DEBUG, "? %s == %s : %d", e->path, path, strcmp (e->path, path)); -#endif if (strcmp (e->path, path) == 0) return; add_fs_entry_to_list (&(l->next), path); @@ -170,17 +164,10 @@ /* finds an entry in list of paths being watched */ sf_fs_stat *st; -#ifdef DEBUG - syslog (LOG_DEBUG, "get_fs_entry_from_list(%x, %s)", hd, path); -#endif - // not found if (! hd) return NULL; st = (sf_fs_stat *) hd->el; -#ifdef DEBUG - syslog (LOG_DEBUG, " +-- list element: %s)", st->path); -#endif if (strcmp (st->path, path) == 0) return st; else return get_fs_entry_from_list (hd->next, path); } @@ -191,7 +178,7 @@ #ifdef DEBUG syslog (LOG_DEBUG, - "checking [%s] == [%s]", + "equal_defs [%s] == [%s]", def_2_string (d1), def_2_string (d2) ); @@ -270,7 +257,7 @@ case ST_PROC: snprintf (buf, STRBUF, - "nproc (uid(s): %s) (state: %d)", + "nproc %sstate: %d", uids_2_str (def->arg[0].uids), def->arg[1].procstates ); @@ -283,17 +270,30 @@ char * uids_2_str (sf_list *hd) { + uid_t uid; char *buf = (char *) xalloc (NULL, STRBUF + 1), - *buf2; + *buf2, + *uname; *buf = '\0'; if (hd) { + uid = *((uid_t *) (hd->el)); buf2 = uids_2_str (hd->next); + + /* try to get username */ + uname = uid2username (uid); + if (!uname) { + /* no username? print UID */ + uname = (char *) xalloc (NULL, STRBUF + 1); + snprintf (uname, STRBUF, "%d", uid); + } + if (*buf2) - snprintf (buf, STRBUF, "%d,%s", *((uid_t *) (hd->el)), buf2); + snprintf (buf, STRBUF, "%s,%s", uname, buf2); else - snprintf (buf, STRBUF, "%d", *((uid_t *) (hd->el))); + snprintf (buf, STRBUF, "%s ", uname); free (buf2); } return buf; } + Index: mainloop.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/mainloop.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- mainloop.c 4 Jun 2004 13:07:03 -0000 1.16 +++ mainloop.c 5 Jun 2004 12:49:40 -0000 1.17 @@ -26,6 +26,9 @@ #include "mainloop.h" #include "sys/processtitle.h" #include "sys/sighandlers.h" +#ifdef DEBUG +#include <syslog.h> +#endif int step = 10; @@ -43,9 +46,6 @@ signals_handling (SIGUNBLOCK); if (rule->hit) { -#ifdef DEBUG - printf ("Rule @%x hit.\n", (int) rule); -#endif /* first - log if neccessary */ if (rule->log != NULL) { if (! (rule->log->once && rule->prevhit)) { @@ -54,9 +54,6 @@ log_rulehit (rule); semaphore_post (semid); signals_handling (SIGUNBLOCK); -#ifdef DEBUG - printf ("rule logged\n"); -#endif } } @@ -66,14 +63,11 @@ setproctitle (RULE_PROCESS, STATE_EXEC, rule->name); system (rule->run->command); setproctitle (RULE_PROCESS, STATE_NORMAL, rule->name); -#ifdef DEBUG - printf ("executed '%s'\n", rule->run->command); -#endif } } } else { #ifdef DEBUG - printf ("Rule @%x NOT hit.\n", (int) rule); + syslog (LOG_DEBUG, "Rule @%x NOT hit.\n", (int) rule); #endif } Index: sysfence.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/sysfence.c,v retrieving revision 1.26 retrieving revision 1.27 diff -u -d -r1.26 -r1.27 --- sysfence.c 4 Jun 2004 13:07:03 -0000 1.26 +++ sysfence.c 5 Jun 2004 12:49:40 -0000 1.27 @@ -55,10 +55,6 @@ int pid; -#ifdef DEBUG - sf_rule *rl; -#endif - if (argc < 2) bail_out (EXIT_NOCONF, NULL); log_start (); @@ -72,7 +68,9 @@ /* count rules */ rulecount = 0; - while (*(ruletab + rulecount) != NULL) rulecount ++; + while (*(ruletab + rulecount) != NULL) { + rulecount ++; + } syslog (LOG_INFO, "loaded %d rules", rulecount); /* open files for reading data and detach from console */ |
|
From: Michal S. <em...@us...> - 2004-06-05 12:49:49
|
Update of /cvsroot/sysfence/sysfence/parseopt In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17425/parseopt Modified Files: Makefile confread.c lex.c lex.h parse.c parse.h Log Message: * bugfixes. nproc seems to be working Index: lex.h =================================================================== RCS file: /cvsroot/sysfence/sysfence/parseopt/lex.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- lex.h 10 May 2004 13:53:17 -0000 1.6 +++ lex.h 5 Jun 2004 12:49:41 -0000 1.7 @@ -63,8 +63,6 @@ */ tokdata next_token (); -#ifdef DEBUG char * tok2string (token t); -#endif /* $Id$ */ Index: parse.h =================================================================== RCS file: /cvsroot/sysfence/sysfence/parseopt/parse.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- parse.h 6 Feb 2004 22:55:59 -0000 1.4 +++ parse.h 5 Jun 2004 12:49:41 -0000 1.5 @@ -25,11 +25,7 @@ * Functions */ -#ifdef DEBUG void * parse_error (tokdata *tok, const char *func, const char *desc); -#else -void * parse_error (tokdata *tok); -#endif parserdata * get_logdata (tokdata *tok); parserdata * get_rundata (tokdata *tok); parserdata * expression_decompose (parserdata *left); Index: parse.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/parseopt/parse.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- parse.c 4 Jun 2004 13:07:04 -0000 1.18 +++ parse.c 5 Jun 2004 12:49:41 -0000 1.19 @@ -24,22 +24,14 @@ #include "../conditions.h" #include "parse.h" #include "../sys/users.h" -#ifdef DEBUG #include <syslog.h> -#include "../sys/log.h" -#endif #define ERRMSGBUF 128 -#ifdef DEBUG void * parse_error (tokdata *tok, const char *func, const char *desc) -#else -void * parse_error (tokdata *tok) -#endif { char *buf = (char *) xalloc (NULL, ERRMSGBUF); -#ifdef DEBUG snprintf ( buf, ERRMSGBUF - 1, @@ -49,14 +41,6 @@ func, desc ); -#else - snprintf ( - buf, - ERRMSGBUF - 1, - "at line %d", - tok->line - ); -#endif bail_out (EXIT_PARSE, buf); } @@ -82,17 +66,14 @@ * logdata := log [once] * */ - parserdata *res; - sf_logdata *log; /* helper */ - + sf_logdata *log; + parserdata *res = (parserdata *) xalloc (NULL, sizeof (parserdata)); + if (tok->type != KW_LOG) return NULL; - tok ++; - - /* that's log data. initialize structures */ - res = (parserdata *) xalloc (NULL, sizeof (parserdata)); - res->parsed = xalloc (NULL, sizeof (sf_logdata)); - log = (sf_logdata *) res->parsed; + + log = (sf_logdata *) xalloc (NULL, sizeof (sf_logdata)); + res->parsed = (void *) log; if (tok->type == KW_ONCE) { log->once = 1; tok ++; @@ -109,9 +90,8 @@ * rundata := run [once] "command" * */ -#ifdef DEBUG const char *thisfuncname = "get_rundata()"; -#endif + parserdata *res; sf_rundata *run; /* helper */ @@ -129,11 +109,7 @@ } else run->once = 0; if (tok->type != VA_STR) -#ifdef DEBUG parse_error (tok, thisfuncname, "run arg not string"); -#else - parse_error (tok); -#endif run->command = tok->val; tok ++; @@ -148,9 +124,8 @@ * stepdata := step <integer> * */ -#ifdef DEBUG const char *thisfuncname = "get_step()"; -#endif + parserdata *res = (parserdata *) xalloc (NULL, sizeof (parserdata)); res->parsed = xalloc (NULL, sizeof (unsigned int)); @@ -165,11 +140,7 @@ tok ++; if (tok->type != VA_INT) -#ifdef DEBUG parse_error (tok, thisfuncname, "step val not int"); -#else - parse_error (tok); -#endif res->parsed = tok->val; tok ++; @@ -184,9 +155,8 @@ parserdata * expression_decompose (parserdata *left) { -#ifdef DEBUG const char *thisfuncname = "expression_decompose()"; -#endif + sf_expression *resexp; parserdata *right, *res; tokdata *tok = left->ptr; @@ -207,11 +177,7 @@ */ right = get_expression (tok); if (right == NULL) -#ifdef DEBUG - parse_error (tok, thisfuncname, "no right arg"); -#else - parse_error (tok); -#endif + parse_error (tok, thisfuncname, "no right arg"); /* second argument is ok */ resexp->arg2 = right->parsed; res->ptr = right->ptr; @@ -228,9 +194,7 @@ * expression := <atomic> [<op> <expression>] * | <block_expression> [<op> <expression>] */ -#ifdef DEBUG const char *thisfuncname = "get_expression()"; -#endif parserdata *left; @@ -242,20 +206,14 @@ if (left != NULL) /* this is an atomic rule */ return expression_decompose (left); -#ifdef DEBUG parse_error (tok, thisfuncname, "neither block nor atomic"); -#else - parse_error (tok); -#endif } sf_list * get_uid_list_rec (tokdata **tok) { sf_list *res; uid_t *tmpuid; -#ifdef DEBUG char *thisfuncname = "get_uid_list_rec()"; -#endif switch ((*tok)->type) { case VA_INT: @@ -265,11 +223,7 @@ case VA_STR: tmpuid = username2uid ((char *) (*tok)->val); if (!tmpuid) { -#ifdef DEBUG parse_error (*tok, thisfuncname, "invalid username"); -#else - parse_error (*tok); -#endif } break; default: @@ -293,7 +247,7 @@ parserdata * get_uid_list (tokdata *tok) { - parserdata *res; + parserdata *res = (parserdata *) xalloc (NULL, sizeof (parserdata)); sf_list *list = get_uid_list_rec (&tok); res->ptr = tok - 1; @@ -301,9 +255,10 @@ return res; } -char get_states_rec (tokdata **tok) +char get_states_rec (tokdata **tok, int first) { char thisstate = 0; + char *thisfuncname = "get_states_rec()"; switch ((*tok)->type) { case PR_RUN: @@ -322,7 +277,11 @@ thisstate = PROC_ZOMBIE; break; default: - return 0; + /* we have already read some state descriptor(s) + * and separator. so we must have another state + * description here */ + if (!first) parse_error (*tok, thisfuncname, "expecting stste descriptor"); + else return 0; } *tok = *tok + 1; @@ -332,7 +291,7 @@ * go, fetch next state */ *tok = *tok + 1; - thisstate |= get_states_rec (tok); + thisstate |= get_states_rec (tok, 0); } return thisstate; @@ -343,7 +302,7 @@ parserdata *res = (parserdata *) xalloc (NULL, sizeof (parserdata)); char *states = (char *) xalloc (NULL, sizeof (char)); - *states = get_states_rec (&tok); + *states = get_states_rec (&tok, 1); if (*states == 0) *states = PROC_ANY; res->ptr = tok; @@ -353,9 +312,7 @@ parserdata * get_atomic (tokdata *tok) { -#ifdef DEBUG const char *thisfuncname = "get_atomic()"; -#endif sf_atomic *at = (sf_atomic *) xalloc (NULL, sizeof (sf_atomic)); tokdata *var = tok, *arg1 = NULL, @@ -370,7 +327,6 @@ switch (var->type) { - // temporary hack ? case ID_LA1: case ID_LA5: case ID_LA15: @@ -496,11 +452,7 @@ case ID_FSAVAIL: case ID_FSUSED: if (arg1->type != VA_STR) { -#ifdef DEBUG parse_error (tok, thisfuncname, "no path given"); -#else - parse_error (tok); -#endif } /* register fs in database */ add_fs_entry_to_list (&tmp_fs_db, (char *) arg1->val); @@ -519,11 +471,7 @@ case CO_GT: break; default: -#ifdef DEBUG - parse_error (tok, thisfuncname, "invalid op"); -#else - parse_error (tok); -#endif + parse_error (tok, thisfuncname, "invalid operator"); } /* check value type */ @@ -542,11 +490,7 @@ if (((at->thresh.type == INTEGER) && (val->type != VA_SIZ)) || ((at->thresh.type == DOUBLE) && (val->type != VA_DBL))) -#ifdef DEBUG parse_error (val, thisfuncname, "type mismatch"); -#else - parse_error (val); -#endif /* copy threshold value */ at->thresh.ptr = val->val; @@ -581,9 +525,7 @@ * */ -#ifdef DEBUG const char *thisfuncname = "get_block_expression()"; -#endif parserdata *expr; @@ -595,11 +537,7 @@ expr = get_expression (tok); if (expr == NULL) return NULL; if (expr->ptr->type != BL_END) -#ifdef DEBUG parse_error (tok, thisfuncname, "block not closed"); -#else - parse_error (tok); -#endif expr->ptr ++; return expr; @@ -613,9 +551,7 @@ * | 'if' [<string>] <block_expression> <logdata> [<rundata>] */ -#ifdef DEBUG const char *thisfuncname = "get_ruleset()"; -#endif int i; /* our result data */ @@ -640,33 +576,23 @@ /* ruleset begins with IF */ if (tok->type != KW_IF) -#ifdef DEBUG parse_error (tok, thisfuncname, "no if keyword"); -#else - parse_error (tok); -#endif else tok ++; /* then we have rule name */ if (tok->type == VA_STR) { rlst->name = tok->val; } else { -#ifdef DEBUG parse_error (tok, thisfuncname, "no rule name"); -#else - parse_error (tok); -#endif } tok ++; + syslog (LOG_DEBUG, "bbparsed=%x", res->parsed); /* next should be expression in block */ tmp = get_block_expression (tok); if (tmp == NULL) -#ifdef DEBUG parse_error (tok, thisfuncname, "no expr block"); -#else - parse_error (tok); -#endif + syslog (LOG_DEBUG, "pbparsed=%x", res->parsed); /* save expression and skip to next token */ rlst->expr = (sf_expression *) tmp->parsed; @@ -676,11 +602,7 @@ log = get_logdata (tok); /* no log or run data? */ if ((run == NULL) && (log == NULL)) -#ifdef DEBUG - parse_error (tok, thisfuncname, "no action"); -#else - parse_error (tok); -#endif + parse_error (tok, thisfuncname, "no action defined"); /* this is full ruleset now but we try to get next action data */ if (run != NULL) { Index: confread.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/parseopt/confread.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- confread.c 26 May 2004 17:54:53 -0000 1.6 +++ confread.c 5 Jun 2004 12:49:41 -0000 1.7 @@ -26,6 +26,7 @@ #include <stdlib.h> #include <errno.h> #include <fcntl.h> +#include <syslog.h> #define RULESETS 64 @@ -40,7 +41,7 @@ flen = lseek (fha, 0, SEEK_END); lseek (fha, 0, SEEK_SET); #ifdef DEBUG - printf ("%s: %d bytes to read\n", fname, flen); + syslog (LOG_DEBUG, "%s: %d bytes to read\n", fname, flen); #endif buf = (char *) xalloc (NULL, flen + 1); @@ -102,7 +103,7 @@ while (1) { /* get rulesets */ rule = get_ruleset (tok); - if (rule == NULL) break; + if (!rule) break; tok = rule->ptr; *(set + setpos) = (sf_rule *) rule->parsed; setpos ++; Index: lex.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/parseopt/lex.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- lex.c 31 May 2004 14:10:06 -0000 1.11 +++ lex.c 5 Jun 2004 12:49:41 -0000 1.12 @@ -66,7 +66,6 @@ unsigned int linenum = 1; -#ifdef DEBUG char * tok2string (token t) { switch (t) { @@ -109,7 +108,6 @@ case END: return "END"; } } -#endif /* * Error reporting function. Index: Makefile =================================================================== RCS file: /cvsroot/sysfence/sysfence/parseopt/Makefile,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- Makefile 5 Jun 2004 10:40:14 -0000 1.10 +++ Makefile 5 Jun 2004 12:49:40 -0000 1.11 @@ -9,6 +9,11 @@ gcc -c -ggdb confread.c -o confread.o debug: + gcc -c -DDEBUG lex.c -o lex.o + gcc -c -DDEBUG parse.c -o parse.o + gcc -c -DDEBUG confread.c -o confread.o + +debugdb: gcc -c -ggdb -DDEBUG lex.c -o lex.o gcc -c -ggdb -DDEBUG parse.c -o parse.o gcc -c -ggdb -DDEBUG confread.c -o confread.o |
|
From: Michal S. <em...@us...> - 2004-06-05 12:49:49
|
Update of /cvsroot/sysfence/sysfence/sys In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17425/sys Modified Files: Makefile log.c Log Message: * bugfixes. nproc seems to be working Index: log.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/sys/log.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- log.c 4 Jun 2004 13:07:04 -0000 1.4 +++ log.c 5 Jun 2004 12:49:41 -0000 1.5 @@ -36,11 +36,7 @@ thisbuf = (char *) xalloc (NULL, STRBUF + 1); defbuf = def_2_string ((sf_stat_def *) hd->el); -#ifdef DEBUG - val = get_stat_value ((sf_stat_def *) hd->el); -#else val = get_stat_value ((sf_stat_def *) hd->el); -#endif #ifdef DEBUG syslog (LOG_DEBUG, "%s = type: %x, ptr: %x", Index: Makefile =================================================================== RCS file: /cvsroot/sysfence/sysfence/sys/Makefile,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Makefile 5 Jun 2004 10:40:14 -0000 1.3 +++ Makefile 5 Jun 2004 12:49:41 -0000 1.4 @@ -20,6 +20,15 @@ $(CC) -c -ggdb users.c -o users.o debug: + $(CC) -c -DDEBUG exit.c -o exit.o + $(CC) -c -DDEBUG log.c -o log.o + $(CC) -c -DDEBUG xalloc.c -o xalloc.o + $(CC) -c -DDEBUG communication.c -o communication.o + $(CC) -c -DDEBUG processtitle.c -o processtitle.o + $(CC) -c -DDEBUG sighandlers.c -o sighandlers.o + $(CC) -c -DDEBUG users.c -o users.o + +debugdb: $(CC) -c -ggdb -DDEBUG exit.c -o exit.o $(CC) -c -ggdb -DDEBUG log.c -o log.o $(CC) -c -ggdb -DDEBUG xalloc.c -o xalloc.o |
|
From: Michal S. <em...@us...> - 2004-06-05 10:46:37
|
Update of /cvsroot/sysfence/sysfence In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30089 Modified Files: datastruct.c Log Message: * BUGFIX: memory leak + removed trailing ',' Index: datastruct.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/datastruct.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- datastruct.c 4 Jun 2004 13:07:03 -0000 1.10 +++ datastruct.c 5 Jun 2004 10:46:29 -0000 1.11 @@ -289,7 +289,11 @@ *buf = '\0'; if (hd) { buf2 = uids_2_str (hd->next); - snprintf (buf, STRBUF, "%d,%s", *((uid_t *) (hd->el)), buf2); + if (*buf2) + snprintf (buf, STRBUF, "%d,%s", *((uid_t *) (hd->el)), buf2); + else + snprintf (buf, STRBUF, "%d", *((uid_t *) (hd->el))); + free (buf2); } return buf; } |
|
From: Michal S. <em...@us...> - 2004-06-05 10:40:23
|
Update of /cvsroot/sysfence/sysfence/parseopt In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28981/parseopt Modified Files: Makefile Log Message: + gdb target added Index: Makefile =================================================================== RCS file: /cvsroot/sysfence/sysfence/parseopt/Makefile,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- Makefile 27 Feb 2004 11:20:11 -0000 1.9 +++ Makefile 5 Jun 2004 10:40:14 -0000 1.10 @@ -2,9 +2,16 @@ gcc -c lex.c -o lex.o gcc -c parse.c -o parse.o gcc -c confread.c -o confread.o + +gdb: + gcc -c -ggdb lex.c -o lex.o + gcc -c -ggdb parse.c -o parse.o + gcc -c -ggdb confread.c -o confread.o + debug: gcc -c -ggdb -DDEBUG lex.c -o lex.o gcc -c -ggdb -DDEBUG parse.c -o parse.o gcc -c -ggdb -DDEBUG confread.c -o confread.o + clean: rm -f *.o |
|
From: Michal S. <em...@us...> - 2004-06-05 10:40:22
|
Update of /cvsroot/sysfence/sysfence/sys In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28981/sys Modified Files: Makefile Log Message: + gdb target added Index: Makefile =================================================================== RCS file: /cvsroot/sysfence/sysfence/sys/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Makefile 3 Jun 2004 22:00:42 -0000 1.2 +++ Makefile 5 Jun 2004 10:40:14 -0000 1.3 @@ -10,6 +10,15 @@ $(CC) -c $(CFLAGS) sighandlers.c -o sighandlers.o $(CC) -c $(CFLAGS) users.c -o users.o +gdb: + $(CC) -c -ggdb exit.c -o exit.o + $(CC) -c -ggdb log.c -o log.o + $(CC) -c -ggdb xalloc.c -o xalloc.o + $(CC) -c -ggdb communication.c -o communication.o + $(CC) -c -ggdb processtitle.c -o processtitle.o + $(CC) -c -ggdb sighandlers.c -o sighandlers.o + $(CC) -c -ggdb users.c -o users.o + debug: $(CC) -c -ggdb -DDEBUG exit.c -o exit.o $(CC) -c -ggdb -DDEBUG log.c -o log.o |
|
From: Michal S. <em...@us...> - 2004-06-05 10:40:22
|
Update of /cvsroot/sysfence/sysfence In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28981 Modified Files: Makefile Log Message: + gdb target added Index: Makefile =================================================================== RCS file: /cvsroot/sysfence/sysfence/Makefile,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- Makefile 3 Jun 2004 22:03:48 -0000 1.24 +++ Makefile 5 Jun 2004 10:40:14 -0000 1.25 @@ -16,6 +16,17 @@ all: sysfence +gdb: + $(CC) -ggdb -c conditions.c -o conditions.o + $(CC) -ggdb -c getstats.c -o getstats.o + $(CC) -ggdb -c datastruct.c -o datastruct.o + make -C parseopt/ gdb + make -C sys/ gdb + $(CC) -ggdb -c mainloop.c -o mainloop.o + $(CC) -ggdb -c cp2memory.c -o cp2memory.o + $(CC) -ggdb -c sysfence.c -o sysfence.o + $(CC) -ggdb -o sysfence ${objects} ${parseopt} ${sys} + debug: $(CC) -DDEBUG -ggdb -c conditions.c -o conditions.o $(CC) -DDEBUG -ggdb -c getstats.c -o getstats.o @@ -26,10 +37,12 @@ $(CC) -DDEBUG -ggdb -c cp2memory.c -o cp2memory.o $(CC) -DDEBUG -ggdb -c sysfence.c -o sysfence.o $(CC) -ggdb -o sysfence ${objects} ${parseopt} ${sys} + clean: make -C parseopt/ clean make -C sys/ clean rm -f *.o sysfence + install: install -d $(DESTDIR)$(PREFIX)/bin install -d $(DESTDIR)/usr/share/doc/sysfence |
|
From: Michal S. <em...@us...> - 2004-06-04 13:07:23
|
Update of /cvsroot/sysfence/sysfence In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4613 Modified Files: datastruct.c getstats.c mainloop.c sysfence.c Log Message: + nproc handling so far, works only with -DDEBUG and crashes without it. don't know why Index: getstats.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/getstats.c,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- getstats.c 31 May 2004 14:10:06 -0000 1.19 +++ getstats.c 4 Jun 2004 13:07:03 -0000 1.20 @@ -53,18 +53,21 @@ sf_value get_nproc (sf_stat_def *def, sf_database *db) { - long int *nproc = (long int *) xalloc (NULL, sizeof (long int)); - sf_value res = { INTEGER, nproc }; - sf_list *uids = def->arg[0].uids; - char statemask = def->arg[1].procstates; + long long int *nproc = (long long int *) xalloc (NULL, sizeof (long int)); + sf_value res = { INTEGER, nproc }; + sf_list *uids = def->arg[0].uids; + char statemask = def->arg[1].procstates; if (! uids) *nproc = get_proc_num (db, statemask, NULL); + else *nproc = 0; while (uids) { - *nproc += get_proc_num (db, statemask, (uid_t *) uids->el); + *nproc = *nproc + get_proc_num (db, statemask, (uid_t *) uids->el); uids = uids->next; } - +#ifdef DEBUG + syslog (LOG_DEBUG, "%s = %lu", def_2_string (def), *nproc); +#endif return res; } @@ -284,9 +287,11 @@ state = PROC_ZOMBIE; break; case 'T': - case 'D': state = PROC_STOP; break; + case 'D': + state = PROC_UNINT; + break; default: state = PROC_UNKNOWN; } Index: datastruct.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/datastruct.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- datastruct.c 3 Jun 2004 23:42:41 -0000 1.9 +++ datastruct.c 4 Jun 2004 13:07:03 -0000 1.10 @@ -270,8 +270,8 @@ case ST_PROC: snprintf (buf, STRBUF, - "nproc (uid[0]: %s) (state: %d)", - "NIY", + "nproc (uid(s): %s) (state: %d)", + uids_2_str (def->arg[0].uids), def->arg[1].procstates ); default: Index: sysfence.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/sysfence.c,v retrieving revision 1.25 retrieving revision 1.26 diff -u -d -r1.25 -r1.26 --- sysfence.c 31 May 2004 14:09:07 -0000 1.25 +++ sysfence.c 4 Jun 2004 13:07:03 -0000 1.26 @@ -37,7 +37,7 @@ #include "sys/processtitle.h" const char *usage = - "sysfence v0.11, 01-03-2004\n" + "sysfence v0.14, 01-03-2004\n" "Usage: sysfence <config file> [<config file> ...] \n" "\n" "http://sysfence.sourceforge.net/\n" Index: mainloop.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/mainloop.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- mainloop.c 31 May 2004 14:10:06 -0000 1.15 +++ mainloop.c 4 Jun 2004 13:07:03 -0000 1.16 @@ -92,7 +92,7 @@ fetch_la (db); fetch_mem (db); fetch_fs (db); -// fetch_proc (db); + fetch_proc (db); semaphore_post (semid); signals_handling (SIGUNBLOCK); |
|
From: Michal S. <em...@us...> - 2004-06-04 13:07:22
|
Update of /cvsroot/sysfence/sysfence/parseopt In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4613/parseopt Modified Files: parse.c Log Message: + nproc handling so far, works only with -DDEBUG and crashes without it. don't know why Index: parse.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/parseopt/parse.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- parse.c 31 May 2004 14:10:06 -0000 1.17 +++ parse.c 4 Jun 2004 13:07:04 -0000 1.18 @@ -14,6 +14,8 @@ */ +#include <stdio.h> +#include <stdlib.h> #include "lex.h" #include "../sys/exit.h" #include "../sys/xalloc.h" @@ -21,8 +23,7 @@ #include "../getstats.h" #include "../conditions.h" #include "parse.h" -#include <stdio.h> -#include <stdlib.h> +#include "../sys/users.h" #ifdef DEBUG #include <syslog.h> #include "../sys/log.h" @@ -248,6 +249,108 @@ #endif } +sf_list * get_uid_list_rec (tokdata **tok) +{ + sf_list *res; + uid_t *tmpuid; +#ifdef DEBUG + char *thisfuncname = "get_uid_list_rec()"; +#endif + + switch ((*tok)->type) { + case VA_INT: + tmpuid = (uid_t *) xalloc (NULL, sizeof (uid_t)); + tmpuid = (uid_t *) (*tok)->val; + break; + case VA_STR: + tmpuid = username2uid ((char *) (*tok)->val); + if (!tmpuid) { +#ifdef DEBUG + parse_error (*tok, thisfuncname, "invalid username"); +#else + parse_error (*tok); +#endif + } + break; + default: + return NULL; + } + + res = (sf_list *) xalloc (NULL, sizeof (sf_list)); + res->elsize = sizeof (uid_t); + res->el = (void *) tmpuid; + *tok = *tok + 1; + + if ((*tok)->type == LI_SEP) { + /* separator? + * go, fetch next uid + */ + *tok = *tok + 1; + res->next = get_uid_list_rec (tok); + } else res->next = NULL; + return res; +} + +parserdata * get_uid_list (tokdata *tok) +{ + parserdata *res; + sf_list *list = get_uid_list_rec (&tok); + + res->ptr = tok - 1; + res->parsed = (void *) list; + return res; +} + +char get_states_rec (tokdata **tok) +{ + char thisstate = 0; + + switch ((*tok)->type) { + case PR_RUN: + thisstate = PROC_RUN; + break; + case PR_STOP: + thisstate = PROC_STOP; + break; + case PR_SLEEP: + thisstate = PROC_SLEEP; + break; + case PR_UNINT: + thisstate = PROC_UNINT; + break; + case PR_ZOMBIE: + thisstate = PROC_ZOMBIE; + break; + default: + return 0; + } + + *tok = *tok + 1; + + if ((*tok)->type == LI_SEP) { + /* separator? + * go, fetch next state + */ + *tok = *tok + 1; + thisstate |= get_states_rec (tok); + } + + return thisstate; +} + +parserdata * get_states (tokdata *tok) +{ + parserdata *res = (parserdata *) xalloc (NULL, sizeof (parserdata)); + char *states = (char *) xalloc (NULL, sizeof (char)); + + *states = get_states_rec (&tok); + + if (*states == 0) *states = PROC_ANY; + res->ptr = tok; + res->parsed = (void *) states; + return res; +} + parserdata * get_atomic (tokdata *tok) { #ifdef DEBUG @@ -259,7 +362,9 @@ *arg2 = NULL, *op, *val; - parserdata *res; + sf_list *uids = NULL; + char states = PROC_ANY; + parserdata *res, *subpar; double *tmp; int skiptok = 3; @@ -284,6 +389,23 @@ val = tok + 3; skiptok ++; break; + case ID_NPROC: + /* try to get uids list */ + subpar = get_uid_list (tok + 1); + if (subpar->parsed) uids = (sf_list *) subpar->parsed; + tok = subpar->ptr; + + /* try to get states */ + subpar = get_states (tok + 1); + if (subpar) { + states = *((char *) subpar->parsed); + tok = subpar->ptr; + } + + skiptok = 2; + op = tok; + val = tok + 1; + break; default: op = NULL; } @@ -354,6 +476,16 @@ at->stat.arg[0].resstat = VA_USED; at->stat.arg[1].path = (char *) arg1->val; break; + case ID_NPROC: + at->thresh.type = INTEGER; + at->op = op->type; + at->stat.label = ST_PROC; + at->stat.arg[0].uids = uids; +#ifdef DEBUG + syslog (LOG_DEBUG, "%s", uids_2_str (uids)); +#endif + at->stat.arg[1].procstates = states; + break; default: return NULL; } |
|
From: Michal S. <em...@us...> - 2004-06-04 13:07:22
|
Update of /cvsroot/sysfence/sysfence/sys In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4613/sys Modified Files: log.c Log Message: + nproc handling so far, works only with -DDEBUG and crashes without it. don't know why Index: log.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/sys/log.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- log.c 31 May 2004 14:09:08 -0000 1.3 +++ log.c 4 Jun 2004 13:07:04 -0000 1.4 @@ -47,9 +47,6 @@ defbuf, val.type, (long int) val.ptr); - syslog (LOG_DEBUG, - "+-- val: %x", - *((long int *) val.ptr)); #endif nextbuf = stats_2_string (hd->next); |
|
From: Michal S. <em...@us...> - 2004-06-04 12:13:59
|
Update of /cvsroot/sysfence/sysfence In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25445 Modified Files: cp2memory.c Log Message: + BUGFIX: don't count fields included within structure Index: cp2memory.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/cp2memory.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- cp2memory.c 26 May 2004 04:06:26 -0000 1.3 +++ cp2memory.c 4 Jun 2004 12:13:47 -0000 1.4 @@ -45,28 +45,13 @@ int size = sizeof (sf_atomic); switch (atomic->stat.label) { - case ST_LOAD: - // arg[0] is integer in {1, 5, 15} - // arg[1] is ignored - size += sizeof (int); - break; - case ST_MEM: - case ST_SWAP: - // arg[0] is sf_res_state - // arg[1] is ignored - size += sizeof (sf_res_state); - break; case ST_FS: - // arg[0] is sf_res_state // arg[1] is path - size += sizeof (sf_res_state); size += strlen (atomic->stat.arg[1].path); break; case ST_PROC: // arg[0] is UID list - // arg[1] is state mask size += get_list_size (atomic->stat.arg[0].uids); - size += sizeof (int); break; default: break; |
|
From: Michal S. <em...@us...> - 2004-06-03 23:42:53
|
Update of /cvsroot/sysfence/sysfence In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7398 Modified Files: datastruct.c datastruct.h Log Message: + uids list to string Index: datastruct.h =================================================================== RCS file: /cvsroot/sysfence/sysfence/datastruct.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- datastruct.h 31 May 2004 14:10:06 -0000 1.9 +++ datastruct.h 3 Jun 2004 23:42:41 -0000 1.10 @@ -38,8 +38,9 @@ #define PROC_SLEEP 2 #define PROC_STOP 4 #define PROC_ZOMBIE 8 -#define PROC_UNKNOWN 16 -#define PROC_ANY 31 +#define PROC_UNINT 16 +#define PROC_UNKNOWN 32 +#define PROC_ANY 63 /*************************************************************************** All-purpose list @@ -198,5 +199,6 @@ sf_fs_stat * get_fs_entry_from_list (sf_list *hd, char *path); int get_proc_num (sf_database *db, char statemask, uid_t *uid); char * def_2_string (sf_stat_def *def); +char * uids_2_str (sf_list *hd); /* $Id$ */ Index: datastruct.c =================================================================== RCS file: /cvsroot/sysfence/sysfence/datastruct.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- datastruct.c 31 May 2004 14:10:06 -0000 1.8 +++ datastruct.c 3 Jun 2004 23:42:41 -0000 1.9 @@ -270,9 +270,9 @@ case ST_PROC: snprintf (buf, STRBUF, - "nproc (uid: %s) (state: %s)", + "nproc (uid[0]: %s) (state: %d)", "NIY", - "NIY" + def->arg[1].procstates ); default: break; // to avoid warnings @@ -281,3 +281,15 @@ return buf; } +char * uids_2_str (sf_list *hd) +{ + char *buf = (char *) xalloc (NULL, STRBUF + 1), + *buf2; + + *buf = '\0'; + if (hd) { + buf2 = uids_2_str (hd->next); + snprintf (buf, STRBUF, "%d,%s", *((uid_t *) (hd->el)), buf2); + } + return buf; +} |
|
From: Michal S. <em...@us...> - 2004-06-03 22:04:02
|
Update of /cvsroot/sysfence/sysfence In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27128 Modified Files: Makefile Log Message: + user/uid functions Index: Makefile =================================================================== RCS file: /cvsroot/sysfence/sysfence/Makefile,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- Makefile 28 May 2004 22:51:04 -0000 1.23 +++ Makefile 3 Jun 2004 22:03:48 -0000 1.24 @@ -3,7 +3,7 @@ CFLAGS=-Wall -O2 objects=conditions.o getstats.o mainloop.o cp2memory.o datastruct.o sysfence.o parseopt=parseopt/{confread,lex,parse}.o -sys=sys/{exit,xalloc,log,communication,sighandlers,processtitle}.o +sys=sys/{exit,xalloc,log,communication,sighandlers,processtitle,users}.o %.o: %.c $(CC) -c $(CFLAGS) $< -o $@ @@ -17,20 +17,15 @@ all: sysfence debug: - gcc -DDEBUG -ggdb -c conditions.c -o conditions.o - gcc -DDEBUG -ggdb -c getstats.c -o getstats.o - gcc -DDEBUG -ggdb -c datastruct.c -o datastruct.o + $(CC) -DDEBUG -ggdb -c conditions.c -o conditions.o + $(CC) -DDEBUG -ggdb -c getstats.c -o getstats.o + $(CC) -DDEBUG -ggdb -c datastruct.c -o datastruct.o make -C parseopt/ debug make -C sys/ debug - gcc -DDEBUG -ggdb -c mainloop.c -o mainloop.o - gcc -DDEBUG -ggdb -c cp2memory.c -o cp2memory.o - gcc -DDEBUG -ggdb -c sysfence.c -o sysfence.o - gcc -ggdb sysfence.o getstats.o conditions.o mainloop.o \ - cp2memory.o datastruct.o \ - parseopt/lex.o parseopt/parse.o parseopt/confread.o \ - sys/exit.o sys/xalloc.o sys/log.o \ - sys/communication.o sys/sighandlers.o sys/processtitle.o \ - -o sysfence + $(CC) -DDEBUG -ggdb -c mainloop.c -o mainloop.o + $(CC) -DDEBUG -ggdb -c cp2memory.c -o cp2memory.o + $(CC) -DDEBUG -ggdb -c sysfence.c -o sysfence.o + $(CC) -ggdb -o sysfence ${objects} ${parseopt} ${sys} clean: make -C parseopt/ clean make -C sys/ clean |