Junos diameter configuration module
Version: 2019-01-01
module junos-nfx-conf-diameter { yang-version 1; namespace "http://yang.juniper.net/junos-nfx/conf/diameter"; prefix jc-diameter; import junos-common-ddl-extensions { prefix junos; revision-date "2019-01-01"; } import junos-common-types { prefix jt; revision-date "2019-01-01"; } import junos-nfx-conf-root { prefix jc; revision-date "2019-01-01"; } organization "Juniper Networks, Inc."; contact "yang-support@juniper.net"; description "Junos diameter configuration module"; revision "2019-01-01" { description "Junos: 21.3R1.9"; } augment /jc:configuration { uses diameter-group; } augment /jc:configuration/jc:groups { uses diameter-group; } grouping diameter-group { container diameter { presence "enable diameter"; description "Diameter protocol layer"; uses apply-advanced; container origin { presence "enable origin"; description "Origin attributes of this diameter instance"; uses apply-advanced; leaf realm { type string { length "1 .. 255"; } description "Origin realm of this diameter instance"; } leaf host { type string { length "1 .. 255"; } description "Origin host of this diameter instance"; } } // container origin list network-element { key "name"; ordered-by user; description "Network element of this diameter instance"; leaf name { type string { junos:posix-pattern "^[[:alnum:]][[:alnum:]_-]*$"; junos:pattern-message "Must be a string beginning with a number or letter and consisting of letters, numbers, dashes and underscores."; length "1 .. 255"; } description "Name for this network element"; } uses apply-advanced; container dne-origin { presence "enable dne-origin"; description "Optional origin filter of this networkd element"; uses apply-advanced; leaf realm { type string { length "1 .. 255"; } description "Origin realm of this network element"; } leaf host { type string { length "1 .. 255"; } description "Optional origin host of this network element"; } } // container dne-origin leaf-list function { type enumeration { enum "jsrc" { value 0; description "Function to use SRC application"; } enum "gx-plus" { value 1; description "Function to use GX-PLUS application"; } enum "sd-3gpp" { value 2; description "Function to use SD-3GPP application"; } enum "nasreq" { value 3; description "Function to use NASREQ application"; } enum "pcrf" { value 4; description "Function to use PCRF(GX) application"; } enum "ocs" { value 5; description "Function to use OCS(GY) application"; } enum "s6a" { value 6; description "Function to use S6A application"; } } max-elements 8; ordered-by user; description "Diameter function associated with by this network element"; } list peer { key "name"; ordered-by user; description "Peer associated with this network element"; leaf name { junos:must "("diameter peer $$")"; junos:must-message "diameter peer has to be defined"; type string { junos:posix-pattern "^[[:alnum:]][[:alnum:]_-]*$"; junos:pattern-message "Must be a string beginning with a number or letter and consisting of letters, numbers, dashes and underscores."; length "1 .. 255"; } description "Name of a peer associated with this network element"; } uses apply-advanced; leaf priority { type union { type string { pattern "<.*>|$.*"; } type uint32 { range "1 .. 65535"; } } description "Peer priority with this network element"; } } // list peer container forwarding { description "Forwarding configuration for this network-element"; uses apply-advanced; list route { key "name"; max-elements 256; ordered-by user; description "Routes associated with this network-element"; leaf name { junos:must "(unique "diameter network-element <*> forwarding route $$")"; junos:must-message "Route name has to be unique across all network-elements"; type string { junos:posix-pattern "^[[:alnum:]][[:alnum:]_-]*$"; junos:pattern-message "Must be a string beginning with a number or letter and consisting of letters, numbers, dashes and underscores."; length "1 .. 255"; } description "Name of a route associated with this network element"; } uses apply-advanced; container function { description "Diameter function and partition associated with route"; leaf function-name { type enumeration { enum "jsrc" { value 0; description "Function to use SRC application"; } enum "gx-plus" { value 1; description "Function to use GX-PLUS application"; } enum "sd-3gpp" { value 2; description "Function to use SD-3GPP application"; } enum "nasreq" { value 3; description "Function to use NASREQ application"; } enum "pcrf" { value 4; description "Function to use PCRF(GX) application"; } enum "ocs" { value 5; description "Function to use OCS(GY) application"; } enum "s6a" { value 6; description "Function to use S6A application"; } } } leaf partition { type string { junos:posix-pattern "^[[:alnum:]][[:alnum:]_-]*$"; junos:pattern-message "Must be a string beginning with a number or letter and consisting of letters, numbers, dashes and underscores."; length "1 .. 255"; } description "Diameter function partition name"; } } // container function container destination { description "Destination for this route"; leaf realm { type string { length "1 .. 255"; } description "Diameter destination realm"; } leaf host { type string { length "1 .. 255"; } description "Diameter destination host"; } } // container destination leaf metric { type union { type string { pattern "<.*>|$.*"; } type uint32 { range "0 .. 255"; } } description "Metric for this route"; } } // list route } // container forwarding } // list network-element list transport { key "name"; max-elements 31; ordered-by user; description "Diameter transport configuration"; leaf name { type string { junos:posix-pattern "^[[:alnum:]][[:alnum:]_-]*$"; junos:pattern-message "Must be a string beginning with a number or letter and consisting of letters, numbers, dashes and underscores."; length "1 .. 255"; } description "Name for this transport definition"; } uses apply-advanced; leaf address { type jt:ipaddr; description "Source IP address for a peer"; } choice instance { container logical-system { description "Logical system to be used by transport"; leaf logical-system-name { junos:must "("logical-systems $$")"; junos:must-message "referenced logical system must be defined"; type string { junos:posix-pattern "^[a-zA-Z0-9_-]{1,63}$"; junos:pattern-message "Logical-system name is a string consisting of up to 63 letters, numbers, dashes and underscores"; } description "Name of logical system"; } leaf routing-instance { type union { type string { pattern "default"; } type string { junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$"; junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces."; } } description "Routing instance to be used by transport"; } } // container logical-system leaf routing-instance { junos:must "("routing-instances $$")"; junos:must-message "referenced routing instance must be defined"; type union { type string { pattern "default"; } type string { junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$"; junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces."; } } description "Routing instance of server to which to forward"; } } // choice instance } // list transport list peer { key "name"; max-elements 31; ordered-by user; description "Diameter peer configuration"; leaf name { type string { junos:posix-pattern "^[[:alnum:]][[:alnum:]_-]*$"; junos:pattern-message "Must be a string beginning with a number or letter and consisting of letters, numbers, dashes and underscores."; length "1 .. 255"; } description "Name for this Diameter peer"; } uses apply-advanced; leaf address { type jt:ipaddr; description "IP Address of Diameter peer"; } leaf send-origin-state-id { type empty; description "Include origin-state-id in peer messages"; } choice instance { container logical-system { description "Logical system to be used by transport"; leaf logical-system-name { junos:must "("logical-systems $$")"; junos:must-message "referenced logical system must be defined"; type string { junos:posix-pattern "^[a-zA-Z0-9_-]{1,63}$"; junos:pattern-message "Logical-system name is a string consisting of up to 63 letters, numbers, dashes and underscores"; } description "Name of logical system"; } leaf routing-instance { type union { type string { pattern "default"; } type string { junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$"; junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces."; } } description "Routing instance to be used by transport"; } } // container logical-system leaf routing-instance { junos:must "("routing-instances $$")"; junos:must-message "referenced routing instance must be defined"; type union { type string { pattern "default"; } type string { junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$"; junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces."; } } description "Routing instance of server to which to forward"; } } // choice instance container connect-actively { presence "enable connect-actively"; uses apply-advanced; leaf transport { junos:must "(".. .. .. transport $$")"; junos:must-message "Transport is not defined"; type string { junos:posix-pattern "^[[:alnum:]][[:alnum:]_-]*$"; junos:pattern-message "Must be a string beginning with a number or letter and consisting of letters, numbers, dashes and underscores."; length "1 .. 255"; } description "Name of transport"; } leaf port { type union { type string { pattern "<.*>|$.*"; } type uint16 { range "1 .. 65535"; } } default "3868"; description "Peer port"; } } // container connect-actively container peer-origin { presence "enable peer-origin"; description "Optional origin attributes of this diameter peer"; uses apply-advanced; leaf realm { type string { length "1 .. 255"; } description "Origin realm of this diameter peer"; } leaf host { type string { length "1 .. 255"; } description "Origin host of this diameter peer"; } } // container peer-origin } // list peer leaf product-name { type string { length "1 .. 255"; } description "Product name to advertise in capability-exchange"; } } // container diameter } // grouping diameter-group grouping apply-advanced { description "Apply advanced configuration logic"; leaf-list apply-groups { type string; ordered-by user; description "Groups from which to inherit configuration data"; } leaf-list apply-groups-except { type string; ordered-by user; description "Don't inherit configuration data from these groups"; } list apply-macro { key "name"; ordered-by user; description "Macro and parameters for commit script expansion"; uses apply-macro-type; } // list apply-macro } // grouping apply-advanced grouping apply-macro-type { description "Macro data for commit-script expansion"; leaf name { type string; description "Name of the macro to be expanded"; } list data { key "name"; uses macro-data-type; } // list data } // grouping apply-macro-type grouping macro-data-type { leaf name { type string; description "Keyword part of the keyword-value pair"; } leaf value { type string; description "Value part of the keyword-value pair"; } } // grouping macro-data-type } // module junos-nfx-conf-diameter
© 2023 YumaWorks, Inc. All rights reserved.