add multicast address like everyone else, using if_ioctl

This commit is contained in:
chopps 1999-06-30 03:32:40 +00:00
parent 1d74ac18fa
commit dc3a7247ce
1 changed files with 8 additions and 16 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: iso_snpac.c,v 1.20 1998/08/25 04:43:46 thorpej Exp $ */
/* $NetBSD: iso_snpac.c,v 1.21 1999/06/30 03:32:40 chopps Exp $ */
/*-
* Copyright (c) 1991, 1993
@ -257,25 +257,17 @@ iso_setmcasts(ifp, req)
{all_es_snpa, all_is_snpa, all_l1is_snpa, all_l2is_snpa, 0};
struct ifreq ifr;
register caddr_t *cpp;
int doreset = 0;
bzero((caddr_t) & ifr, sizeof(ifr));
for (cpp = (caddr_t *) addrlist; *cpp; cpp++) {
bcopy(*cpp, (caddr_t) ifr.ifr_addr.sa_data, 6);
if (req == RTM_ADD) {
if (ether_addmulti(&ifr, (struct ethercom *)ifp)
== ENETRESET)
doreset++;
else if (ether_delmulti(&ifr, (struct ethercom *)ifp)
== ENETRESET)
doreset++;
}
}
if (doreset) {
if (ifp->if_reset)
(*ifp->if_reset) (ifp);
else
printf("iso_setmcasts: %s needs reseting to receive iso mcasts\n",
if (req == RTM_ADD && (ifp->if_ioctl == 0 ||
(*ifp->if_ioctl)(ifp, SIOCADDMULTI, (caddr_t)&ifr) != 0))
printf("iso_setmcasts: %s unable to add mcast\n",
ifp->if_xname);
else if (req == RTM_DELETE && (ifp->if_ioctl == 0 ||
(*ifp->if_ioctl)(ifp, SIOCDELMULTI, (caddr_t)&ifr) != 0))
printf("iso_setmcasts: %s unable to delete mcast\n",
ifp->if_xname);
}
}