我在理解VLAN标记时遇到问题。 我已经使用this link 在/ etc/network/interface文件中做了更改我正在使用C语言在Raspbian(Raspberry Pi)上使用套接字编程。使用C套接字发送带VLAN标记的数据包
我试图2种方法:
在C中的插座是
S =插座(AF_INET,SOCK_RAW,IPPROTO_RAW);
当我使用上面的套接字从树莓派发送以太网数据包时,我只能看到总线上传出的“arp”消息。
s = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL))
但是这产生一个错误 “SENDTO失败:无效参数” 发送分组时,发送数据包中的代码是:
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的数据包?
(在我的设置中我没有使用任何路由器或交换机)
我编辑了我的问题。你能告诉我为什么会出现错误? – Praj