// SPDX-FileCopyrightText: 2021 Open Networking Foundation
//
// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0

module aether-types {
  namespace "http://opennetworking.org/aether/aether-types";
  prefix at;

  import ietf-inet-types { prefix inet; }

  organization "Open Networking Foundation.";
  contact "Scott Baker";
  description "A set of base types for aether modeling.";

  revision "2021-06-02" {
    description "Aether Base Types";
    reference "RFC 6087";
  }

  typedef mcc {
      type string {
        pattern '[0-9]{3}';
      }
    description "The typedef for mcc";
  }

  typedef mnc {
      type string {
        pattern '[0-9]{2,3}';
      }
    description "The typedef for mnc";
  }

  typedef tac {
      type string {
        length 4..8;
        pattern '[0-9A-F\.]*';
      }
    description "The typedef for tac";
  }

  typedef ent {
      type uint32 {
        range 0..999;
      }
    description "The typedef for ent";
  }

  typedef dnn {
      type string {
        length 1..32;
      }
    description "The typedef for dnn";
  }

  typedef sst {
      type uint8 {
        range 1..255;
      }
    description "The typedef for sst";
  }

  typedef sd {
      type uint32 {
        range 0..16777215;
      }
    description "The typedef for sd";
  }

  typedef qci {
      type uint8 {
        range 1..32;
      }
    description "The typedef for qci";
  }

  typedef pelr {
      type int8 {
        range 0..10;
      }
    description "The typedef for pelr";
  }

  typedef pdb {
      type uint16 {
        range 0..1000;
      }
    description "The typedef for pdb";
  }

  // "TCP" or "UDP"
  typedef protocol {
      type string {
        length 3;
        pattern "TCP|UDP";
      }
      default "TCP";
    description "The typedef for protocol";
  }

  // "ENABLE" | "MAINTENTANCE" | "DISABLE"
  typedef admin-status {
      type string {
        length 0..16;
        pattern "ENABLE|MAINTENANCE|DISABLE";
      }
      default "ENABLE";
    description "The typedef for admin-status";
  }

  typedef mtu {
      type inet:port-number;
      default 1492;
    description "The typedef for mtu";
  }

  typedef description {
    type string {
      length 1..1024;
    }
    description "The typedef for description";
  }
}
