link Status vom ethernet Interface festellen

OP #5929763
Hat jemand eine Idee wie man den Link Status vom Ethernet unter Linux 
mit C Festellen kann ?

Gibt es einen ioctl() Aufruf hierzu ? Aus der Shell heraus ist das kein 
Problem...

Ich habe zwar schon ein paar Ansätze gefunden aber keine wirklich 
brauchbaren ...
OP
per syscall wäre auch eine Lösung. Das sollte doch jeder Treiber zur 
Verfügung stellen ?? Ist doch einfach die PHY zu fragen ob ein Träger 
vorhanden ist oder nicht.

Ich würde den Zustand gerne Festellen um sofort im Netzwerk nach Geräten 
zu suchen. Es muss nicht einmal ein Signal erzeugt werden, ich kann das 
z.Bsp alle 5 sec etc prüfen. Link up oder down..

ewt. sollte ich mal in den Code von ifconfig schauen :)

/sys/class/net/<iface>/carrier ginge auch aber bei 
/sys/class/net/<iface>/operstate kommt wenigstens "unknown" oder 
"notpresent"
Marco H. schrieb:
> Ich würde den Zustand gerne Festellen um sofort im Netzwerk nach Geräten
> zu suchen.

Bei debian-basierten Distros sollte es reichen, das Skript, das das tut 
in /etc/network/if-up.d zu legen. Der Name des Netzwerk-Interfaces steht 
dann in der Umgebungsvariable $IFACE.

Auf 
https://stackoverflow.com/questions/26672414/inotify-add-watch-fails-on-sys-class-net-eth0-operstate#26674239 
findet man ein Beispielprogramm in C, das die Erkennung über netlink 
macht.
Ist allerdings ein kleiner Fehler drin:
1
oid read_msg(int fd)

hier muss natürlich ein v vor das oid.
OP
Danke damit habe ich mich schon beschäftigt. So wirklich gut ist die 
sache nicht Dokumentiert :(. Aber ich habe eine Anleitung gefunden die 
den Sachverhalt besser erklärt.

http://olegkutkov.me/2018/02/14/monitoring-linux-networking-state-using-netlink/

oder https://www.infradead.org/~tgr/libnl/doc/core.html#_introduction

Ich habe das Problem erst mal so gelöst indem ich das SYS Filesystem 
auslese.

Gehört zwar weniger hier her, aber der Erfolg ist auch abhängig vom 
Driver. Auf einen RPI4 ließ sich das Network Interface nicht mal in den 
RAW Mode versetzen. Es ignorierte einfach den Mode.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.