¿Cómo recibir notificaciones sobre los cambios en la interfaz de red con Netlist y la señal RTMGRP_LINK?
Escribo un programa que necesita ser notificado si las interfaces de red han cambiado, en particular, apareció una nueva o desapareció. Mi investigación traída a lanetlink y esRTMGRP_LINK
señal. Estapágina de manual da un ejemplo que aún no está claro para mí.
Tiene este código:
memset(&sa, 0, sizeof(sa));
snl.nl_family = AF_NETLINK;
snl.nl_groups = RTMGRP_LINK | RTMGRP_IPV4_IFADDR;
fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
bind(fd, (struct sockaddr*)&sa, sizeof(sa));
Entiendo que esta es una parte de inicialización para habilitar algunas señales. Supongo que debe haber una subrutina de controlador que procese el evento.
Mis preguntas son:
¿Es este un fragmento de código correcto para habilitar el evento?
Cómo procesar el evento: ¿necesito tener algún controlador?
¿Cuáles son las estructuras de datos que contienen información relevante (sobre las interfaces de red y sus cambios)?
Gracias por cualquier ayuda.