mirror of
				https://git.proxmox.com/git/mirror_frr
				synced 2025-11-04 15:30:26 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			325 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			YANG
		
	
	
	
	
	
			
		
		
	
	
			325 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			YANG
		
	
	
	
	
	
module frr-interface {
 | 
						|
  yang-version 1.1;
 | 
						|
  namespace "http://frrouting.org/yang/interface";
 | 
						|
  prefix frr-interface;
 | 
						|
 | 
						|
  import frr-vrf {
 | 
						|
    prefix frr-vrf;
 | 
						|
  }
 | 
						|
 | 
						|
  import ietf-interfaces {
 | 
						|
    prefix ietf-if;
 | 
						|
  }
 | 
						|
 | 
						|
  import ietf-yang-types {
 | 
						|
    prefix yang;
 | 
						|
  }
 | 
						|
 | 
						|
  organization
 | 
						|
    "FRRouting";
 | 
						|
  contact
 | 
						|
    "FRR Users List:       <mailto:frog@lists.frrouting.org>
 | 
						|
     FRR Development List: <mailto:dev@lists.frrouting.org>";
 | 
						|
  description
 | 
						|
    "This module defines a model for managing FRR interfaces.
 | 
						|
 | 
						|
     Copyright 2020 FRRouting
 | 
						|
 | 
						|
     Redistribution and use in source and binary forms, with or without
 | 
						|
     modification, are permitted provided that the following conditions
 | 
						|
     are met:
 | 
						|
 | 
						|
     1. Redistributions of source code must retain the above copyright notice,
 | 
						|
     this list of conditions and the following disclaimer.
 | 
						|
 | 
						|
     2. Redistributions in binary form must reproduce the above copyright
 | 
						|
     notice, this list of conditions and the following disclaimer in the
 | 
						|
     documentation and/or other materials provided with the distribution.
 | 
						|
 | 
						|
     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | 
						|
     \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | 
						|
     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 | 
						|
     A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 | 
						|
     HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 | 
						|
     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 | 
						|
     LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 | 
						|
     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 | 
						|
     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | 
						|
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | 
						|
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.";
 | 
						|
 | 
						|
  revision 2020-02-05 {
 | 
						|
    description
 | 
						|
      "Added operational data";
 | 
						|
  }
 | 
						|
  revision 2019-09-09 {
 | 
						|
    description
 | 
						|
      "Added interface-ref typedef";
 | 
						|
  }
 | 
						|
  revision 2018-03-28 {
 | 
						|
    description
 | 
						|
      "Initial revision.";
 | 
						|
  }
 | 
						|
 | 
						|
  identity other {
 | 
						|
    base ietf-if:interface-type;
 | 
						|
    description
 | 
						|
      "Other type";
 | 
						|
  }
 | 
						|
 | 
						|
  identity unknown {
 | 
						|
    base ietf-if:interface-type;
 | 
						|
    description
 | 
						|
      "Unknown type";
 | 
						|
  }
 | 
						|
 | 
						|
  identity ethernet {
 | 
						|
    base ietf-if:interface-type;
 | 
						|
    description
 | 
						|
      "Ethernet type";
 | 
						|
  }
 | 
						|
 | 
						|
  identity exper-ethernet {
 | 
						|
    base ietf-if:interface-type;
 | 
						|
    description
 | 
						|
      "Experimental Ethernet type";
 | 
						|
  }
 | 
						|
 | 
						|
  identity loopback {
 | 
						|
    base ietf-if:interface-type;
 | 
						|
    description
 | 
						|
      "Loopback type";
 | 
						|
  }
 | 
						|
 | 
						|
  identity pimreg {
 | 
						|
    base ietf-if:interface-type;
 | 
						|
    description
 | 
						|
      "PIMSM Registration.";
 | 
						|
  }
 | 
						|
 | 
						|
  identity ipip {
 | 
						|
    base ietf-if:interface-type;
 | 
						|
    description
 | 
						|
      "IPIP Tunnel.";
 | 
						|
  }
 | 
						|
 | 
						|
  identity ipip6 {
 | 
						|
    base ietf-if:interface-type;
 | 
						|
    description
 | 
						|
      "IPIP6 Tunnel.";
 | 
						|
  }
 | 
						|
 | 
						|
  identity ipgre {
 | 
						|
    base ietf-if:interface-type;
 | 
						|
    description
 | 
						|
      "GRE over IP.";
 | 
						|
  }
 | 
						|
 | 
						|
  typedef interface-ref {
 | 
						|
    type leafref {
 | 
						|
      path "/frr-interface:lib/frr-interface:interface/frr-interface:name";
 | 
						|
      require-instance false;
 | 
						|
    }
 | 
						|
    description
 | 
						|
      "Reference to an interface";
 | 
						|
  }
 | 
						|
 | 
						|
  typedef if-flags-type {
 | 
						|
    type enumeration {
 | 
						|
      enum "up" {
 | 
						|
        value 1;
 | 
						|
        description
 | 
						|
          "Active and ready to transfer packets.";
 | 
						|
      }
 | 
						|
      enum "broadcast" {
 | 
						|
        value 2;
 | 
						|
        description
 | 
						|
          "Broadcast enabled.";
 | 
						|
      }
 | 
						|
      enum "debug" {
 | 
						|
        value 3;
 | 
						|
        description
 | 
						|
          "Debug mode.";
 | 
						|
      }
 | 
						|
      enum "loopback" {
 | 
						|
        value 4;
 | 
						|
        description
 | 
						|
          "Loopback interface.";
 | 
						|
      }
 | 
						|
      enum "point-to-point" {
 | 
						|
        value 5;
 | 
						|
        description
 | 
						|
          "Point-to-Point link.";
 | 
						|
      }
 | 
						|
      enum "notrailers" {
 | 
						|
        value 6;
 | 
						|
        description
 | 
						|
          "This flag is unused in Linux, but it exists for BSD compatibility.
 | 
						|
          Avoid use of trailers";
 | 
						|
      }
 | 
						|
      enum "running" {
 | 
						|
        value 7;
 | 
						|
        description
 | 
						|
          "Up and Running.";
 | 
						|
      }
 | 
						|
      enum "noarp" {
 | 
						|
        value 8;
 | 
						|
        description
 | 
						|
          "Can't perform address resolution protocol.";
 | 
						|
      }
 | 
						|
      enum "promisc" {
 | 
						|
        value 9;
 | 
						|
        description
 | 
						|
          "Promiscuous mode. Receive all packets.";
 | 
						|
      }
 | 
						|
      enum "allmulti" {
 | 
						|
        value 10;
 | 
						|
        description
 | 
						|
          "Receive all multicast packets.";
 | 
						|
      }
 | 
						|
      enum "simplex" {
 | 
						|
        value 11;
 | 
						|
        description
 | 
						|
          "Does not Rx or Tx at the sametime.";
 | 
						|
      }
 | 
						|
      enum "link0" {
 | 
						|
        value 12;
 | 
						|
        description
 | 
						|
          "Link0.";
 | 
						|
      }
 | 
						|
      enum "link1" {
 | 
						|
        value 13;
 | 
						|
        description
 | 
						|
          "Link1.";
 | 
						|
      }
 | 
						|
      enum "link2" {
 | 
						|
        value 14;
 | 
						|
        description
 | 
						|
          "Link2.";
 | 
						|
      }
 | 
						|
      enum "multicast" {
 | 
						|
        value 15;
 | 
						|
        description
 | 
						|
          "Supports multicast transmission.";
 | 
						|
      }
 | 
						|
      enum "notransmit" {
 | 
						|
        value 16;
 | 
						|
        description
 | 
						|
          "Interface is no transmit mode.";
 | 
						|
      }
 | 
						|
      enum "nortexch" {
 | 
						|
        value 17;
 | 
						|
        description
 | 
						|
          "No routing info exchange.";
 | 
						|
      }
 | 
						|
      enum "virtual" {
 | 
						|
        value 18;
 | 
						|
        description
 | 
						|
          "Virtual interface.";
 | 
						|
      }
 | 
						|
      enum "ipv4" {
 | 
						|
        value 19;
 | 
						|
        description
 | 
						|
          "IPv4 enabled.";
 | 
						|
      }
 | 
						|
      enum "ipv6" {
 | 
						|
        value 20;
 | 
						|
        description
 | 
						|
          "IPv6 enabled.";
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  grouping if-common-operational {
 | 
						|
    leaf if-index {
 | 
						|
      type int32 {
 | 
						|
        range "0..2147483647";
 | 
						|
      }
 | 
						|
      description
 | 
						|
        "Interface index.";
 | 
						|
    }
 | 
						|
 | 
						|
    leaf mtu {
 | 
						|
      type uint16;
 | 
						|
      description
 | 
						|
        "The size of the largest IPV4 packet that the interface
 | 
						|
         will send and receive.";
 | 
						|
    }
 | 
						|
 | 
						|
    leaf mtu6 {
 | 
						|
      type uint32;
 | 
						|
      description
 | 
						|
        "The size of the largest IPV6 packet that the interface
 | 
						|
         will send and receive.";
 | 
						|
    }
 | 
						|
 | 
						|
    leaf speed {
 | 
						|
      type uint32;
 | 
						|
      description
 | 
						|
        "Interface speed.";
 | 
						|
    }
 | 
						|
 | 
						|
    leaf metric {
 | 
						|
      type uint32;
 | 
						|
      description
 | 
						|
        "Interface metric.";
 | 
						|
    }
 | 
						|
 | 
						|
    leaf flags {
 | 
						|
      type if-flags-type;
 | 
						|
      description
 | 
						|
        "Interface flags.";
 | 
						|
    }
 | 
						|
 | 
						|
    leaf type {
 | 
						|
      type identityref {
 | 
						|
        base ietf-if:interface-type;
 | 
						|
      }
 | 
						|
      description
 | 
						|
        "The link type of the interface.";
 | 
						|
    }
 | 
						|
 | 
						|
    leaf phy-address {
 | 
						|
      type yang:mac-address;
 | 
						|
      description
 | 
						|
        "The interface's MAC address.";
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  container lib {
 | 
						|
    list interface {
 | 
						|
      key "name vrf";
 | 
						|
      description
 | 
						|
        "Interface.";
 | 
						|
      leaf name {
 | 
						|
        type string {
 | 
						|
          length "1..16";
 | 
						|
        }
 | 
						|
        description
 | 
						|
          "Interface name.";
 | 
						|
      }
 | 
						|
 | 
						|
      leaf vrf {
 | 
						|
        type string {
 | 
						|
          length "1..16";
 | 
						|
        }
 | 
						|
        /* yang version 0.16 having issue accessing leafref. */ 
 | 
						|
        /* type frr-vrf:vrf-ref;*/
 | 
						|
        description
 | 
						|
          "VRF this interface is associated with.";
 | 
						|
      }
 | 
						|
 | 
						|
      leaf description {
 | 
						|
        type string;
 | 
						|
        description
 | 
						|
          "Interface description.";
 | 
						|
      }
 | 
						|
 | 
						|
      container state {
 | 
						|
        config false;
 | 
						|
        uses if-common-operational;
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |