This is an automated email from the ASF dual-hosted git repository.

rrm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
     new b53e745  Adds support for TCP_NOTSENT_LOWAT sockopt (#8354)
b53e745 is described below

commit b53e74581b9fc7517280451c3d5e9799f2e7d9fa
Author: Randall Meyer <r...@apache.org>
AuthorDate: Mon Oct 4 16:43:56 2021 -0700

    Adds support for TCP_NOTSENT_LOWAT sockopt (#8354)
---
 doc/admin-guide/files/records.config.en.rst        |  7 +++++++
 doc/admin-guide/plugins/lua.en.rst                 |  1 +
 .../api/functions/TSHttpOverridableConfig.en.rst   |  1 +
 .../api/types/TSOverridableConfigKey.en.rst        |  1 +
 include/ts/apidefs.h.in                            |  1 +
 iocore/net/I_NetProcessor.h                        |  1 +
 iocore/net/I_NetVConnection.h                      |  5 ++++-
 iocore/net/P_UnixNetVConnection.h                  | 22 ++++++++++++----------
 iocore/net/UnixConnection.cc                       |  7 +++++++
 iocore/net/UnixNetAccept.cc                        | 14 ++++++++------
 iocore/net/UnixNetProcessor.cc                     |  1 +
 mgmt/RecordsConfig.cc                              |  2 ++
 plugins/lua/ts_lua_http_config.c                   |  2 ++
 proxy/http/HttpConfig.cc                           |  2 ++
 proxy/http/HttpConfig.h                            |  1 +
 proxy/http/HttpProxyServerMain.cc                  |  4 ++++
 proxy/http/HttpSM.cc                               | 12 +++++++-----
 proxy/shared/UglyLogStubs.cc                       |  1 +
 src/shared/overridable_txn_vars.cc                 |  3 ++-
 src/traffic_server/InkAPI.cc                       |  3 +++
 src/traffic_server/InkAPITest.cc                   |  3 ++-
 21 files changed, 70 insertions(+), 24 deletions(-)

diff --git a/doc/admin-guide/files/records.config.en.rst 
b/doc/admin-guide/files/records.config.en.rst
index 03e9e29..7a226a5 100644
--- a/doc/admin-guide/files/records.config.en.rst
+++ b/doc/admin-guide/files/records.config.en.rst
@@ -4581,6 +4581,7 @@ Sockets
         TCP_FASTOPEN (8)
         PACKET_MARK (16)
         PACKET_TOS (32)
+        TCP_NOTSENT_LOWAT (64)
 
 .. note::
 
@@ -4615,6 +4616,7 @@ Sockets
         TCP_FASTOPEN (8)
         PACKET_MARK (16)
         PACKET_TOS (32)
+        TCP_NOTSENT_LOWAT (64)
 
 .. note::
 
@@ -4666,6 +4668,11 @@ Sockets
 
    .. seealso:: `Traffic Shaping`_
 
+.. ts:cv:: CONFIG proxy.config.net.sock_notsent_lowat INT 16384
+   :overridable:
+
+   Set socket option TCP_NOTSENT_LOWAT to specified value for a connection
+
 .. ts:cv:: CONFIG proxy.config.net.poll_timeout INT 10 (or 30 on Solaris)
 
    Same as the command line option ``--poll_timeout``, or ``-t``, which
diff --git a/doc/admin-guide/plugins/lua.en.rst 
b/doc/admin-guide/plugins/lua.en.rst
index 6c598da..62c280b 100644
--- a/doc/admin-guide/plugins/lua.en.rst
+++ b/doc/admin-guide/plugins/lua.en.rst
@@ -4007,6 +4007,7 @@ Http config constants
     TS_LUA_CONFIG_HTTP_HOST_RESOLUTION_PREFERENCE
     TS_LUA_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_INDEX
     TS_LUA_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_WATER_MARK
+    TS_LUA_CONFIG_NET_SOCK_NOTSENT_LOWAT
     TS_LUA_CONFIG_LAST_ENTRY
 
 :ref:`TOP <admin-plugins-ts-lua>`
diff --git a/doc/developer-guide/api/functions/TSHttpOverridableConfig.en.rst 
b/doc/developer-guide/api/functions/TSHttpOverridableConfig.en.rst
index 8ad3ae5..d6bc066 100644
--- a/doc/developer-guide/api/functions/TSHttpOverridableConfig.en.rst
+++ b/doc/developer-guide/api/functions/TSHttpOverridableConfig.en.rst
@@ -187,6 +187,7 @@ TSOverridableConfigKey Value                                
              Config
 :c:enumerator:`TS_CONFIG_HTTP_HOST_RESOLUTION_PREFERENCE`                 
:ts:cv:`proxy.config.hostdb.ip_resolve`
 :c:enumerator:`TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_INDEX`                  
:ts:cv:`proxy.config.plugin.vc.default_buffer_index`
 :c:enumerator:`TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_WATER_MARK`             
:ts:cv:`proxy.config.plugin.vc.default_buffer_water_mark`
+:c:enumerator:`TS_CONFIG_NET_SOCK_NOTSENT_LOWAT`                          
:ts:cv:`proxy.config.net.sock_notsent_lowat`
 ========================================================================  
====================================================================
 
 Examples
diff --git a/doc/developer-guide/api/types/TSOverridableConfigKey.en.rst 
b/doc/developer-guide/api/types/TSOverridableConfigKey.en.rst
index 8e1a919..50b9d8e 100644
--- a/doc/developer-guide/api/types/TSOverridableConfigKey.en.rst
+++ b/doc/developer-guide/api/types/TSOverridableConfigKey.en.rst
@@ -152,6 +152,7 @@ Enumeration Members
 .. c:enumerator:: TS_CONFIG_HTTP_HOST_RESOLUTION_PREFERENCE
 .. c:enumerator:: TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_INDEX
 .. c:enumerator:: TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_WATER_MARK
+.. c:enumerator:: TS_CONFIG_NET_SOCK_NOTSENT_LOWAT
 
 
 Description
diff --git a/include/ts/apidefs.h.in b/include/ts/apidefs.h.in
index ee65fab..be12d43 100644
--- a/include/ts/apidefs.h.in
+++ b/include/ts/apidefs.h.in
@@ -865,6 +865,7 @@ typedef enum {
   TS_CONFIG_HTTP_CONNECT_DEAD_POLICY,
   TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_INDEX,
   TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_WATER_MARK,
+  TS_CONFIG_NET_SOCK_NOTSENT_LOWAT,
   TS_CONFIG_LAST_ENTRY
 } TSOverridableConfigKey;
 
diff --git a/iocore/net/I_NetProcessor.h b/iocore/net/I_NetProcessor.h
index 7edb8e8..8afd264 100644
--- a/iocore/net/I_NetProcessor.h
+++ b/iocore/net/I_NetProcessor.h
@@ -85,6 +85,7 @@ public:
     uint32_t sockopt_flags;
     uint32_t packet_mark;
     uint32_t packet_tos;
+    uint32_t packet_notsent_lowat;
 
     int tfo_queue_length;
 
diff --git a/iocore/net/I_NetVConnection.h b/iocore/net/I_NetVConnection.h
index 6ad2a01..f74c750 100644
--- a/iocore/net/I_NetVConnection.h
+++ b/iocore/net/I_NetVConnection.h
@@ -180,9 +180,12 @@ struct NetVCOptions {
   static uint32_t const SOCK_OPT_PACKET_MARK = 16;
   /// Value for IP_TOS @c sockopt_flags
   static uint32_t const SOCK_OPT_PACKET_TOS = 32;
+  /// Value for TCP_NOTSENT_LOWAT @c sockopt_flags
+  static uint32_t const SOCK_OPT_TCP_NOTSENT_LOWAT = 64;
 
   uint32_t packet_mark;
   uint32_t packet_tos;
+  uint32_t packet_notsent_lowat;
 
   EventType etype;
 
@@ -241,7 +244,7 @@ struct NetVCOptions {
   void reset();
 
   void set_sock_param(int _recv_bufsize, int _send_bufsize, unsigned long 
_opt_flags, unsigned long _packet_mark = 0,
-                      unsigned long _packet_tos = 0);
+                      unsigned long _packet_tos = 0, unsigned long 
_packet_notsent_lowat = 0);
 
   NetVCOptions() { reset(); }
   ~NetVCOptions() {}
diff --git a/iocore/net/P_UnixNetVConnection.h 
b/iocore/net/P_UnixNetVConnection.h
index fcd05db..65e763f 100644
--- a/iocore/net/P_UnixNetVConnection.h
+++ b/iocore/net/P_UnixNetVConnection.h
@@ -60,10 +60,11 @@ NetVCOptions::reset()
 #else
     0;
 #endif
-  socket_send_bufsize = 0;
-  sockopt_flags       = 0;
-  packet_mark         = 0;
-  packet_tos          = 0;
+  socket_send_bufsize  = 0;
+  sockopt_flags        = 0;
+  packet_mark          = 0;
+  packet_tos           = 0;
+  packet_notsent_lowat = 0;
 
   etype = ET_NET;
 
@@ -77,13 +78,14 @@ NetVCOptions::reset()
 
 inline void
 NetVCOptions::set_sock_param(int _recv_bufsize, int _send_bufsize, unsigned 
long _opt_flags, unsigned long _packet_mark,
-                             unsigned long _packet_tos)
+                             unsigned long _packet_tos, unsigned long 
_packet_notsent_lowat)
 {
-  socket_recv_bufsize = _recv_bufsize;
-  socket_send_bufsize = _send_bufsize;
-  sockopt_flags       = _opt_flags;
-  packet_mark         = _packet_mark;
-  packet_tos          = _packet_tos;
+  socket_recv_bufsize  = _recv_bufsize;
+  socket_send_bufsize  = _send_bufsize;
+  sockopt_flags        = _opt_flags;
+  packet_mark          = _packet_mark;
+  packet_tos           = _packet_tos;
+  packet_notsent_lowat = _packet_notsent_lowat;
 }
 
 enum tcp_congestion_control_t { CLIENT_SIDE, SERVER_SIDE };
diff --git a/iocore/net/UnixConnection.cc b/iocore/net/UnixConnection.cc
index 7be4de6..99d1785 100644
--- a/iocore/net/UnixConnection.cc
+++ b/iocore/net/UnixConnection.cc
@@ -286,6 +286,13 @@ Connection::apply_options(NetVCOptions const &opt)
       safe_setsockopt(fd, SOL_SOCKET, SO_LINGER, reinterpret_cast<char *>(&l), 
sizeof(l));
       Debug("socket", "::open:: setsockopt() turn on SO_LINGER on socket");
     }
+#ifdef TCP_NOTSENT_LOWAT
+    if (opt.sockopt_flags & NetVCOptions::SOCK_OPT_TCP_NOTSENT_LOWAT) {
+      uint32_t lowat = opt.packet_notsent_lowat;
+      safe_setsockopt(fd, IPPROTO_TCP, TCP_NOTSENT_LOWAT, 
reinterpret_cast<char *>(&lowat), sizeof(lowat));
+      Debug("socket", "::open:: setsockopt() set TCP_NOTSENT_LOWAT to %d", 
lowat);
+    }
+#endif
   }
 
 #if TS_HAS_SO_MARK
