Como ser notificado sobre alterações na interface de rede com o sinal Netlist e RTMGRP_LINK?
Eu escrevo um programa que precisa ser notificado se as interfaces de rede foram alteradas, em particular uma nova apareceu ou já existia. Minha pesquisa trouxe para onetlink e os seusRTMGRP_LINK
sinal. estemanpage dá um exemplo que ainda não está claro para mim.
Tem 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));
Meu entendimento é que essa é uma parte de inicialização para ativar alguns sinais. Acho que deve haver uma sub-rotina de manipulador que processa o evento.
Minhas perguntas são:
Esse é um trecho de código correto para ativar o evento?
Como processar o evento: preciso ter algum manipulador?
Quais são as estruturas de dados que contêm informações relevantes (sobre interfaces de rede e suas alterações)?
Obrigado por qualquer ajuda.