diff options
| author | Rafael Zalamena <rzalamena@opensourcerouting.org> | 2019-06-20 15:21:17 -0300 | 
|---|---|---|
| committer | Rafael Zalamena <rzalamena@opensourcerouting.org> | 2019-06-27 15:38:33 -0300 | 
| commit | 46bd4645d50ff7b682370414395bd9c5fcd9436c (patch) | |
| tree | ee6f3d672db0e68afd0b9a3dc22d7055736f75a6 /yang | |
| parent | eae1601c4d97cf54d977c6b804a2196224836673 (diff) | |
yang: import EIGRP YANG model
Based on Cisco YANG model but simplified to look more like FRR's CLI
options and types.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Diffstat (limited to 'yang')
| -rw-r--r-- | yang/frr-eigrpd.yang | 335 | 
1 files changed, 335 insertions, 0 deletions
diff --git a/yang/frr-eigrpd.yang b/yang/frr-eigrpd.yang new file mode 100644 index 0000000000..8e18d39e3c --- /dev/null +++ b/yang/frr-eigrpd.yang @@ -0,0 +1,335 @@ +module frr-eigrpd { +  yang-version 1.1; +  namespace "http://frrouting.org/yang/eigrpd"; +  prefix frr-eigrpd; + +  import ietf-inet-types { +    prefix inet; +  } +  import ietf-yang-types { +    prefix yang; +  } +  import frr-interface { +    prefix frr-interface; +  } +  import frr-route-types { +    prefix frr-route-types; +  } + +  organization "Free Range Routing"; +  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 eigrpd daemon."; + +  revision 2019-06-19 { +    description "Initial revision."; +    reference +      "RFC 7868: Cisco's Enhanced Interior Gateway Routing Protocol (EIGRP)."; +  } + +  /* +   * Types specification. +   */ +  typedef autonomous-system { +    description "Administrative domain identification for a network"; +    type uint16 { +      range 1..65535; +    } +  } + +  typedef authentication-type { +    description "Authentication types"; +    type enumeration { +      enum none { +        description "Don't authenticate"; +        value 0; +      } + +      enum text { +        description "User defined text"; +        value 1; +      } + +      enum md5 { +        description "MD5 algorithm"; +        value 2; +      } + +      enum hmac-sha2 { +        description "HMAC SHA256 algorithm"; +        value 3; +      } +    } +  } + +  /* +   * EIGRP operational data. +   */ +  container eigrpd { +    list instance { +      key "asn vrf"; +      description "EIGRP autonomous system instance"; + +      leaf asn { +        description "Autonomous System Number"; +        type autonomous-system; +      } + +      leaf vrf { +        description "Virtual Routing Domain name"; +        type string { +          length "0..16"; +        } +      } + +      /* +       * Configurations. +       */ +      leaf router-id { +        description "Router identification"; +        type inet:ipv4-address; +      } + +      leaf-list passive-interface { +        description "List of suppressed interfaces"; +        type string { +          length "1..16"; +        } +      } + +      leaf active-time { +        description "ACTIVE time limit in minutes (0 disables limit)"; +        units minutes; +        type uint16 { +          range "0..65535"; +        } +      } + +      leaf variance { +        description "Control load balance variance"; +        type uint8 { +          range "1..128"; +        } +      } + +      leaf maximum-paths { +        description "Most number of paths to forward packets to"; +        type uint8 { +          range "1..32"; +        } +      } + +      container metric-weights { +        description +          "Metrics and parameters for advertisement. + +           EIGRP calculates the composite metric with the following formula: + +               metric = 256 * ({(K1*BW) + [(K2*BW)/(256-LOAD)] + (K3*DELAY)} * +                        (K5/(REL+K4))) + +           Composite calculation: +                                                                         K5 +               metric =[(K1*Net-Throughput) + Latency)+(K6*ExtAttr)] * ------ +                                                                       K4+Rel + +           RFC 7868 Sections 5.5 and 5.6.2.5."; + +        leaf K1 { +          description "Bandwidth coefficient."; +          type uint8 { +            range "0..255"; +          } +        } + +        leaf K2 { +          description "Bandwidth on load coefficient."; +          type uint8 { +            range "0..255"; +          } +        } + +        leaf K3 { +          description "Delay or latency-based coefficient."; +          type uint8 { +            range "0..255"; +          } +        } + +        leaf K4 { +          description "Link quality coefficient."; +          type uint8 { +            range "0..255"; +          } +        } + +        leaf K5 { +          description "Packet loss coefficient."; +          type uint8 { +            range "0..255"; +          } +        } + +        leaf K6 { +          description "Jitter coefficient."; +          type uint8 { +            range "0..255"; +          } +        } +      } + +      leaf-list network { +        description "Enable EIGRP on the specific network"; +        type inet:ipv4-prefix; +      } + +      leaf-list neighbor { +        description "Specific EIGRP neighbor"; +        type inet:ipv4-prefix; +      } + +      list redistribute { +        description "Redistribute routes learned from other routing protocols"; + +        key "protocol"; + +        leaf protocol { +          description "Routing protocol"; +          type frr-route-types:frr-route-types-v4; +          must '. != "eigrp"'; +        } + +        leaf route-map { +          description +            "Applies the conditions of the specified route-map to +             routes that are redistributed into the EIGRP routing +             instance"; +          type string { +            length "1..max"; +          } +        } + +        container metrics { +          description "Metric for the redistributed routes"; + +          leaf bandwidth { +            description "Bandwidth metric in Kbits per second"; +            type uint32 { +              range "1..4294967295"; +            } +          } + +          leaf delay { +            description "Delay metric"; +            units microseconds; +            type uint32 { +              range "0..4294967295"; +            } +          } + +          leaf reliability { +            description "Reliability metric"; +            type uint32 { +              range "0..255"; +            } +          } + +          leaf load { +            description "Effective bandwidth usage"; +            type uint32 { +              range "1..255"; +            } +          } + +          leaf mtu { +            description "Path Maximum Transmission Unit"; +            type uint32 { +              range "1..65535"; +            } +          } +        } +      } +    } +  } + +  /* +   * EIGRP interface configurations. +   */ +   augment "/frr-interface:lib/frr-interface:interface" { +     container eigrp { +       description "EIGRP interface parameters"; + +       leaf delay { +         description "Throughput delay"; +         type uint32 { +           range "1..16777215"; +         } +         default 10; +       } + +       leaf bandwidth { +         description "Interface bandwidth value"; +         type uint32 { +           range "1..10000000"; +         } +         default 100000; +       } + +       leaf hello-interval { +         description "Hello packet interval"; +         type uint16 { +           range "1..65535"; +         } +         units seconds; +         default 5; +       } + +       leaf hold-time { +         description "Timeout amount to consider neighbor down"; +         type uint16 { +           range "1..65535"; +         } +         units seconds; +         default 15; +       } + +       leaf split-horizon { +         description "Perform split horizon loop preventing technique"; +         type boolean; +         default true; +       } + +       /* +        * Per AS configuration. +        */ +       list instance { +         description "Autonomous System specific configuration"; + +         key "asn"; + +         leaf asn { +           description "Autonomous System Number"; +           type autonomous-system; +         } + +         leaf-list summarize-addresses { +           description "Peform address summarization"; +           type inet:ipv4-prefix; +         } + +         leaf authentication { +           description "Authentication digest algorithm"; +           type authentication-type; +           default "none"; +         } + +         leaf keychain { +           description "FRR key chain name to use with authentication"; +           type string; +         } +       } +     } +   } +}  | 
