Legacy Router im Monitoring

Dominik Heidler dominik at heidler.eu
Mi Feb 17 11:53:03 CET 2016


Hi,

ab jetzt werden im Monitoring auch Router mit uralter Firmware (ich habe - glaube ich - soger einen mit 0.3.9 gesehen)
angezeigt.
Das wird mit dem "alfred_legacy_adapter" gemacht.
Dieser besteht aus 2 Teilen:

Der erste holt die MACs der alten Router (die auch gerade online sind) aus der Netmon Datenbank:
> SELECT r.id, r.hostname, c.firmware_version, i.name, i.mac_addr FROM routers r 
> JOIN crawl_routers c ON c.id = (SELECT MAX(id) FROM crawl_routers WHERE router_id = r.id) 
> LEFT JOIN crawl_interfaces i ON i.id = (SELECT MAX(id) FROM crawl_interfaces WHERE router_id = r.id AND name = "br-mesh")
> WHERE c.status = "online" AND c.firmware_version <= "0.5.0" ORDER BY r.id;

Da dieser Query ein bisschen aufwändig ist, wird er nur einmal pro Stunde aufgerufen und die resultierende Liste an MACs wird
in der folgenden Stunde wiederverwendet.

cat macs.txt 
> b0:48:7a:cb:1a:9c
> f8:d1:11:90:3e:6c
> a0:f3:c1:3c:5e:54
> a0:f3:c1:75:91:26
> a0:f3:c1:36:bd:24
> a0:f3:c1:75:6a:da
> ...

Diese MACs (ca 350 an der Zahl) werden alle 14 Minuten mit diesem Script gecrawlt:
http://upload.kruton.de/files/1455706040/crawl.py
Das Ergebnis wird unter der Absender-MAC des jeweiligen Routers an den ALFRED-Master Server geschickt, der es dann wiederum ans Monitoring schickt.

Damit der ALFRED-Master Server die MAC nicht mit seiner lokalen MAC überschreibt, ist dieser Patch notwendig:
> diff --git a/unix_sock.c b/unix_sock.c
> index 3c7e583..12a10e6 100644
> --- a/unix_sock.c
> +++ b/unix_sock.c
> @@ -119,7 +119,9 @@ static int unix_sock_add_data(struct globals *globals,
>  
>  	data = push->data;
>  	data_len = ntohs(data->header.length);
> -	memcpy(data->source, &interface->hwaddr, sizeof(interface->hwaddr));
> +	static const char zero[ETH_ALEN] = { 0 };
> +	if (!memcmp(zero, data->source, sizeof(data->source)))
> +		memcpy(data->source, &interface->hwaddr, sizeof(interface->hwaddr));
>  
>  	if ((int)(data_len + sizeof(*data)) > len)
>  		goto err;


Grüße,
Dominik



Mehr Informationen über die Mailingliste franken-dev