0

送信する UDP パケットに 802.1Q プライオリティ タグを追加できるように、C ソケットをセットアップしたいと考えています。これは私がやっていることです:

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 に影響を与えていることを示す兆候も見られません。

4

2 に答える 2