diff --git a/iocore/net/UnixNetAccept.cc b/iocore/net/UnixNetAccept.cc
index 86bf38c..35e5660 100644
--- a/iocore/net/UnixNetAccept.cc
+++ b/iocore/net/UnixNetAccept.cc
@@ -337,9 +337,10 @@ NetAccept::do_blocking_accept(EThread *t)
     vc->action_     = *action_;
     vc->set_is_transparent(opt.f_inbound_transparent);
     vc->set_is_proxy_protocol(opt.f_proxy_protocol);
-    vc->options.packet_mark = opt.packet_mark;
-    vc->options.packet_tos  = opt.packet_tos;
-    vc->options.ip_family   = opt.ip_family;
+    vc->options.packet_mark          = opt.packet_mark;
+    vc->options.packet_tos           = opt.packet_tos;
+    vc->options.packet_notsent_lowat = opt.packet_notsent_lowat;
+    vc->options.ip_family            = opt.ip_family;
     vc->apply_options();
     vc->set_context(NET_VCONNECTION_IN);
     if (opt.f_mptcp) {
@@ -488,9 +489,10 @@ NetAccept::acceptFastEvent(int event, void *ep)
     vc->action_     = *action_;
     vc->set_is_transparent(opt.f_inbound_transparent);
     vc->set_is_proxy_protocol(opt.f_proxy_protocol);
-    vc->options.packet_mark = opt.packet_mark;
-    vc->options.packet_tos  = opt.packet_tos;
-    vc->options.ip_family   = opt.ip_family;
+    vc->options.packet_mark          = opt.packet_mark;
+    vc->options.packet_tos           = opt.packet_tos;
+    vc->options.packet_notsent_lowat = opt.packet_notsent_lowat;
+    vc->options.ip_family            = opt.ip_family;
     vc->apply_options();
     vc->set_context(NET_VCONNECTION_IN);
     if (opt.f_mptcp) {
diff --git a/iocore/net/UnixNetProcessor.cc b/iocore/net/UnixNetProcessor.cc
index ba012e0..ba5062d 100644
--- a/iocore/net/UnixNetProcessor.cc
+++ b/iocore/net/UnixNetProcessor.cc
@@ -49,6 +49,7 @@ NetProcessor::AcceptOptions::reset()
   sockopt_flags         = 0;
   packet_mark           = 0;
   packet_tos            = 0;
+  packet_notsent_lowat  = 0;
   tfo_queue_length      = 0;
   f_inbound_transparent = false;
   f_mptcp               = false;
diff --git a/mgmt/RecordsConfig.cc b/mgmt/RecordsConfig.cc
index 997d5fc..b89ab4e 100644
--- a/mgmt/RecordsConfig.cc
+++ b/mgmt/RecordsConfig.cc
@@ -786,6 +786,8 @@ static const RecordElement RecordsConfig[] =
   ,
   {RECT_CONFIG, "proxy.config.net.sock_mss_in", RECD_INT, "0", 
RECU_RESTART_TS, RR_NULL, RECC_NULL, nullptr, RECA_NULL}
   ,
+  {RECT_CONFIG, "proxy.config.net.sock_notsent_lowat", RECD_INT, "32768", 
RECU_DYNAMIC, RR_NULL, RECC_NULL, nullptr, RECA_NULL}
+  ,
   {RECT_CONFIG, "proxy.config.net.poll_timeout", RECD_INT, "10", 
RECU_RESTART_TS, RR_NULL, RECC_NULL, nullptr, RECA_NULL}
   ,
   {RECT_CONFIG, "proxy.config.net.default_inactivity_timeout", RECD_INT, 
"86400", RECU_DYNAMIC, RR_NULL, RECC_NULL, nullptr, RECA_NULL}
diff --git a/plugins/lua/ts_lua_http_config.c b/plugins/lua/ts_lua_http_config.c
index 24420fe..faa70ef 100644
--- a/plugins/lua/ts_lua_http_config.c
+++ b/plugins/lua/ts_lua_http_config.c
@@ -141,6 +141,7 @@ typedef enum {
   TS_LUA_CONFIG_HTTP_HOST_RESOLUTION_PREFERENCE               = 
TS_CONFIG_HTTP_HOST_RESOLUTION_PREFERENCE,
   TS_LUA_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_INDEX                = 
TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_INDEX,
   TS_LUA_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_WATER_MARK           = 
TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_WATER_MARK,
+  TS_LUA_CONFIG_NET_SOCK_NOTSENT_LOWAT                        = 
TS_CONFIG_NET_SOCK_NOTSENT_LOWAT,
   TS_LUA_CONFIG_LAST_ENTRY                                    = 
TS_CONFIG_LAST_ENTRY,
 } TSLuaOverridableConfigKey;
 
@@ -274,6 +275,7 @@ ts_lua_var_item ts_lua_http_config_vars[] = {
   TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_HTTP_PER_SERVER_CONNECTION_MATCH),
   TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_INDEX),
   TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_WATER_MARK),
