@@ -1551,27 +1551,55 @@ struct System {
15511551 // / function when possible.
15521552 static bool supportsIpv4 ();
15531553
1554+ // / Return true if the current machine has its loopback adapter assigned an
1555+ // / IPv4 address, otherwise return false. Note that this function loads
1556+ // / descriptions of all network adapters currently available on the
1557+ // / system, which may be expensive; prefer to cache the results of this
1558+ // / function when possible.
1559+ static bool supportsIpv4Loopback ();
1560+
15541561 // / Return true if the current machine has any adapter assigned an
15551562 // / IPv4 address that supports multicast, otherwise return false. Note
15561563 // / that this function loads descriptions of all network adapters
15571564 // / currently available on the system, which may be expensive; prefer to
15581565 // / cache the results of this function when possible.
15591566 static bool supportsIpv4Multicast ();
15601567
1568+ // / Return true if the current machine has its loopback adapter assigned an
1569+ // / IPv4 address that supports multicast, otherwise return false. Note
1570+ // / that this function loads descriptions of all network adapters
1571+ // / currently available on the system, which may be expensive; prefer to
1572+ // / cache the results of this function when possible.
1573+ static bool supportsIpv4MulticastLoopback ();
1574+
15611575 // / Return true if the current machine has any adapter assigned an
15621576 // / IPv6 address, otherwise return false. Note that this function loads
15631577 // / descriptions of all network adapters currently available on the
15641578 // / system, which may be expensive; prefer to cache the results of this
15651579 // / function when possible.
15661580 static bool supportsIpv6 ();
15671581
1582+ // / Return true if the current machine has its loopback adapter assigned an
1583+ // / IPv6 address, otherwise return false. Note that this function loads
1584+ // / descriptions of all network adapters currently available on the
1585+ // / system, which may be expensive; prefer to cache the results of this
1586+ // / function when possible.
1587+ static bool supportsIpv6Loopback ();
1588+
15681589 // / Return true if the current machine has any adapter assigned an
15691590 // / IPv6 address that supports multicast, otherwise return false. Note
15701591 // / that this function loads descriptions of all network adapters
15711592 // / currently available on the system, which may be expensive; prefer to
15721593 // / cache the results of this function when possible.
15731594 static bool supportsIpv6Multicast ();
15741595
1596+ // / Return true if the current machine has its loopback adapter assigned an
1597+ // / IPv6 address that supports multicast, otherwise return false. Note
1598+ // / that this function loads descriptions of all network adapters
1599+ // / currently available on the system, which may be expensive; prefer to
1600+ // / cache the results of this function when possible.
1601+ static bool supportsIpv6MulticastLoopback ();
1602+
15751603 // / Return true if the current machine has any adapter assigned to
15761604 // / either an IPv4 or IPv6 address that supports the Transport Control
15771605 // / Protocol (TCP), otherwise return false. Note that this function
@@ -1580,6 +1608,14 @@ struct System {
15801608 // / this function when possible.
15811609 static bool supportsTcp ();
15821610
1611+ // / Return true if the current machine has its loopback adapter assigned to
1612+ // / either an IPv4 or IPv6 address that supports the Transport Control
1613+ // / Protocol (TCP), otherwise return false. Note that this function
1614+ // / loads descriptions of all network adapters currently available on
1615+ // / the system, which may be expensive; prefer to cache the results of
1616+ // / this function when possible.
1617+ static bool supportsTcpLoopback ();
1618+
15831619 // / Return true if the current machine has any adapter assigned to
15841620 // / either an IPv4 or IPv6 address that supports the User Datagram
15851621 // / Protocol (UDP), otherwise return false. Note that this function
@@ -1588,6 +1624,14 @@ struct System {
15881624 // / this function when possible.
15891625 static bool supportsUdp ();
15901626
1627+ // / Return true if the current machine has its loopback adapter assigned to
1628+ // / either an IPv4 or IPv6 address that supports the User Datagram
1629+ // / Protocol (UDP), otherwise return false. Note that this function
1630+ // / loads descriptions of all network adapters currently available on
1631+ // / the system, which may be expensive; prefer to cache the results of
1632+ // / this function when possible.
1633+ static bool supportsUdpLoopback ();
1634+
15911635 // / Return true if the current machine supports local (a.k.a Unix)
15921636 // / domain stream sockets, otherwise return false.
15931637 static bool supportsLocalStream ();
@@ -1596,13 +1640,20 @@ struct System {
15961640 // / domain datagram sockets, otherwise return false.
15971641 static bool supportsLocalDatagram ();
15981642
1599- // / Return true if the current machine supports the specified
1600- // / 'transport', otherwise return false. Note that this function loads
1601- // / descriptions of all network adapters currently available on the
1643+ // / Return true if the current machine has any adapter that supports the
1644+ // / specified 'transport', otherwise return false. Note that this function
1645+ // / loads descriptions of all network adapters currently available on the
16021646 // / system, which may be expensive; prefer to cache the results of this
16031647 // / function when possible.
16041648 static bool supportsTransport (ntsa::Transport::Value transport);
16051649
1650+ // / Return true if the current machine has a loopback adapter that supports
1651+ // / the specified 'transport', otherwise return false. Note that this
1652+ // / function loads descriptions of all network adapters currently available
1653+ // / on the system, which may be expensive; prefer to cache the results of
1654+ // / this function when possible.
1655+ static bool supportsTransportLoopback (ntsa::Transport::Value transport);
1656+
16061657 // / Load into the specified `result` names of tcp congestion control
16071658 // / algorithms available for the process. Return the error.
16081659 static ntsa::Error loadTcpCongestionControlAlgorithmSupport (
0 commit comments