21 syslog_in_unix <usocket> Crea i escolta el socket unix per missatges |
22 syslog_in_unix <usocket> Crea i escolta el socket unix per missatges |
22 syslog_kernel Executa els anteriors programes, i llegeix de tots |
23 syslog_kernel Executa els anteriors programes, i llegeix de tots |
23 alhora. |
24 alhora. |
24 unix_writer <usocket> Programa per escriure a un Unix socket |
25 unix_writer <usocket> Programa per escriure a un Unix socket |
25 |
26 |
|
27 |
|
28 Configuració del programa: |
|
29 -------------------------------------- |
|
30 La configuració la trobem al fitxer "syslog.conf". Aquests són els seus |
|
31 valors per defecte (a config.c): |
|
32 from_unix=unixlog |
|
33 from_npipe=disabled |
|
34 from_udp=disabled |
|
35 to_udp_host=localhost |
|
36 to_udp_port=1235 |
|
37 tcp_manager=1234 (No s'utilitza encara!) |
|
38 log_file=file.log |
|
39 |
|
40 No hi poden haver espais; el format és <paràmetre>=<valor> per cada línia. |
|
41 Si el fitxer de configuració "syslog.conf" no defineix res d'un paràmetre, |
|
42 valdrà el valor per defecte. |
|
43 Si a un paràmetre li donem el valor "disabled", la part afectada no estarà |
|
44 activa. |
|
45 |
26 Notes: |
46 Notes: |
27 -------------------------------------- |
47 -------------------------------------- |
28 El programa està escrit en c99. |
48 El programa està escrit en c99. |
29 |
49 |
30 El programa no gestiona bé lectures de múltiples missatges per crida read(). |
50 El programa no gestiona bé lectures de múltiples missatges per cada crida |
31 Això és perquè encara en prou feines hem implementat alguna cosa de la |
51 read(). Només pot llegir un missatge per crida. |
|
52 Això és perquè encara en prou feines he implementat alguna cosa de la |
32 rfc 3164. |
53 rfc 3164. |
33 |
54 |
34 Els syslog_in_* entenen el missatge "close", cosa que fa que morin. Si moren |
55 Els syslog_in_* entenen el missatge "close", cosa que fa que morin. Si moren |
35 tots els fills de syslog_kernel, el kernel també mor. |
56 tots els fills de syslog_kernel, el kernel també mor. |
36 |
57 |
37 El fitxer syslog_in_udp té una variable global que indica si es farà servir |
58 Al fitxer syslog_in_udp se li pot passar el paràmetre de port en negatiu, |
38 IPv6 o no en temps d'execució. |
59 cosa que vol dir que escoltarà també per IPv6 al port "-(port)" donat. Si es |
|
60 dóna en positiu, només escoltarà IPv4. |
39 |
61 |
40 El codi de llegir la "named pipe" intenta fer el possible amb locks i |
62 El codi de llegir la "named pipe" intenta fer el possible amb locks i |
41 reobertures de la pipe de manera que no es perdi mai la lectura de la |
63 reobertures de la pipe de manera que no es perdi mai la lectura de la |
42 named pipe donada. |
64 named pipe donada. |
|
65 |
|
66 Els syslog_in_* ignoren el senyal HUP. El syslog_in_unix capta SIGTERM i |
|
67 SIGINT, perquè a més de tancar els handles, també ha de tancar el unix socket. |
|
68 |
|
69 El syslog_kernel pot passar missatges a un servidor udp. També pot escriure |
|
70 els missatges rebuts a un fitxer de log. |
|
71 |
|
72 El syslog_kernel entén els senyals: |
|
73 - SIGHUP - rellegir i reaplicar el que digui el fitxer de configuració. |
|
74 - SIGTERM o SIGINT - matar els fills, i després morir ell. |
|
75 (Atenció - si apretem Control-C des d'un xterm, envia SIGINT al grup de |
|
76 processos del terminal; així, si hem executat el kernel, els fills |
|
77 rebran SIGINT igualment) |
|
78 |
|
79 No he implementat el SIGUSR1 per a buidar el caché de missatges rebuts a disc. |
|
80 |
|
81 El programa dóna informació de debug per stderr. |
|
82 |
|
83 El programa no és gaire "error-safe": si no es compleixen certes condicions, |
|
84 el programa simplement abortarà - a vegades amb assert(). De tota manera, |
|
85 tots els casos crítics crec que estan sota control. |