AF_PACKET套接字未接收IPv6数据包

时间:2017-07-13 16:13:06

标签: c sockets ipv6

我试图使用AF_PACKET原始套接字来嗅探网络流量。我能够获取所有IP / ARP数据包,但我根本无法获得任何IPv6数据包。为了获得IPv6流量,我还需要做些什么吗?

   unsigned char buffer[65536];
   int sock_raw = socket( AF_PACKET , SOCK_RAW , htons(ETH_P_ALL)) ;

   if (sock_raw < 0)
   {
     perror("socket error!");
     return 1;
   }

   while (1)
   {
      struct sockaddr saddr;
      int saddr_size, data_size;

      data_size = recvfrom(sock_raw, buffer, 65536, 0, &saddr, (socklen_t *)&saddr_size);

      if (data_size >= 0)
      {
         ProcessPacket(buffer, data_size);
      }
   }

1 个答案:

答案 0 :(得分:0)

我的坏。 IPv6有不同的以太网协议:ETH_P_IPV6而不是ETH_P_IP,我只是在寻找ETH_P_IP数据包!为ETH_P_IPv6添加案例解决了这个问题!