module ietf-tcp-common {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-tcp-common";
  prefix tcpcmn;

  organization
    "IETF NETCONF (Network Configuration) Working Group and the
     IETF TCP Maintenance and Minor Extensions (TCPM) Working Group";

  contact
    "WG Web:   https://datatracker.ietf.org/wg/netconf
               https://datatracker.ietf.org/wg/tcpm
     WG List:  NETCONF WG list <mailto:netconf@ietf.org>
               TCPM WG list <mailto:tcpm@ietf.org>
     Authors:  Kent Watsen <mailto:kent+ietf@watsen.net>
               Michael Scharf
               <mailto:michael.scharf@hs-esslingen.de>";

  description
    "This module defines reusable groupings for TCP commons that
     can be used as a basis for specific TCP common instances.

     Copyright (c) 2023 IETF Trust and the persons identified
     as authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with
     or without modification, is permitted pursuant to, and
     subject to the license terms contained in, the Revised
     BSD License set forth in Section 4.c of the IETF Trust's
     Legal Provisions Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC DDDD
     (https://www.rfc-editor.org/info/rfcDDDD); see the RFC
     itself for full legal notices.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
     'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
     'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
     are to be interpreted as described in BCP 14 (RFC 2119)
     (RFC 8174) when, and only when, they appear in all
     capitals, as shown here.";

  revision 2023-04-17 {
    description
      "Initial version";
    reference
      "RFC DDDD: YANG Groupings for TCP Clients and TCP Servers";
  }

  // Features

  feature keepalives-supported {
    description
      "Indicates that keepalives are supported.";
  }

  // Groupings
  grouping tcp-common-grouping {
    description
      "A reusable grouping for configuring TCP parameters common
       to TCP connections as well as the operating system as a
       whole.";
    container keepalives {
      if-feature "keepalives-supported";
      presence
        "Indicates that keepalives are enabled.  This statement is
         present so the mandatory descendant nodes do not imply that
         this node must be configured.";
      description
        "Configures the keep-alive policy, to proactively test the
         aliveness of the TCP peer.  An unresponsive TCP peer is
         dropped after approximately (idle-time + max-probes
         * probe-interval) seconds.";
      reference
        "RFC 9293:
          Transmission Control Protocol (TCP), Section 3.8.4..";
      leaf idle-time {
        type uint16 {
          range "1..max";
        }
        units "seconds";
        mandatory true;
        description
          "Sets the amount of time after which if no data has been
           received from the TCP peer, a TCP-level probe message
           will be sent to test the aliveness of the TCP peer.
           Two hours (7200 seconds) is safe value, per RFC 1122.";
        reference
          "RFC 1122:
            Requirements for Internet Hosts -- Communication Layers";
      }
      leaf max-probes {
        type uint16 {
          range "1..max";
        }
        mandatory true;
        description
          "Sets the maximum number of sequential keep-alive probes
           that can fail to obtain a response from the TCP peer
           before assuming the TCP peer is no longer alive.";
      }
      leaf probe-interval {
        type uint16 {
          range "1..max";
        }
        units "seconds";
        mandatory true;
        description
          "Sets the time interval between failed probes. The interval
           SHOULD be significantly longer than one second in order to
           avoid harm on a congested link.";
      }
    } // container keepalives
  } // grouping tcp-common-grouping

}
