Tengo una tabla. Esta placa tiene dos interfaces una eth0 y otra usb0. eth0 El puerto está conectado a la red. y usb0 el puerto está conectado a otro dispositivo
Con la ayuda de bridge-utils, puedo configurar un software bridge(br0) sobre el tablero con eth0 y usb0 como sus elementos.
Ahora mi problema es si usb0 el lado está abajo o no está funcionando, entonces ¿hay alguna forma de saber que usb0 está inactivo o no está funcionando o no está funcionando?
Traté de usar SIOCGIFCONF comando ioctl y SIOCGIFFLAGS(IFF_UP and IFF_RUNNING) para saber si alguna interfaz está inactiva o no se está ejecutando. Pero con SIOCGIFCONF Recibo información sobre una sola interfaz br0 y no sobre usb0 o eth0y br0 está arriba y funcionando y funcionando.
Cualquier sugerencia sera apreciada.

ip link show eth0(igual para usb0)?brctl showy luego consulta cada interfaz.Respuestas:
Creo que el estado del sistema de archivos sysfs de usb0 podría ser detectado.
Hoy vi el código fuente de bride-utilities, donde encontré eso. brctl show comando recopila información sobre sus interfaces usando el sistema de archivos sysfs (sys / class / net / br0 / brif /).
Entonces, atravesé ese sistema de archivos sysfs y verifiqué el valor en / sys / class / net / br0 / brif / usb0 / state expediente. Cuando la interfaz usb0 se está ejecutando, en ese caso la salida de
En caso de que la interfaz usb0 no se esté ejecutando, entonces:
Entonces, ahora puedo conocer el estado de la interfaz usb0 que forma parte del puente br0 analizando el valor de / sys / class / net / br0 / brif / usb0 / state expediente.
Ahora tengo las siguientes formas de conocer el estado de la interfaz usb0:
1.Cuestione continuamente este ... / valor del archivo de estado y luego tome una decisión (no me gusta esta idea).
2. Abra un socket de enlace de red y escuche los grupos de multidifusión RTMGRP_LINK (interfaz de red crear / eliminar / subir / bajar) y luego, con la notificación del kernel, podría determinar el estado de usb0.
3.Utilizando udev: http://www.signal11.us/oss/udev/ (libudev - Interfaz de monitorización) podríamos monitorear la notificación del evento de cambio de estado y luego actuar.
Estoy tratando de usar udev. E intentaré publicar una solución completa después de que la implementé.
fuente