iftop, IPv6 et FreeBSD (et Linux aussi, d'ailleurs)
iftop(8)
est un très bon outil pour mesurer l'activité réseau d'une
machine. La dernière version stable (0.17), qui est dans tous les bons
OS, remonte à février 2006. Récemment, Paul Warren a ajouté le support
d'IPv6 (auparavant, seuls les flux en IPv4 étaient pris en compte). Il
y a quelques difficultés pour compiler ceci sous FreeBSD ; j'ai une
série de patches pour corriger cela, en attendant son intégration par
Paul Warren. J'ai aussi un
port pour FreeBSD.
Les deux premières choses à corriger sont deux Linuxeries, ajouter
un
#include
oublié
ainsi qu'
un #define manquant.
La correction suivante est moins triviale. Pour faire la résolution
inverse des adresses vues,
iftop(8)
utilise plusieurs threads, et
plusieurs méthodes sont implémentées. Seule la méthode utilisant
getnameinfo(3)
fait de la résolution inverse en ip6. Cependant, le
configure.in
fournit refuse d'utiliser
getnameinfo(3)
, avec une
note disant que sur certains OS, cette fonction n'est pas
thread-safe (NetBSD est donné en exemple).
On peut donc se plonger dans les macros d'autoconf pour utiliser
getnameinfo(3)
(vous avez le cœur bien accroché ?). Ou alors, on
peut
patcher
resolver.c
, au moins c'est du C, on sait où l'on
s'aventure. Et oui, vous avez bien lu le code, le code initial essaie
de deviner le type de l'adresse en lisant les premiers octets d'un
struct in{4,5}_addr
.
Pour les FreeBSD'iens, j'ai mis tout cela
dans un port. Pour les
autres, récupérez les patches liés plus haut (les GNU/Linuxiens se
contenteront probablement de celui contre
resolver.c
). Attention, il
y a un bug dans le
Makefile
fournit, il faut faire
make iftop
et
non
make all
pour compiler.