STATUS socend_mcast_del(_END_OBJ_PAR *p, char *a) /* * Function: socend_mcast_del * Purpose: SENS interface to add a multicast address for the interface. * Parameters: p - pointer to VxWorks end_obj structure for device * a - pointer to address to delete * Returns: OK/ERROR */ { struct end_object *eo = (struct end_object *)p; socend_t *se = (socend_t *)eo->devObject.pDevice; int ret; if (ENETRESET == etherMultiDel(&eo->multiList, a)) { #if 0 bcm_amux_unregister(se->se_unit, (uint8 *)a, se->se_vlan); #endif ret = bcm_mcast_addr_remove(se->se_unit, (uint8 *)a, se->se_vlan); if (ret == BCM_E_NONE) { return (OK); } else { LOG_CLI((BSL_META("bcm_mcast_addr_remove failed ERROR : %s\n"), bcm_errmsg(ret))); LOG_INFO(BSL_LS_SYS_END, (BSL_META("socend_mcast_del: Unit %d Device %s%d Software RESET\n"), se->se_unit, eo->devObject.name, eo->devObject.unit)); } } return(ENOSYS); }
/* VA device multicast address delete handler. */ static STATUS vxworks_va_mcast_addr_del(END_OBJ *end, char *addr) { VxWorksVa *va = (void *)end; SSH_DEBUG(SSH_D_MIDOK, ("mcast addr del on %s", va->name)); etherMultiDel(&va->end.multiList, addr); return OK; }
/** * * NetdrvMCastDel - delete a multicast address for the device * * This routine removes a multicast address from whatever the driver * is listening for. It then resets the address filter. * * RETURNS: OK or ERROR. * * **/ LOCAL STATUS NetdrvMCastDel(END_DEVICE *pDrvCtrl, /* device pointer */ char* pAddress) /* address to be deleted */ { int error; if ((error = etherMultiDel (&pDrvCtrl->end.multiList, (char *)pAddress)) == ENETRESET) { NetdrvConfig(pDrvCtrl); } return (OK); }
LOCAL STATUS mirrorEndMCastAddrDel ( END_CTRL * pDrvCtrl, /* pointer to END_CTRL structure */ char * pAddr /* Address to delete from the table. */ ) { STATUS error; error = etherMultiDel(&pDrvCtrl->endObject.multiList, pAddr); if (error == ENETRESET) { pDrvCtrl->endObject.nMulti--; error = OK; } return (error == OK) ? OK : ERROR; }