O problema estava relacionado com a pergunta que fiz no ServerFault, IP / GRE compilado no kernel mas a interface gre0 não existe .
Eu resolvi a primeira pergunta deixando o driver demultiplexador GRE em gre.c
registrar o manipulador de protocolo GRE no kernel. Mas eu descobri que quando um pacote GRE chega, o manipulador GRE não está apontando para nenhuma função ip_gre.c
(o driver demultiplexador GRE deve verificar a versão GRE no pacote e passar o bloco para o manipulador de protocolo correto, mas no meu caso ele aponta NULL) .
Comentei o trecho de código em que gre.c
registra o manipulador de protocolo GRE e descomentei o trecho de código em que ip_gre.c
registra o manipulador de protocolo GRE. Agora, quando um pacote GRE chega, ele é bem decapsulado e enviado para a próxima camada, agora posso fazer ping do PC1 para o PC2 sem nenhum problema. Acho que esse problema está acontecendo com muitas pessoas em seus dispositivos incorporados porque eu pesquisei com google para a mensagem de erro "ipgre init: não é possível adicionar protocolo" quando o driver GRE IP não pode iniciar porque o driver demultiplexador GRE ainda registrou um manipulador GRE e eu encontrei vários dispositivos com este erro.