[ECOS] Problem with multicast using FreeBSD stack

Chad Handrich chandric@weldtechcorp.com
Fri Nov 30 08:57:00 GMT 2007


Hello,

I have eCos configured with the FreeBSD stack.  Everything is working 
except a portion where I have to SEND multicast UDP packets using 
sendto().  In these instances, sendto() returns -1, and errno == 
EHOSTUNREACH.

Just to let you know, I have "Multicast Routing Support" selected in the 
configtool.  Though it is worth noting that after doing so, I had a few 
compiler errors in ip_mroute.c that were fixed by removing the following 
declaration and all references to it (which were not really used anyway):
static struct callout_handle expire_upcalls_ch;

Note that I do NOT need to receive multicast packets (which I understand 
is a bit more complicated), but merely send them.

I have tried a few different ways to initialize eth0 to achieve this 
effect, all failing. 

For example:
s = socket(AF_INET, SOCK_DGRAM, 0);
<...  working IP address initialization code ...>
setsockopt(s, IPPROTO_IP, IP_MULTICAST_IF, &interface_addr, 
sizeof(interface_addr)) ))
where interface_addr is the IP address of the interface I wish to route 
multicast packets through.  However this did not work.


Another attempt:

memset(&addrp->sin_addr, 255, sizeof(addrp->sin_addr));
memset(&route, 0, sizeof(route));
memcpy(&route.rt_gateway, addrp, sizeof(*addrp));

addrp->sin_family = AF_INET;
addrp->sin_port = 0;
addrp->sin_addr.s_addr = INADDR_ANY;
memcpy(&route.rt_dst, addrp, sizeof(*addrp));
memcpy(&route.rt_genmask, addrp, sizeof(*addrp));

route.rt_dev = ifr.ifr_name;
route.rt_flags = RTF_UP|RTF_GATEWAY|RTF_MULTICAST;
route.rt_metric = 0;

if (ioctl(s, SIOCADDRT, &route)) {
    if (errno != EEXIST) {
        dbg_printf("Error setting multi route!!!!!!!!\n");
        perror("SIOCADDRT 4");
        goto out;
    }
}


In the above case, I do get the "Error setting multi route!!" message.

If anyone has an idea of what I am doing wrong, I am all ears.

Thank you,

Chad Handrich


-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss



More information about the Ecos-discuss mailing list