Ich versuche, ein Kernel-Modul zu erstellen, das modifizierte Pakete von denen senden kann, die es durch das Netfilter-Hooking empfängt. Ich verwende ein Code-Skelett, das hier . Ich erstelle einen rohen Socket innerhalb des Kernels einfach mit diesem Code:
%Vor%Die sendpacket-Funktion wird folgendermaßen aufgerufen:
%Vor%socketptr ist der rohe Socket, den ich erstellt habe, dev ist das net_device, das mir von der Hooking-Funktion übergeben wurde, und duplicate ist eine modifizierte Kopie des ursprünglichen Pakets.
Die Rückkehr vom Aufruf zu dev_queue_xmit zeigt an, dass das Paket erfolgreich übertragen wurde, aber ich kann das Paket nicht auf dem Draht sehen. Ich habe zwei Fragen: Erstens möchte ich in der Lage sein, besser zu debuggen, was geschieht, daher wird jeder diesbezügliche Rat sehr geschätzt. Außerdem frage ich mich, ob ich die Socket-Erstellung richtig handle oder ob es irgendeine Art von Konfiguration gibt, die ich vermisse. Das ist alles sehr neu für mich, also könnte es sehr gut sein, dass mir etwas Dummes fehlt.
Tags und Links c kernel linux networking