我在理解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