| module ietf-tcp-server { |
| yang-version 1.1; |
| namespace "urn:ietf:params:xml:ns:yang:ietf-tcp-server"; |
| prefix tcps; |
| |
| import ietf-inet-types { |
| prefix inet; |
| reference |
| "RFC 6991: Common YANG Data Types"; |
| } |
| |
| import ietf-tcp-common { |
| prefix tcpcmn; |
| reference |
| "RFC DDDD: YANG Groupings for TCP Clients and TCP Servers"; |
| } |
| |
| 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 servers that |
| can be used as a basis for specific TCP server instances. |
| |
| Copyright (c) 2022 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 2022-05-24 { |
| description |
| "Initial version"; |
| reference |
| "RFC DDDD: YANG Groupings for TCP Clients and TCP Servers"; |
| } |
| |
| // Features |
| |
| feature tcp-server-keepalives { |
| description |
| "Per socket TCP keepalive parameters are configurable for |
| TCP servers on the server implementing this feature."; |
| } |
| |
| // Groupings |
| |
| grouping tcp-server-grouping { |
| description |
| "A reusable grouping for configuring a TCP server. |
| |
| Note that this grouping uses fairly typical descendant |
| node names such that a stack of 'uses' statements will |
| have name conflicts. It is intended that the consuming |
| data model will resolve the issue (e.g., by wrapping |
| the 'uses' statement in a container called |
| 'tcp-server-parameters'). This model purposely does |
| not do this itself so as to provide maximum flexibility |
| to consuming models."; |
| leaf local-address { |
| type inet:ip-address; |
| mandatory true; |
| description |
| "The local IP address to listen on for incoming |
| TCP client connections. INADDR_ANY (0.0.0.0) or |
| INADDR6_ANY (0:0:0:0:0:0:0:0 a.k.a. ::) MUST be |
| used when the server is to listen on all IPv4 or |
| IPv6 addresses, respectively."; |
| } |
| leaf local-port { |
| type inet:port-number; |
| default "0"; |
| description |
| "The local port number to listen on for incoming TCP |
| client connections. An invalid default value (0) |
| 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 { |
| augment "keepalives" { |
| if-feature "tcp-server-keepalives"; |
| description |
| "Add an if-feature statement so that implementations |
| can choose to support TCP server keepalives."; |
| } |
| } |
| } |
| } |