+  TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_NET_SOCK_NOTSENT_LOWAT),
   TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_LAST_ENTRY),
 };
 
diff --git a/proxy/http/HttpConfig.cc b/proxy/http/HttpConfig.cc
index e00f8d9..9b8f372 100644
--- a/proxy/http/HttpConfig.cc
+++ b/proxy/http/HttpConfig.cc
@@ -1256,6 +1256,7 @@ HttpConfig::startup()
   HttpEstablishStaticConfigLongLong(c.oride.sock_option_flag_out, 
"proxy.config.net.sock_option_flag_out");
   HttpEstablishStaticConfigLongLong(c.oride.sock_packet_mark_out, 
"proxy.config.net.sock_packet_mark_out");
   HttpEstablishStaticConfigLongLong(c.oride.sock_packet_tos_out, 
"proxy.config.net.sock_packet_tos_out");
+  HttpEstablishStaticConfigLongLong(c.oride.sock_packet_notsent_lowat, 
"proxy.config.net.sock_notsent_lowat");
 
   HttpEstablishStaticConfigByte(c.oride.fwd_proxy_auth_to_parent, 
"proxy.config.http.forward.proxy_auth_to_parent");
 
@@ -1547,6 +1548,7 @@ HttpConfig::reconfigure()
   params->oride.sock_packet_mark_out      = 
