DLI support incomplete ?

From: <brian_at_hotrats.mit.edu>
Date: Thu, 29 Feb 96 23:34:18 -0500

I am trying to port a network-access daemon from Ultrix to DU
(currently V3.2A). It uses DLI datagram sockets for receiving
multicast packets in a proprietary format.

For reasons of efficiency, I need to be able to not only ENABLE
multicast addresses, but to subsequently DISABLE them.

Under Ultrix, this was done using this code:


typedef struct {
    int id;
    struct sockaddr_dl info;
} socket_info;

int delete_multicast(socket_info *sock,unsigned char *addr)
{
    struct ifreq ifr;

    ifr.ifr_ifru.ifru_addr.sa_family = AF_DLI;
    sprintf(ifr.ifr_name,"%s%d",sock->info.dli_device.dli_devname,
            sock->info.dli_device.dli_devnumber);

    bcopy(addr,ifr.ifr_ifru.ifru_addr.sa_data,DLI_EADDRSIZE);

    return(ioctl(sock->id,SIOCDELMULTI,&ifr));
}


This compiles and runs without errors on DU 3.2A, but tests show that
multicasts sent to the "deleted" address are still received.

A quick perusal of the Network Programmer's guide leads me to believe
that I might be able to reproduce the current functionality using the
DLPI interface, but the potential effort involved makes this
undesirable.


Questions for everyone (esp. DEC people):

Is this a known problem ?

Is there a work-around, or is it fixed in a later version of DU ?

Can I really do this with DLPI ?

----
Brian McAllister                             Internet: mcallister_at_mit.edu
Bates LINAC (MIT), Middleton, Ma             (617) 253-9537
Received on Fri Mar 01 1996 - 05:56:45 NZDT

This archive was generated by hypermail 2.4.0 : Wed Nov 08 2023 - 11:53:46 NZDT