2016-03-25 5 views
0

Es gibt einen TPM 2.0 Simulator von IBM, der über Sockets kommuniziert. Ich muss mich mit dem Locahost an einem bestimmten Port verbinden und dann meine Befehle über diese Verbindung senden.Ersatz für sys/socket.h im Linux-Kernel-Modul?

Ich möchte in der Lage sein, es zu verwenden, als ob ich jedoch ein Hardware-TPM habe. Also dachte ich, ich würde ein Kernelmodul schreiben, das dafür einen Zeichengerätetreiber unter /dev/tpm0 bereitstellt.

Es ist im Grunde ein Proxy, der alle empfangenen Befehle an den Simulator sendet und die Antworten weiterleitet.

Ich würde socket s für diese Aufgabe benötigen und bereits erfolgreich mit dem Simulator mit einer Benutzermodusanwendung verbunden, die ich schrieb.

Bei der Übertragung an den Treiber schrieb ich, obwohl die make-Datei beschwert, dass sys/socket.h nicht gefunden werden kann.

Durch Forschung habe ich schon gehört, dass einige Bibliotheken nur im Benutzermodus verwendet werden können und ich nehme an, dass sys/socket.h einer von ihnen ist.

Also was ist der Kernel-Ersatz dafür? Ich habe viele Artikel gelesen, die erklären, wie man einen Server in einem Kernel-Modul konfiguriert, aber nichts auf einem Client.

+0

keine Notwendigkeit, eine Kernel-Modul zu schreiben. Sie können den 'socat' Befehl wie beschrieben [hier] (http://serverfault.com/a/384756/166536) zum Beispiel verwenden. – hek2mgl

+0

@ hek2mgl Können Sie das näher ausführen? – Minix

Antwort

0

Dies soll helfen:

ein beliebigen TCP Server läuft im Kernel:

https://gist.github.com/llj098/752417

+0

Ich habe das auch gefunden. Aber es verwendet die alte "struct msghdr" -Schnittstelle. Das 'msg_iov'-Member wird nicht mehr in Kernen> 3,19 verwendet, denke ich. – Minix