Tenho certeza de que você já tem as versões certas, mas linux/in.h
é um cabeçalho do kernel que você não deve tentar incluir diretamente em um programa de espaço do usuário.
Você também não deve incluir bits/in.h
, pois esse é um fragmento de cabeçalho que será incluído por outros cabeçalhos quando necessário.
O netinet/in.h
é o que você deve incluir e, por sua vez, incluirá o cabeçalho bits/in.h
. Se isso não tiver uma definição para IP_TRANSPARENT
, a versão do glibc no sistema é muito antiga.
Se você não pode atualizar glibc
porque você já está na versão mais recente oferecida pela sua distribuição, a solução pragmática e a que tornará seu programa portátil é adicionar o seguinte ao seu código:
#ifndef IP_TRANSPARENT
#define IP_TRANSPARENT 19
#endif