【问题标题】:using linux raw socket with vconfig interface使用带有 vconfig 接口的 linux 原始套接字
【发布时间】:2011-07-01 04:44:28
【问题描述】:

我想使用套接字原封不动地传输我的数据包,所以我尝试使用这样的原始套接字。

static int raw_sock = 0;
static struct sockaddr_ll saddr;
static struct ifreq ifr;
static int ifindex;
raw_sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
memset(&ifr,0,sizeof(ifr));
memset(&saddr,0,sizeof(saddr));
strcpy(ifr.ifr_name,"eth0");
ioctl(raw_sock,SIOCGIFINDEX,&ifr);
ifindex = ifr.ifr_ifindex;
saddr.sll_family = AF_PACKET;
saddr.sll_ifindex = ifindex;
saddr.sll_protocol = ETH_P_ALL;
sendto(raw_sock,pkt.buffer,pkt.pkt_len,0,(struct sockaddr *)&saddr,sizeof(saddr));

一切正常,但在我添加了一些 vlan 接口之后使用

vconfig add eth0 4000

上面的代码不像以前那样工作了。它会自动将 vlan 标签 0x81 0x00 0x00 0x00 添加到它传输的所有数据包中。有没有人对此有解决方案。我只想原封不动地发送所有数据包。谢谢。

【问题讨论】:

    标签: linux sockets


    【解决方案1】:

    尝试从vlan0 发送,而不是从eth0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      相关资源
      最近更新 更多