![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Maintd: Programa de supervisión desde main1Tuesday, 19 January 2010, 7:18:16 pm Posibles cambios en el formato de los mensajes Se plantean los siguientes cambios:
Friday, 17 July 2009, 6:45:47 pm Courgette bindiffs de ejecutables, el usado (bueno, todavía el que se usará) para las actualizaciones de crome es courgette, que desensambla el ejecutable, pone una tabla de etiquetas y hace la diferencia de eso, con lo que mejora muchísimo de un simple bsdiff. Friday, 5 June 2009, 7:14:40 pm Cosas a hcer en estos momentos Ya está disponible un UI inicial en dario@salchicha:~/Programacion/proyectos/sico-maintd/maintd_ui.tcl Cosas que faltan: Completar el protocolo tcp Ahora se manda un allbits, que manda tanto las descripciones como el contenido. Hay que cambiarlo por los siguientes: sigdesc: manda el signature de las descripciones (el id de tabla) sigbits: manda el signature de los bits (esto habrá que calcularlo en maintd, ya que ahora no se hace; es equivalente al signature de las tablas pero sobre los 4 bytes de estado) alldesc: manda el signature enuna línea y después una línea para las tags de cada equipo allbits: manda el signature en la primera línea y después los bits de cada equipo, precedido por un "n:" o "nn:" o "nnn:" si se repite más de una vez; p.ej sería para 17 equipos: ae217aa742f42 Mejoras en el UI Partir la parte de estado en 4 columnas:
Friday, 22 August 2008, 4:29:43 pm Explicación de los distintos ficheros del código del maintd Ficheros ya implementados maintd.cfgFichero de configuración. Describe quienes son los servidores de nivel del equipo actual y quienes son los clientes (equipos para los que el equipo actual actua de servidor de nivel).maintd.cLlama al resto de los módulos. Tiene el bucle principal del programa.maintd_config.cLee la configuración y lo guarda en unas estructuras para que lo puedan usar el resto de los módulos. Es muy exhaustivo en el análisis de la sintaxis del fichero de configuración y da indicaciones al usuario de en qué línea y por qué ha encontrado un error. Si el error no es fatal ("warning"), continúa igualmente con el parseado y el programa se puede levantar.maintd_data.cGuarda la información de estado del programa. Funciona de base de datos del programa. Parsea y guarda los datos de los datagramas que se reciben. También prepara los datagramas para enviar en los casos de ser una respuesta que soporta su envío partido en varios datagramas (por tamaño).Tiene las funciones que faltan por implementarmaintd_tags.cLibrería auxiliar para manejar "sets" de tags. Permite añadir tags al set, buscar un tag, obtener el número de orden de un tag en el "set", reducir el set "borrando" los N últimos tags.maintd_udp.cImplementa la comunicación por sockets UDP. También implementa el select general del programa (soporta tanto UDP como TCP). Encola datagramas para su envío y los envía cuando el S.O. informa de disponibilidad de envío. permite recibir los datagramas pendientes de recepción indicando el cliente o servidor que lo ha enviadoFicheros que no se han implementado pero serían necesarios maintd_cli.cmain() alternativo que hace que el maintd se comporte como un UI para conseguir el estado de todos los descendientes de un equipo. Se le llama desde maintd.c:main() si detecta que tiene parámetros que no empiezan por '-'.maintd_tcpui.cImplementa la funcionalidad de los mensajes TCP contra el UImaintd_tcpcmd.cImplementa la funcionalidad de las conexiones TCP de distribuciones y comandos.Friday, 22 August 2008, 3:51:42 pm Estado de desarrollo El propósito era tener para hoy terminado el Objetivo 1 (es decir, sólo el estado de ARRIBA o CAIDO, que se obtiene por los alive), pero no ha sido posible; ciertamente el tiempo era demasiado justo O:-). El programa tiene poco menos de 2000 líneas y estimo que la funcionalidad que le falta para llegar a eso son unas 200 líneas más. Claramente lo que más tiempo me ha consumido es la elección de objetivos y la elaboración de los documentos de protocolo y de manual de usuario. Sobre todo por el documento de protocolo, realmente... Código en salchicha:/home/dario/Programacion/proyectos/sico-maintd/. Está hecho:
Falta por hacer
Sobre la documentación, está documentado:
Wednesday, 13 August 2008, 7:26:18 pm Breve ejemplillo de hostent y sin_addr Aquí dan una manera alternativa al memcpy al que estaba acostumbrado:
Wednesday, 13 August 2008, 6:59:43 pm Hechos los manuales del protocolo y de usuario (fichero de configuración maintd.cfg) Están en: salchicha:~dario/Textos/ProtocoloMaintd/ salchicha:~dario/Textos/ManualMaintd/ Monday, 4 August 2008, 5:39:27 pm Sobre el UDP UDPLite with code examples UDPLite no es UDP, pero los ejemplos de código se deberían parecer muchísimo. UDP made simple: Writing a simple UDP client/server in a Unix environment. Por último, un ejemplo completo de select con sockets UDP, aunque es exactamente igual que con sockets TCP. Monday, 4 August 2008, 4:26:49 pm AQUI EMPIEZA EL PROYECTO DE VERANO Es implementar el maintd. Al final se va a hacer en C, usando UDP para el envío de mensajes,y haciendo conexiones TCP sólo para el envío de ficheros. Antigua página del maintd.tcl Descripción del proyecto
Objetivos
Notas sobre la arquitectura
|