J'ai besoin du test pour l'Ethernet sous Linux à l'aide de code C pour vérifier eth0. Si eth0 est en panne, nous activer sur le net puis vérifier si et le test est réussi.
Si IFF_UP est ensemble, cela signifie que l'interface est en place (voir ifup). Si IFF_RUNNING est définie, alors l'interface est branché.
J'ai aussi essayé d'utiliser le ethtool appel ioctl, mais il a échoué lors de la gid n'était pas la racine. Mais juste pour le journal:
Une question, en supposant que je voulez juste pour obtenir le statut de la liaison quelle est la différence entre l'obtenir via ETHTOOL_GLINK vs SIOCGIFFLAGS? Ne ethtool_value.data == 1 implique IFF_UP et IFF_RUNNING. J'ai posé une question détaillée sur ce stackoverflow.com/questions/33039485/.... S'il vous plaît laissez-moi savoir vos pensées sur elle Il était tout à fait il ya longtemps, mais je pense que si edata.données == 1 alors l'interface est en PLACE et en cours d'EXÉCUTION.
Que cette question est assez importante, je vais ajouter une autre réponse, en dépit de son grand âge. Vous pouvez lire le contenu de /sys/class/net/eth0/operstate qui contiennent la chaîne "\n" ou "en bas\n".
Pour vérifier si le lien est en haut, essayer quelque chose comme cela. Il fonctionne sans les privilèges root.
Si IFF_UP est ensemble, cela signifie que l'interface est en place (voir ifup). Si IFF_RUNNING est définie, alors l'interface est branché.
J'ai aussi essayé d'utiliser le ethtool appel ioctl, mais il a échoué lors de la gid n'était pas la racine. Mais juste pour le journal:
ethtool_value.data == 1
impliqueIFF_UP
etIFF_RUNNING
. J'ai posé une question détaillée sur ce stackoverflow.com/questions/33039485/.... S'il vous plaît laissez-moi savoir vos pensées sur elleIl était tout à fait il ya longtemps, mais je pense que si edata.données == 1 alors l'interface est en PLACE et en cours d'EXÉCUTION.
OriginalL'auteur TrueY
Les interfaces de réseau peut être vu dans
sysfs
:/sys/class/net/eth[x]
. Il vous permet de vérifier le lien, le statut de l'interface, et plus encore.OriginalL'auteur Yann Ramin
Vous voudrez peut-être prendre avantage de libudev de se déplacer dans /sys:
OriginalL'auteur jim mcnamara
J'ai simplement vérifier si une adresse Ip est attribuée à la carte réseau.
Vous pouvez utiliser quelque chose comme ceci pour vérifier si le lan est en place dans le réseau de la carte (dire eth0) :
Cela ne devrait renvoyer 0 ou 1 en fonction de si oui ou non une adresse ip est attribuée à la carte réseau.
Aussi vous pouvez utiliser des Yann Ramin est méthode de la liste de tous les nic & effectuer la vérification.
J'ai manqué de remarquer que vous êtes à la recherche d'un code c. Peut-être l'ajout d'un tag serait bon.
Soit façons, je pense que vous pouvez regarder dans le même fichier (ifconfig) manuellement en c, en la lisant, pour une adresse ip.
OriginalL'auteur loxxy
Que cette question est assez importante, je vais ajouter une autre réponse, en dépit de son grand âge. Vous pouvez lire le contenu de /sys/class/net/eth0/operstate qui contiennent la chaîne "\n" ou "en bas\n".
OriginalL'auteur Subsentient