cygwin下构建配置了ipv6的busybox

cygwin本身是不支持ipv6的,在cygwin的socket.h和in.h里可以看到ipv6相关的部分都被注释掉了,网上到是有ipv6的补丁,不过有评论说该补丁对非ipv6的环境有影响,所以也不能使用

分析busybox,它是在构建过程中生成applet_tables.exe时报的错,applet_tables.exe在构建过程中被调用,生成include/applet_tables.h,注册busybox配置了的命令及实现,也不可能跳过。

可以做如下修改:

 

修改 cygwin/usr/include/cygwin/socket.h
将下面的块
#if 0     /* Not yet */
#define AF_INET6        23              /* IP version 6 */
#endif

改为:
#ifdef ENABLE_FEATURE_IPV6     
#define AF_INET6        23              /* IP version 6 */
#endif


修改 cygwin/usr/include/cygwin/in.h
将下面的块
#ifdef USE_IPV6
/* IPv6 definitions as we start to include them. This is just
   a beginning dont get excited 8) */
struct in6_addr
{
  uint8_t    s6_addr[16];
};

struct sockaddr_in6
{
  sa_family_t   sin6_family;  /* AF_INET6 */
  in_port_t   sin6_port;  /* Port number. */
  uint32_t   sin6_flowinfo; /* Traffic class and flow inf. */
  struct in6_addr sin6_addr;  /* IPv6 address. */
  uint32_t   sin6_scope_id; /* Set of interfaces for a scope. */
};
#endif

改为:
 #if defined(USE_IPV6) || defined(ENABLE_FEATURE_IPV6)
/* IPv6 definitions as we start to include them. This is just
   a beginning dont get excited 8) */
struct in6_addr
{
  uint8_t    s6_addr[16];
};

struct sockaddr_in6
{
  sa_family_t   sin6_family;  /* AF_INET6 */
  in_port_t   sin6_port;  /* Port number. */
  uint32_t   sin6_flowinfo; /* Traffic class and flow inf. */
  struct in6_addr sin6_addr;  /* IPv6 address. */
  uint32_t   sin6_scope_id; /* Set of interfaces for a scope. */
};
#endif

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值