BPF

De HurdFr_Wiki
Aller à : Navigation, rechercher

Sommaire

Introduction

Cette page décrit le projet d'implémentation du support de BPF (Berkeley Packet Filter) sur GNU/Hurd. BPF est une interface permettant à un programme de recevoir tous les paquets réseaux correspondant à un filtre. Cette interface est par exemple utilisée par la libpcap sur les systèmes BSD, la libpcap étant elle-même utilisée par tcpdump.

Responsable du projet : Richard Braun

Etat du projet

Le projet se décompose en plusieurs éléments :

  • Un support noyau, dont la principale tâche consiste à appliquer le filtre BPF à chaque paquet et envoyer ceux ayant traversé le filtre avec succès à la tâche qui a installé ce filtre. Le développement a été effectué à tour de rôle par Manuel Menal, Richard Braun et Guillaume Libersat (Warning.gif L'interface des filtres de paquets a été modifiée, ce qui signifie que pfinet ne fonctionnera pas avec ce noyau. Les patchs pour GNU Mach et GNU Hurd ont été inclus dans les sources officielles. Les paquets Debian les inclueront bientôt.)
  • Un translator écoutant sur /dev/bpf0, qui agit comme relais entre les applications BPF et le noyau. Il s'agit du même translator pour toutes les instances d'applications BPF (contrairement à certains systèmes sur lesquels il existe de multiples fichiers /dev/bpfX, un par application), qui peut donc gérer un nombre virtuellement illimité de clients : le translator est presque complet et assez stable. Le développement est effectué par Richard Braun. Le translator utilise, comme tout translator du Hurd, la bibliothèque cthreads. En particulier, il utilise une fonction nommée condition_timedwait() qui n'existe pas dans le Hurd actuel. Un patch a été envoyé, et des paquets Debian patchés sont disponibles sur http://devel.hurdfr.org/. Certains ioctls peu utilisés ne sont pas implémentés (exemple: BIOCGDLTLIST). Le translator est assez stable, mais plante parfois lorsque l'interface est détachée (la fonction ports_inhibit_port_rpcs() semble poser problème, elle est probablement mal utilisée).
  • Un support dans la GNU C Library pour les ioctls trop complexes pour être directement convertis en RPC, en particulier BIOCSETF (à faire).
  • Une libbpf, qui contiendra le code client des ioctls devant être explicitement convertis en RPC (mentionnés ci-dessus) (à faire).

Le code source est disponible dans le dépôt git de HurdFR (Utilisation des SCM de HurdFR). Le translator ne compilera que si les en-tètes modifiés présents dans le répertoire libc/ du projet sont installés dans le répertoire /include/ du système.

Historique

Le projet a été initié par Manuel Menal au début de l'année 2005. Il a été repris par Guillaume Libersat et Richard Braun en février 2006.

Voir aussi

Liens externes

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Outils