e.g. option macaddr "@eth0" tells netifd to use the MAC of interface eth0. Use case: set MAC address of a bridge interface to a specific interface's MAC regardless of bridge/interface initialization order.
Signed-off-by: Günther Kelleter <guenther.kelle...@devolo.de> --- device.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/device.c b/device.c index 82596e4..c63ddc7 100644 --- a/device.c +++ b/device.c @@ -256,7 +256,21 @@ device_init_settings(struct device *dev, struct blob_attr **tb) } if ((cur = tb[DEV_ATTR_MACADDR])) { - ea = ether_aton(blobmsg_data(cur)); + const char *data = blobmsg_data(cur); + struct device_settings ds = {0}; + if (data[0] == '@') { + struct device dev = {0}; + strncpy(dev.ifname, data + 1, sizeof dev.ifname); + dev.ifname[sizeof dev.ifname - 1] = '\0'; + system_if_get_settings(&dev, &ds); + if (ds.flags & DEV_OPT_MACADDR) { + ea = (struct ether_addr *)ds.macaddr; + } else { + ea = NULL; + } + } else { + ea = ether_aton(blobmsg_data(cur)); + } if (ea) { memcpy(s->macaddr, ea, 6); s->flags |= DEV_OPT_MACADDR; -- 2.10.0.100.gddd73ec _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev