Comment tester depuis l’espace utilisateur si le kernel prend en charge IPv6?

Je cherche un moyen simple de tester si le kernel prend en charge IPv6 sur Linux en C / C ++. Suffit-il de vérifier si l’appel de socket () échoue et que errno contient le code d’erreur EINVAL?

En effet, lisez ipv6 (7) : l’appel aux routines de socket (7) , notamment socket (2) et d’autres, par exemple bind (2) etc.

Vous pouvez également utiliser proc (5), par exemple read /proc/net/if_inet6 ou /proc/net/sockstat6 (je crois que cela n’existera pas si ipv6 n’est pas supporté).