- <a href="https://www.cnblogs.com/listenerln/p/11101597.html">https://www.cnblogs.com/listenerln/p/11101597.html</a>
复制代码- 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; }
|