m_master.oride.sock_packet_mark_out;
   params->oride.sock_packet_tos_out       = m_master.oride.sock_packet_tos_out;
   params->oride.sock_option_flag_out      = 
m_master.oride.sock_option_flag_out;
+  params->oride.sock_packet_notsent_lowat = 
m_master.oride.sock_packet_notsent_lowat;
 
   // Clear the TCP Fast Open option if it is not supported on this host.
   if ((params->oride.sock_option_flag_out & 
NetVCOptions::SOCK_OPT_TCP_FAST_OPEN) && !SocketManager::fastopen_supported()) {
diff --git a/proxy/http/HttpConfig.h b/proxy/http/HttpConfig.h
index 233f875..457c487 100644
--- a/proxy/http/HttpConfig.h
+++ b/proxy/http/HttpConfig.h
@@ -630,6 +630,7 @@ struct OverridableHttpConfigParams {
   MgmtInt sock_option_flag_out      = 0;
   MgmtInt sock_packet_mark_out      = 0;
   MgmtInt sock_packet_tos_out       = 0;
+  MgmtInt sock_packet_notsent_lowat = 0;
 
   ///////////////
   // Hdr Limit //
diff --git a/proxy/http/HttpProxyServerMain.cc 
b/proxy/http/HttpProxyServerMain.cc
index f5f1c3b..68f6810 100644
--- a/proxy/http/HttpProxyServerMain.cc
+++ b/proxy/http/HttpProxyServerMain.cc
@@ -149,6 +149,10 @@ make_net_accept_options(const HttpProxyPort *port, 
unsigned nthreads)
   REC_ReadConfigInteger(net.sockopt_flags, 
"proxy.config.net.sock_option_flag_in");
   REC_ReadConfigInteger(net.defer_accept, "proxy.config.net.defer_accept");
 
+#if TCP_NOTSENT_LOWAT
+  REC_ReadConfigInteger(net.packet_notsent_lowat, 
"proxy.config.net.sock_notsent_lowat");
+#endif
+
 #ifdef TCP_FASTOPEN
   REC_ReadConfigInteger(net.tfo_queue_length, 
"proxy.config.net.sock_option_tfo_queue_size_in");
 #endif
diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
index ec77453..51da337 100644
--- a/proxy/http/HttpSM.cc
+++ b/proxy/http/HttpSM.cc
@@ -5307,7 +5307,7 @@ HttpSM::do_http_server_open(bool raw)
   opt.f_blocking_connect = false;
   opt.set_sock_param(t_state.txn_conf->sock_recv_buffer_size_out, 
t_state.txn_conf->sock_send_buffer_size_out,
                      t_state.txn_conf->sock_option_flag_out, 
t_state.txn_conf->sock_packet_mark_out,
-                     t_state.txn_conf->sock_packet_tos_out);
+                     t_state.txn_conf->sock_packet_tos_out, 
t_state.txn_conf->sock_packet_notsent_lowat);
 
   set_tls_options(opt, t_state.txn_conf);
 
@@ -5766,10 +5766,12 @@ HttpSM::handle_http_server_open()
       server_connection_provided_cert = vc->provided_cert();
       if (vc->options.sockopt_flags != t_state.txn_conf->sock_option_flag_out 
||
           vc->options.packet_mark != t_state.txn_conf->sock_packet_mark_out ||
-          vc->options.packet_tos != t_state.txn_conf->sock_packet_tos_out) {
-        vc->options.sockopt_flags = t_state.txn_conf->sock_option_flag_out;
-        vc->options.packet_mark   = t_state.txn_conf->sock_packet_mark_out;
-        vc->options.packet_tos    = t_state.txn_conf->sock_packet_tos_out;
+          vc->options.packet_tos != t_state.txn_conf->sock_packet_tos_out ||
+          vc->options.packet_notsent_lowat != 
t_state.txn_conf->sock_packet_notsent_lowat) {
+        vc->options.sockopt_flags        = 
t_state.txn_conf->sock_option_flag_out;
+        vc->options.packet_mark          = 
t_state.txn_conf->sock_packet_mark_out;
+        vc->options.packet_tos           = 
t_state.txn_conf->sock_packet_tos_out;
+        vc->options.packet_notsent_lowat = 
t_state.txn_conf->sock_packet_notsent_lowat;
         vc->apply_options();
       }
     }
