/*
WARNING:
This yang model is just for fuction ONOS opensource project demo purpose only,
And is subject to change in future, Huawei does not commit provide compatibilty
in commercial product.
*/
module ne-l3vpncomm-type {
    namespace "l3vpn-comm-type";
    prefix l3vpncomm-type;
    organization "Huawei Technologies Co., Ltd";
    contact "Huawei Industrial Base
        Bantian, Longgang
        Shenzhen 518129
        People's Republic of China
        Website: http://www.huawei.com
        Email: support@huawei.com";
    description "";
    revision "2014-12-25" {
        description "Initial version";
    }
    typedef l3vpncommonL3vpnPrefixType {
        type enumeration {
            enum "ipv4uni" {
                value 0;
                description "ipv4uni:";
            }
            enum "ipv6uni" {
                value 1;
                description "ipv6uni:";
            }
        }
        description "";
        }
        typedef l3vpncommonVrfRtType {
            type enumeration {
                enum "export_extcommunity" {
                    value 0;
                    description "export-extcommunity:";
                }
                enum "import_extcommunity" {
                    value 1;
                    description "import-extcommunity:";
                }
            }
            description "";
        }
        typedef ipv4Address {
        type string {
            length "0..255";
            pattern "((([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}
            ([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))";
        }
    }
}
