Subject: Re: pkgsrc/wakeup with multiple interfaces
To: None <current-users@NetBSD.org>
From: David Young <dyoung@pobox.com>
List: current-users
Date: 12/12/2005 01:02:29
On Mon, Dec 12, 2005 at 12:18:35AM -0600, John F wrote:
> Hi all!
>
> I'm trying to figure out how to make a C program send out a udp
> packet to the broadcast address and select which interface is used.
John,
Reading your patch, it looks like it gets the interface-specific source
using select_if, and then overwrites it with INADDR_ANY before calling
bind(2). Maybe you are on the right track, you just have a bug?
For a multicast UDP socket, I specify the outbound interface by its
ifindex, like this:
uint32_t addr;
addr = htonl(ifindex);
if (setsockopt(s, IPPROTO_IP, IP_MULTICAST_IF, &addr,
(socklen_t)sizeof(addr)) == -1)
err(EXIT_FAILURE, "%s: setsockopt(IP_MULTICAST_IF)", __func__);
ISTR this was not documented very well in the manual page ip(4).
Dave
--
David Young OJC Technologies
dyoung@ojctech.com Urbana, IL * (217) 278-3933