2013-06-12 3 views
0

J'utilise packet_mmap pour capturer tous les paquets dans le système, mais il ne semble pas y avoir moyen d'interférer avec le reste du système d'exploitation. Je veux être en mesure d'avoir un contrôle exclusif sur les paquets arrivant dans le monde des utilisateurs et de décider s'ils vont aller sur d'autres applications dans le système ou s'ils sont abandonnés, afin que je puisse filtrer les paquets en fonction des critères.Filtrage de paquets avec Packet MMAP?

Existe-t-il une méthode pour cela? Je n'arrive pas à trouver de documentation sur ce sujet particulier. Je suppose que ce que je veux, c'est pouvoir retirer tous les paquets entrants de la pile IP afin qu'aucun autre programme ne les obtienne, et être capable de réinsérer les paquets paquet par paquet.

Répondre

0

Vous ne pouvez pas faire ce que vous voulez avec les douilles PACKET - elles ne sont pas conçues à cet effet. Ce que vous devez utiliser à la place est libnetfilter_queue, avec une règle iptables qui dirige tous les paquets entrants vers votre file d'attente.

+0

est-ce un design de zéro copie? et si non, y a-t-il une version de zéro copie de ceci? De toute façon, merci pour la réponse. – coder543

+0

@ coder543: Je ne crois pas. – caf

+0

J'ai accepté votre réponse, mais à la fin, il s'est avéré que l'utilisation de 'netdev_rx_handler_register()' pour enregistrer un gestionnaire pour filtrer les paquets était plus efficace. – coder543