module ietf-te-path-computation { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-te-path-computation"; // replace with IANA namespace when assigned prefix "tepc"; import ietf-inet-types { prefix "inet"; } import ietf-yang-types { prefix "yang-types"; } import ietf-network-topology { prefix "nt"; } import ietf-te { prefix "te"; } import ietf-te-types { prefix "te-types"; } organization "Traffic Engineering Architecture and Signaling (TEAS) Working Group"; contact "WG Web: WG List: WG Chair: Lou Berger WG Chair: Vishnu Pavan Beeram "; description "YANG model for stateless TE path computation"; revision "2016-10-10" { description "Initial revision"; reference "YANG model for stateless TE path computation"; } /* * Features */ feature stateless-path-computation { description "This feature indicates that the system supports stateless path computation."; } /* * Groupings */ grouping Path { list _telink { key 'link-ref'; config false; uses nt:link-ref; description "List of telink refs."; } uses te-types:generic-path-constraints; leaf path-id { type yang-types:uuid; config false; description "path-id ref."; } description "Path is described by an ordered list of TE Links."; } grouping PathCompServicePort { leaf source { type inet:ip-address; description "TE tunnel source address."; } leaf destination { type inet:ip-address; description "P2P tunnel destination address"; } leaf src-tp-id { type binary; description "TE tunnel source termination point identifier."; } leaf dst-tp-id { type binary; description "TE tunnel destination termination point identifier."; } uses te:bidir-assoc-properties; description "Path Computation Service Port grouping."; } grouping PathComputationService { leaf-list _path-ref { type leafref { path '/paths/path/path-id'; } config false; description "List of previously computed path references."; } container _servicePort { uses PathCompServicePort; description "Path Computation Service Port."; } uses te-types:generic-path-constraints; uses te-types:generic-path-optimization; description "Path computation service."; } grouping synchronization-info { description "Information for sync"; list synchronization { key "synchronization-index"; description "sync list"; leaf synchronization-index { type uint32; description "index"; } container svec { description "Synchronization VECtor"; leaf relaxable { type boolean; default true; description "If this leaf is true, path computation process is free to ignore svec content. otherwise it must take into account this svec."; } leaf link-diverse { type boolean; default false; description "link-diverse"; } leaf node-diverse { type boolean; default false; description "node-diverse"; } leaf srlg-diverse { type boolean; default false; description "srlg-diverse"; } leaf-list request-id-number { type uint32; description "This list reports the set of M path computation requests that must be synchronized."; } } uses te-types:generic-path-constraints; } } grouping no-path-info { description "no-path-info"; container no-path { description "no-path container"; } } /* * Root container */ container paths { list path { key "path-id"; config false; uses Path; description "List of previous computed paths."; } description "Root container for path-computation"; } container pathComputationService { config false; uses PathComputationService; description "Service for computing paths."; } /** * AUGMENTS TO TE RPC */ augment "/te:tunnels-rpc/te:input/te:tunnel-info" { description "statelessComputeP2PPath input"; list request-list { key "request-id-number"; description "request-list"; leaf request-id-number { type uint32; mandatory true; description "Each path computation request is uniquely identified by the request-id-number. It must be present also in rpcs."; } list servicePort { min-elements 1; uses PathCompServicePort; description "List of service ports."; } uses te-types:generic-path-constraints; uses te-types:generic-path-optimization; } uses synchronization-info; } augment "/te:tunnels-rpc/te:output/te:result" { description "statelessComputeP2PPath output"; list response { key response-index; config false; description "response"; leaf response-index { type uint32; description "The list key that has to reuse request-id-number."; } choice response-type { config false; description "response-type"; case no-path-case { uses no-path-info; } case path-case { container pathCompService { uses PathComputationService; description "Path computation service."; } } } } } }