rfc9643v4.txt   rfc9643.txt 
Internet Engineering Task Force (IETF) K. Watsen Internet Engineering Task Force (IETF) K. Watsen
Request for Comments: 9643 Watsen Networks Request for Comments: 9643 Watsen Networks
Category: Standards Track M. Scharf Category: Standards Track M. Scharf
ISSN: 2070-1721 Hochschule Esslingen ISSN: 2070-1721 Hochschule Esslingen
September 2024 October 2024
YANG Groupings for TCP Clients and TCP Servers YANG Groupings for TCP Clients and TCP Servers
Abstract Abstract
This document presents three YANG 1.1 modules to support the This document presents three YANG 1.1 modules to support the
configuration of TCP clients and TCP servers. The modules include configuration of TCP clients and TCP servers. The modules include
basic parameters of a TCP connection relevant for client or server basic parameters of a TCP connection relevant for client or server
applications, as well as client configuration required for traversing applications, as well as client configuration required for traversing
proxies. The data models defined by these modules may be used proxies. The data models defined by these modules may be used
skipping to change at line 574 skipping to change at line 574
| +-- username-password | +-- username-password
| +-- username string | +-- username string
| +---u ct:password-grouping | +---u ct:password-grouping
+---u tcpcmn:tcp-common-grouping +---u tcpcmn:tcp-common-grouping
Comments: Comments:
* The "remote-address" node, which is mandatory, may be configured * The "remote-address" node, which is mandatory, may be configured
as an IPv4 address, an IPv6 address, or a hostname. as an IPv4 address, an IPv6 address, or a hostname.
* The "remote-port" node is not mandatory, but its default value is * The "remote-port" leaf is defined with neither a "default" nor a
the invalid value "0", thus forcing the consuming data model to "mandatory" statement. YANG modules using this grouping SHOULD
refine it in order to provide it an appropriate default value. refine the grouping with a "default" statement, when the port
number is well-known (e.g., a port number allocated by IANA), or
with a "mandatory" statement, if a port number needs to always be
configured. The SHOULD can be ignored when the port number is
neither well-known nor mandatory to configure, such as might be
the case when this grouping is used by another grouping.
* The "local-address" node, which is enabled by the "local-binding- * The "local-address" node, which is enabled by the "local-binding-
supported" feature (Section 3.1.1), may be configured as an IPv4 supported" feature (Section 3.1.1), may be configured as an IPv4
address, an IPv6 address, or a wildcard value. address, an IPv6 address, or a wildcard value.
* The "local-port" node, which is enabled by the "local-binding- * The "local-port" node, which is enabled by the "local-binding-
supported" feature (Section 3.1.1), is not mandatory. Its default supported" feature (Section 3.1.1), is not mandatory. Its default
value is "0", indicating that the operating system can pick an value is "0", indicating that the operating system can pick an
arbitrary port number. arbitrary port number.
skipping to change at line 826 skipping to change at line 831
configured, then the DNS resolution should happen on configured, then the DNS resolution should happen on
each connection attempt. If the DNS resolution each connection attempt. If the DNS resolution
results in multiple IP addresses, the IP addresses results in multiple IP addresses, the IP addresses
are tried according to local preference order until are tried according to local preference order until
a connection has been established or until all IP a connection has been established or until all IP
addresses have failed."; addresses have failed.";
} }
leaf remote-port { leaf remote-port {
type inet:port-number; type inet:port-number;
description description
"The IP port number for the remote peer to establish a "The port number of the remote TCP server.";
connection with. Importing modules should 'refine' in
an appropriate default port number value.";
} }
leaf local-address { leaf local-address {
if-feature "local-binding-supported"; if-feature "local-binding-supported";
type inet:ip-address; type inet:ip-address;
description description
"The local IP address/interface to bind to for when "The local IP address/interface to bind to for when
connecting to the remote peer. INADDR_ANY ('0.0.0.0') or connecting to the remote peer. INADDR_ANY ('0.0.0.0') or
INADDR6_ANY ('0:0:0:0:0:0:0:0' a.k.a. '::') MAY be used to INADDR6_ANY ('0:0:0:0:0:0:0:0' a.k.a. '::') MAY be used to
explicitly indicate the implicit default, which the server explicitly indicate the implicit default, which the server
can bind to any IPv4 or IPv6 address."; can bind to any IPv4 or IPv6 address.";
skipping to change at line 1044 skipping to change at line 1047
This grouping is presented in the following subsection. This grouping is presented in the following subsection.
4.1.2.1. The "tcp-server-grouping" Grouping 4.1.2.1. The "tcp-server-grouping" Grouping
The following tree diagram [RFC8340] illustrates the "tcp-server- The following tree diagram [RFC8340] illustrates the "tcp-server-
grouping" grouping: grouping" grouping:
grouping tcp-server-grouping: grouping tcp-server-grouping:
+-- local-bind* [local-address] +-- local-bind* [local-address]
| +-- local-address inet:ip-address | +-- local-address inet:ip-address
| +-- local-port? inet:port-number | +-- local-port? inet:port-number
+---u tcpcmn:tcp-common-grouping +---u tcpcmn:tcp-common-grouping
Comments: Comments:
* The "local-address" node, which is mandatory, may be configured as * The "local-address" node, which is mandatory, may be configured as
an IPv4 address, an IPv6 address, or a wildcard value. an IPv4 address, an IPv6 address, or a wildcard value.
* The "local-port" node is not mandatory, but its default value is * The "local-port" leaf is defined with neither a "default" nor a
the invalid value "0", thus forcing the consuming data model to "mandatory" statement. YANG modules using this grouping SHOULD
refine it in order to provide it an appropriate default value. refine the grouping with a "default" statement, when the port
number is well-known (e.g., a port number allocated by IANA), or
with a "mandatory" statement, if a port number needs to always be
configured. The SHOULD can be ignored when the port number is
neither well-known nor mandatory to configure, such as might be
the case when this grouping is used by another grouping.
* This grouping uses the "tcp-common-grouping" grouping discussed in * This grouping uses the "tcp-common-grouping" grouping discussed in
Section 2.1.3.1. Section 2.1.3.1.
4.1.3. Protocol-Accessible Nodes 4.1.3. Protocol-Accessible Nodes
The "ietf-tcp-server" module defines only "grouping" statements that The "ietf-tcp-server" module defines only "grouping" statements that
are used by other modules to instantiate protocol-accessible nodes. are used by other modules to instantiate protocol-accessible nodes.
Thus, this module, when implemented, does not itself define any Thus, this module, when implemented, does not itself define any
protocol-accessible nodes. protocol-accessible nodes.
skipping to change at line 1190 skipping to change at line 1198
type inet:ip-address; type inet:ip-address;
description description
"The local IP address to listen on for incoming "The local IP address to listen on for incoming
TCP client connections. To configure listening TCP client connections. To configure listening
on all IPv4 addresses, the value must be '0.0.0.0' on all IPv4 addresses, the value must be '0.0.0.0'
(INADDR_ANY). To configure listening on all IPv6 (INADDR_ANY). To configure listening on all IPv6
addresses, the value must be '::' (INADDR6_ANY)."; addresses, the value must be '::' (INADDR6_ANY).";
} }
leaf local-port { leaf local-port {
type inet:port-number; type inet:port-number;
default "0";
description description
"The local port number to listen on for incoming TCP "The local port number to listen on for incoming TCP
client connections. An invalid default value (0) client connections.”;
is used (instead of 'mandatory true') so that an
application-level data model may 'refine' it with
an application-specific default port number value.";
} }
} }
uses tcpcmn:tcp-common-grouping { uses tcpcmn:tcp-common-grouping {
refine "keepalives" { refine "keepalives" {
if-feature "tcp-server-keepalives"; if-feature "tcp-server-keepalives";
description description
"An 'if-feature' statement so that implementations "An 'if-feature' statement so that implementations
can choose to support TCP server keepalives."; can choose to support TCP server keepalives.";
} }
} }
 End of changes. 7 change blocks. 
16 lines changed or deleted 20 lines changed or added

This html diff was produced by rfcdiff 1.48.