In file included from /usr/include/linux/if_tun.h:20:0,
from syshead.h:222,
from base64.c:40:
/usr/include/linux/if_ether.h:127:8: error: redefinition of 'struct ethhdr'
/usr/include/netinet/if_ether.h:93:8: note: originally defined here
Glibc does not have this problem as they include linux/if_ether.h from netinet/if_ether.h. For musl I realize that would mean a dependency on kernel-headers.
Openvpn uses the following:
#if defined(HAVE_NETINET_IF_ETHER_H)
#include <netinet/if_ether.h>
#endif
#ifdef HAVE_LINUX_IF_TUN_H
#include <linux/if_tun.h> <--- includes linux/if_ether.h
#endif
I can get it to work by just removing the netinet/if_ether.h part, but maybe it is something worthy of your attention.