
<!--
Copyright 2017-present Open Networking Foundation

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.
-->


<div class="row">
  <div class="col-sm-4">
    <a href="/admin/vrouter/vroutertenant/" class="btn btn-primary">vRouter Tenants</a>
  </div>
  <div class="col-sm-4">
    <a href="/admin/vrouter/vrouterapps/" class="btn btn-primary">vRouter Apps</a>
  </div>
  <div class="col-sm-4">
    <a href="/admin/vrouter/vrouterdevices/" class="btn btn-primary">vRouter Devices</a>
  </div>
</div>
<div class="row">
  <div class="col-sm-4">
    <a href="/admin/vrouter/vrouterports/" class="btn btn-primary">vRouter Ports</a>
  </div>
  <div class="col-sm-4">
    <a href="/admin/vrouter/vrouterinterfaces/" class="btn btn-primary">vRouter Interfaces</a>
  </div>
  <div class="col-sm-4">
    <a href="/admin/vrouter/vrouterips/" class="btn btn-primary">vRouter Ips</a>
  </div>
</div>