diff --git a/proxy/shared/UglyLogStubs.cc b/proxy/shared/UglyLogStubs.cc
index 99081ec..f845633 100644
--- a/proxy/shared/UglyLogStubs.cc
+++ b/proxy/shared/UglyLogStubs.cc
@@ -122,6 +122,7 @@ NetProcessor::AcceptOptions::reset()
   sockopt_flags         = 0;
   packet_mark           = 0;
   packet_tos            = 0;
+  packet_notsent_lowat  = 0;
   f_inbound_transparent = false;
   return *this;
 }
diff --git a/src/shared/overridable_txn_vars.cc 
b/src/shared/overridable_txn_vars.cc
index 7c2f398..84d90cf 100644
--- a/src/shared/overridable_txn_vars.cc
+++ b/src/shared/overridable_txn_vars.cc
@@ -165,4 +165,5 @@ const std::unordered_map<std::string_view, std::tuple<const 
TSOverridableConfigK
      {"proxy.config.ssl.client.CA.cert.filename", 
{TS_CONFIG_SSL_CLIENT_CA_CERT_FILENAME, TS_RECORDDATATYPE_STRING}},
      {"proxy.config.hostdb.ip_resolve", 
{TS_CONFIG_HTTP_HOST_RESOLUTION_PREFERENCE, TS_RECORDDATATYPE_STRING}},
      {"proxy.config.plugin.vc.default_buffer_index", 
{TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_INDEX, TS_RECORDDATATYPE_INT}},
-     {"proxy.config.plugin.vc.default_buffer_water_mark", 
{TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_WATER_MARK, TS_RECORDDATATYPE_INT}}});
+     {"proxy.config.plugin.vc.default_buffer_water_mark", 
{TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_WATER_MARK, TS_RECORDDATATYPE_INT}},
+     {"proxy.config.net.sock_notsent_lowat", 
{TS_CONFIG_NET_SOCK_NOTSENT_LOWAT, TS_RECORDDATATYPE_INT}}});
diff --git a/src/traffic_server/InkAPI.cc b/src/traffic_server/InkAPI.cc
index c3f0cd7..21f711c 100644
--- a/src/traffic_server/InkAPI.cc
+++ b/src/traffic_server/InkAPI.cc
@@ -8944,6 +8944,9 @@ _conf_to_memberp(TSOverridableConfigKey conf, 
OverridableHttpConfigParams *overr
   case TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_WATER_MARK:
     ret = 
_memberp_to_generic(&overridableHttpConfig->plugin_vc_default_buffer_water_mark,
 conv);
     break;
+  case TS_CONFIG_NET_SOCK_NOTSENT_LOWAT:
+    ret = 
_memberp_to_generic(&overridableHttpConfig->sock_packet_notsent_lowat, conv);
+    break;
   // This helps avoiding compiler warnings, yet detect unhandled enum members.
   case TS_CONFIG_NULL:
   case TS_CONFIG_LAST_ENTRY:
diff --git a/src/traffic_server/InkAPITest.cc b/src/traffic_server/InkAPITest.cc
index 783c1c7..0230012 100644
--- a/src/traffic_server/InkAPITest.cc
+++ b/src/traffic_server/InkAPITest.cc
@@ -8698,7 +8698,8 @@ std::array<std::string_view, TS_CONFIG_LAST_ENTRY> 
SDK_Overridable_Configs = {
    "proxy.config.hostdb.ip_resolve",
    "proxy.config.http.connect.dead.policy",
    "proxy.config.plugin.vc.default_buffer_index",
-   "proxy.config.plugin.vc.default_buffer_water_mark"}};
+   "proxy.config.plugin.vc.default_buffer_water_mark",
+   "proxy.config.net.sock_notsent_lowat"}};
 
 extern ClassAllocator<HttpSM> httpSMAllocator;
 

Reply via email to