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