私は Ubuntu 12.04 を実行しており、現在、sendtoを使用してさまざまな宛先にパケットを送信する UDP ソケットを作成する C++ コードを作成しています。今、私のラップトップにwlan0とeth0の両方のインターフェースがあることがあります。IP アドレスと SO_BINDTODEVICE オプションを使用してこれらのいずれかにバインドすると、送信先アドレスに応じて、sendtoは、適切であれば他のインターフェイスを使用することを決定します。
具体的には、UDP ソケットを IP アドレスとポートを使用して eth0 インターフェイスにバインドし、パケットを別のラップトップ (ローカルで、wifi アクセスのみ) に送信すると、wlan0 インターフェイスの使用が決定されます。
この動作には長所があることは理解していますが、オフにできるようにしたいと考えています。つまり、割り当てた 1 つのインターフェイスのみを使用するようにソケットに指示できるようにしたいと考えています。
提案?
編集:
struct sockaddr_storage sa = address;
fd = socket(address.get_family(), SOCK_DGRAM, 0);
char *devname = "wlan0";
setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, devname, strlen(devname));
bind(fd, (sockaddr*)&sa, len);