Temos um módulo de kernel que estava sendo construído corretamente para a família RedHat de distribuição Linux, até o recente RHEL7.5.
Ao tentar construir no RHEL7.5, temos um erro de:
...erro: 'GENL_ID_GENERATE' não declarado...
Fiz algumas leituras e parece que isso é uma mudança desde o kernel 4.11+, mas o RHEL7.5 é baseado no kernel 3.10+. O que aconteceu?
De qualquer forma, sei que o valor de GENL_ID_GENERATE é simplesmente 0. Mas posso usar 0 para substituir a macro? Haverá um problema com o módulo do modo de usuário para se comunicar com este módulo do kernel?
Ou qual deve ser a maneira correta de corrigir o problema? Algum conselho?
Obrigado e cumprimentos, Weishan
Observando os git commits para netlink, parece que várias mudanças foram feitas na estrutura na versão 4.11:
Primeiro, você pode omitir o
.id
campo completamente de seu inicializador,genl_family
pois o Linux removeu IDs de família estáticos.Além disso, a
genl_register_family_with_ops
função não é mais usada. Em vez disso, conforme observado na documentação COMO FAZER do Linux para netlink :