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
nameservice.patch.tar.gz
Description: application/tgz
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ General mailing list [email protected] http://lists.montevideolibre.org/listinfo.cgi/general-montevideolibre.org
