- config interface 'lan'
- option type 'bridge'
- option ifname 'eth0.1'
- option proto 'static'
- option ipaddr '192.168.1.1'
- option netmask '255.255.255.0'
- option ip6assign '60'
- # 接口 lan 的别名
- config alias
- option interface 'lan'
- #option proto 'dhcp'
- option proto 'static'
- option ipaddr '192.168.11.1'
- option netmask '255.255.255.0'
- option ip6assign '60'
接口处理过程在 neifd -> config.c-> config_init_interfaces() -> __interface_add()
处理了 interface 和 alias 的 section,
如果是 alias 就将 setction 中的 option interface 'lan' 作为当前接口的 parent_ifname
处理 alias:
- static bool __interface_add(struct interface *iface, struct blob_attr *config, bool alias)
- {
- struct blob_attr *tb[IFACE_ATTR_MAX];
- struct blob_attr *cur;
- blobmsg_parse(iface_attrs, IFACE_ATTR_MAX, tb,
- blob_data(config), blob_len(config));
- if (alias) {
- if ((cur = tb[IFACE_ATTR_INTERFACE]))
- iface->parent_ifname = blobmsg_data(cur);
- if (!iface->parent_ifname)
- return false;
- } else {
- if ((cur = tb[IFACE_ATTR_IFNAME]))
- iface->ifname = blobmsg_data(cur);
- }
- iface->config = config;
- vlist_add(&interfaces, &iface->node, iface->name);
- return true;
- }
来源: http://www.bubuko.com/infodetail-3106391.html