##
# Copyright 2015 Telefónica Investigación y Desarrollo, S.A.U.
# This file is part of openmano
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# For those usages not covered by the Apache License, Version 2.0 please
# contact with: nfvlabs@tid.es
##

network:
    name:    network-name
    type:    data             # "bridge_data" or "bridge_man" for control plane, "data" for dataplane, or "ptp" for point to point dataplane
    provider:physical:   null # needed a value for a bridge_data, bridge_man,
                              # can be:
                              #    bridge:iface_name  : attached to a iface_name host bridge interface
                              #    macvtap:iface_name : attached to a iface_name host physical interface
                              #    default            : attached to the default host interface
                              #    null               : for data or ptp types. (To be changed in future versions)
    shared:              true # true, false: if shared it will consider by OPENVIM an EXTERNAL network available at OPENMANO

