Holas! 

   Les cuento lo que he avanzado con OLSR. 

   Ayer constaté que lo que dice el man del dnsmasq no es mentira, y que: 

        "When it receives a SIGHUP, dnsmasq clears its cache and then re-loads 
/etc/hosts and /etc/ethers.  If --no-poll is set SIGHUP also re-reads 
/etc/resolv.conf.  SIGHUP does NOT re-read the configuration file." 

   Esto nos convierte en personas altamente felices, ya que los nodos que 
quieran utilizar dnsmasq para servir a aquellos clientes que no corran OLSRd (y 
por lo tanto no puedan hacer uso de su plugin nameservice), sólo necesitan 
mandarle SIGHUP al dnsmasq cuando tengan una entrada nueva en /etc/hosts (o 
donde su plugin nameservice esté escribiendo). 

   Para facilitar esto, estaría bueno que el mismo plugin nameservice le mande 
el SIGHUP cuando agrega alguna entrada. Por eso preparé un patch para 
nameservice.c que llama a un script (cuyo path se especifica como opción en 
olsrd.conf) que puede hacer cosas locas (como mandarle el SIGHUP a dnsmasq, 
actualizar una página en el wiki con los datos del nuevo nodo, formatear el 
disco, etc.). Hay maneras mucho mejores de hacerlo, pero ésta es simple y 
funciona. El patch va adjunto. 

Un ejemplo, entonces, de la configuración de mi plugin nameservice: 

LoadPlugin "olsrd_nameservice.so.0.3"
{
        PlParam "change-script" "/home/blade/holasoyunscriptloco.sh"
        PlParam "name" "matrix.sirius"
        #PlParam "a.b.c.d" "xxx-eth"
        #PlParam "a.b.c.e" "xxx-bbb"
        #PlParam "a.b.c.f" "xxx-olsr"
        PlParam "suffix" ".mvdl"
        PlParam "hosts-file" "/etc/hosts"
        PlParam "add-hosts" "/etc/hosts"
        PlParam "resolv-file" "/etc/resolv.conf"
        PlParam "lat" "-34.893702"
        PlParam "lon" "-56.116397"
        PlParam "latlon-file" "/home/blade/latlon.js"
}

y un ejemplo de holasoyunscriptloco.sh: 

if [ -r "/var/run/dnsmasq.pid" ]
then
  kill -HUP `cat /var/run/dnsmasq.pid`
  echo "dnsmasq successfuly updated. Happy times."
else
  echo "Warning: dnsmasq not started."
fi

   También he encontrado un bug en el plugin, y es que no borra las entradas de 
nodos que hicieron timeout (ver que en la función timeout_old_names() en 
nameservice.c, olsr_timed_out(&(*tmp)->timer) siempre es verdadero, aunque se 
desconecte el nodo). De todas maneras los nodos se pueden caer, pero no van a 
cambiar de IP, así que no es tan terrible. 

   Salú!

   -Andrés

Attachment: nameservice.patch.tar.gz
Description: application/tgz

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
General mailing list
[email protected]
http://lists.montevideolibre.org/listinfo.cgi/general-montevideolibre.org

Responder a