mirror of
https://github.com/moonlight-stream/moonlight-common-c.git
synced 2026-06-16 22:00:55 +00:00
Add LiStringifyPortFlags() helper function
This commit is contained in:
@@ -77,6 +77,33 @@ unsigned short LiGetPortFromPortFlagIndex(int portFlagIndex)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LiStringifyPortFlags(unsigned int portFlags, const char* separator, char* outputBuffer, int outputBufferLength)
|
||||||
|
{
|
||||||
|
// Initialize the output buffer to an empty string
|
||||||
|
outputBuffer[0] = 0;
|
||||||
|
|
||||||
|
// If there is no separator specified, use an empty string
|
||||||
|
if (separator == NULL) {
|
||||||
|
separator = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
int offset = 0;
|
||||||
|
for (int i = 0; i < PORT_FLAGS_MAX_COUNT; i++) {
|
||||||
|
if (portFlags & (1U << i)) {
|
||||||
|
const char* protoStr = LiGetProtocolFromPortFlagIndex(i) == IPPROTO_UDP ? "UDP" : "TCP";
|
||||||
|
offset += snprintf(&outputBuffer[offset], outputBufferLength - offset, "%s%s %u",
|
||||||
|
offset != 0 ? separator : "",
|
||||||
|
protoStr,
|
||||||
|
LiGetPortFromPortFlagIndex(i));
|
||||||
|
if (outputBufferLength - offset <= 0) {
|
||||||
|
// snprintf() will return the desired length if the buffer is too small,
|
||||||
|
// so it is possible for this calculation to be negative.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
unsigned int LiTestClientConnectivity(const char* testServer, unsigned short referencePort, unsigned int testPortFlags)
|
unsigned int LiTestClientConnectivity(const char* testServer, unsigned short referencePort, unsigned int testPortFlags)
|
||||||
{
|
{
|
||||||
unsigned int failingPortFlags;
|
unsigned int failingPortFlags;
|
||||||
|
|||||||
@@ -575,6 +575,11 @@ int LiGetProtocolFromPortFlagIndex(int portFlagIndex);
|
|||||||
// Returns the port number for the specified port index
|
// Returns the port number for the specified port index
|
||||||
unsigned short LiGetPortFromPortFlagIndex(int portFlagIndex);
|
unsigned short LiGetPortFromPortFlagIndex(int portFlagIndex);
|
||||||
|
|
||||||
|
// Populates the output buffer with a stringified list of the port flags set in the input argument.
|
||||||
|
// The second and subsequent entries will be prepended by 'separator' (if provided).
|
||||||
|
// If the output buffer is too small, the output will be truncated to fit the provided buffer.
|
||||||
|
void LiStringifyPortFlags(unsigned int portFlags, const char* separator, char* outputBuffer, int outputBufferLength);
|
||||||
|
|
||||||
// This function may be used to test if the local network is blocking Moonlight's ports. It requires
|
// This function may be used to test if the local network is blocking Moonlight's ports. It requires
|
||||||
// a test server running on an Internet-reachable host. To perform a test, pass in the DNS hostname
|
// a test server running on an Internet-reachable host. To perform a test, pass in the DNS hostname
|
||||||
// of the test server, a reference TCP port to ensure the test host is reachable at all (something
|
// of the test server, a reference TCP port to ensure the test host is reachable at all (something
|
||||||
|
|||||||
Reference in New Issue
Block a user