junos-nfx-conf-diameter

Junos diameter configuration module

  • Version: 2019-01-01

    junos-nfx-conf-diameter@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.