• openwrt 一个接口多IP, 多协议配置 (alias)


    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: 

     1 static bool __interface_add(struct interface *iface, struct blob_attr *config, bool alias)
     2 {
     3     struct blob_attr *tb[IFACE_ATTR_MAX];
     4     struct blob_attr *cur;
     5 
     6     blobmsg_parse(iface_attrs, IFACE_ATTR_MAX, tb,
     7               blob_data(config), blob_len(config));
     8 
     9     if (alias) {
    10         if ((cur = tb[IFACE_ATTR_INTERFACE]))
    11             iface->parent_ifname = blobmsg_data(cur);
    12 
    13         if (!iface->parent_ifname)
    14             return false;
    15     } else {
    16         if ((cur = tb[IFACE_ATTR_IFNAME]))
    17             iface->ifname = blobmsg_data(cur);
    18     }
    19 
    20     iface->config = config;
    21     vlist_add(&interfaces, &iface->node, iface->name);
    22     return true;
    23 }
  • 相关阅读:
    memcached与redis 对比
    Java中的成员初始化顺序和内存分配过程
    mysql inner join,full outer join,left join,right jion
    事务 相关概念理解
    最简单的重试机制
    垃圾脚本黑我linux服务器
    趣解curl
    面试题
    Java中OutOfMemoryError(内存溢出)的三种情况及解决办法
    PermGen space
  • 原文地址:https://www.cnblogs.com/listenerln/p/11101597.html
Copyright © 2020-2023  润新知