gpt4 book ai didi

c - 在C套接字上设置VLAN,在另一端接收

转载 作者:太空宇宙 更新时间:2023-11-04 08:52:11 25 4
gpt4 key购买 nike

我想设置一个 C 套接字,以便我可以将 802.1Q 优先级标记添加到我将通过它发送的 UDP 数据包。这就是我正在做的:

struct ifreq ifr;
memset(&ifr, 0, sizeof(ifr));
snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "wlan0.10");
ret = setsockopt(mSocket, SOL_SOCKET, SO_BINDTODEVICE, (void *)&ifr, sizeof(ifr));
if (ret < 0) {
errorMsg << " Set socket options error: " << strerror(errno) << endl;
log(errorMsg.str());
}

// this is only effective if the OS has VLAN enabled and VLAN is in use on the interface
const int VLAN_VOIP_PRIORITY = 5;
ret = setsockopt(mSocket, SOL_SOCKET, SO_PRIORITY, &VLAN_VOIP_PRIORITY, sizeof(VLAN_VOIP_PRIORITY));
if (ret < 0) {
errorMsg << " Set socket options error: " << strerror(errno) << endl;
log(errorMsg.str());
}

wlan0.10 是我设置的虚拟网络:

vconfig add wlan0 10
ip addr add 10.0.0.1/24 dev wlan0.10

现在,我不知道它是否有效。我尝试在流的源端和目标端都使用 Wireshark,但我看不到它(在监听源端时,我在 wlan0 和 wlan0.10 上都监听,运气不好)。如果我删除上面的 SO_BINDTODEVICE,我可以很好地看到它,但是我也看不到 SO_PRIORITY 对 Wireshark 有任何影响的任何迹象。

最佳答案

setsockopt(mSocket, SOL_SOCKET, SO_PRIORITY 将为内核 IP 堆栈中的数据包设置内部 sk_priority,而不是 vlan 优先级。

您可以使用此内部优先级做的事情之一是将其映射到具有 vconfig 的 vlan 优先级。 set_egress_map 命令

关于c - 在C套接字上设置VLAN,在另一端接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19254834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com