我在理解 VLAN 标记时遇到问题。我已经使用 此链接对 /etc/network/interface 文件进行了更改, 我正在使用 C 语言在 Raspbian(Raspberry pi)上使用套接字编程。
我尝试了两种方法:
C中的套接字是
s = 套接字(AF_INET,SOCK_RAW,IPPROTO_RAW);
当我使用上述套接字从树莓派发送以太网数据包时,我只看到总线上传出的“arp”消息。
s = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL))
但这会在发送数据包期间产生错误“sendto failed: Invalid argument”,发送数据包的代码是:
struct sockaddr_in sin;
sin.sin_family = AF_PACKET;
sin.sin_port = htons(30490);
sin.sin_addr.s_addr = inet_addr(destination ip address);
if(sendto(socket, data, iph->tot_len, 0, (struct sockaddr *)&sin, sizeof(sin)) < 0)
{ perror("Sendto failed"); }
else { printf("Packet send"); }
任何人都可以帮助我提供有关如何在每个正在发送的数据包上附加 VLAN 标记的信息吗?或者我在上面的代码中做错了什么?
是否已经实现了用于发送带有 VLAN 的数据包的代码?
(在我的设置中,我没有使用任何路由器或交换机)