-enum {
- SDEV_NAME,
- SDEV_TYPE,
- SDEV_MTU,
- SDEV_MACADDR,
- SDEV_TXQUEUELEN,
- __SDEV_MAX,
-};
-
-static const struct uci_parse_option dev_opts[__SDEV_MAX] = {
- [SDEV_NAME] = { "name", UCI_TYPE_STRING },
- [SDEV_TYPE] = { "type", UCI_TYPE_STRING },
- [SDEV_MTU] = { "mtu", UCI_TYPE_STRING },
- [SDEV_MACADDR] = { "macaddr", UCI_TYPE_STRING },
- [SDEV_TXQUEUELEN] = { "txqueuelen", UCI_TYPE_STRING },
-};
-
-static bool
-add_int_option(struct uci_option *o, unsigned int *dest)
-{
- char *error = NULL;
- int val;
-
- if (!o)
- return false;
-
- val = strtoul(o->v.string, &error, 0);
- if (error && *error)
- return false;
-
- *dest = val;
- return true;
-}
-
-static void
-config_init_device_settings(struct device *dev, struct uci_option **opts)
-{
- struct ether_addr *ea;
-
- dev->flags = 0;
-
- if (add_int_option(opts[SDEV_MTU], &dev->mtu))
- dev->flags |= DEV_OPT_MTU;
-
- if (add_int_option(opts[SDEV_TXQUEUELEN], &dev->txqueuelen))
- dev->flags |= DEV_OPT_TXQUEUELEN;
-
- if (opts[SDEV_MACADDR]) {
- ea = ether_aton(opts[SDEV_MACADDR]->v.string);
- if (ea) {
- memcpy(dev->macaddr, ea, sizeof(dev->macaddr));
- dev->flags |= DEV_OPT_MACADDR;
- }
- }
-}
-