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. |