/** * Enable multicast on the given interface. */ void interfaces_setup_multicast(struct lldpd *cfg, const char *name, int remove) { int rc; size_t i, j; const u_int8_t *mac; const u_int8_t zero[ETHER_ADDR_LEN] = {}; for (i = 0; cfg->g_protocols[i].mode != 0; i++) { if (!cfg->g_protocols[i].enabled) continue; for (mac = cfg->g_protocols[i].mac1, j = 0; j < 3; mac += ETHER_ADDR_LEN, j++) { if (memcmp(mac, zero, ETHER_ADDR_LEN) == 0) break; if ((rc = priv_iface_multicast(name, mac, !remove)) != 0) { errno = rc; if (errno != ENOENT) log_debug("interfaces", "unable to %s %s address to multicast filter for %s (%s)", (remove)?"delete":"add", cfg->g_protocols[i].name, name, strerror(rc)); } } } }
/** * Enable multicast on the given interface. */ void interfaces_setup_multicast(struct lldpd *cfg, const char *name, int remove) { int i, rc; for (i=0; cfg->g_protocols[i].mode != 0; i++) { if (!cfg->g_protocols[i].enabled) continue; if ((rc = priv_iface_multicast(name, cfg->g_protocols[i].mac, !remove)) != 0) { errno = rc; if (errno != ENOENT) log_info("interfaces", "unable to %s %s address to multicast filter for %s", (remove)?"delete":"add", cfg->g_protocols[i].name, name); } } }