_cleanup_(network_config_section_freep) NetworkConfigSection *n = NULL;
_cleanup_(fdb_entry_freep) FdbEntry *fdb_entry = NULL;
- _cleanup_free_ struct ether_addr *mac_addr = NULL;
int r;
assert(network);
if (network->n_static_fdb_entries >= STATIC_FDB_ENTRIES_PER_NETWORK_MAX)
return -E2BIG;
- /* allocate space for MAC address. */
- mac_addr = new0(struct ether_addr, 1);
- if (!mac_addr)
- return -ENOMEM;
-
/* allocate space for and FDB entry. */
fdb_entry = new(FdbEntry, 1);
if (!fdb_entry)
/* init FDB structure. */
*fdb_entry = (FdbEntry) {
.network = network,
- .mac_addr = TAKE_PTR(mac_addr),
.vni = VXLAN_VID_MAX + 1,
.fdb_ntf_flags = NEIGHBOR_CACHE_ENTRY_FLAGS_SELF,
};
if (r < 0)
return rtnl_log_create_error(r);
- r = sd_netlink_message_append_data(req, NDA_LLADDR, fdb_entry->mac_addr, sizeof(struct ether_addr));
+ r = sd_netlink_message_append_data(req, NDA_LLADDR, &fdb_entry->mac_addr, sizeof(fdb_entry->mac_addr));
if (r < 0)
return rtnl_log_create_error(r);
}
network_config_section_free(fdb_entry->section);
- free(fdb_entry->mac_addr);
free(fdb_entry);
}
/* read in the MAC address for the FDB table. */
r = sscanf(rvalue, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
- &fdb_entry->mac_addr->ether_addr_octet[0],
- &fdb_entry->mac_addr->ether_addr_octet[1],
- &fdb_entry->mac_addr->ether_addr_octet[2],
- &fdb_entry->mac_addr->ether_addr_octet[3],
- &fdb_entry->mac_addr->ether_addr_octet[4],
- &fdb_entry->mac_addr->ether_addr_octet[5]);
+ &fdb_entry->mac_addr.ether_addr_octet[0],
+ &fdb_entry->mac_addr.ether_addr_octet[1],
+ &fdb_entry->mac_addr.ether_addr_octet[2],
+ &fdb_entry->mac_addr.ether_addr_octet[3],
+ &fdb_entry->mac_addr.ether_addr_octet[4],
+ &fdb_entry->mac_addr.ether_addr_octet[5]);
if (r != ETHER_ADDR_LEN) {
log_syntax(unit, LOG_ERR, filename, line, 0, "Not a valid MAC address, ignoring assignment: %s", rvalue);