From 5823913230de39076e5970ca78efc14b48a9822d Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Thu, 11 Aug 2022 02:35:04 -1000 Subject: [PATCH] ETHER: Make all supported packet types visible in eth_version() result --- sim_ether.c | 53 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/sim_ether.c b/sim_ether.c index 47211099..0e136b4b 100644 --- a/sim_ether.c +++ b/sim_ether.c @@ -2692,26 +2692,45 @@ return SCPE_OK; const char *eth_version (void) { -#if defined(HAVE_PCAP_NETWORK) static char version[300]; -if (!version[0]) { - strlcpy(version, pcap_lib_version(), sizeof(version)); - if (memcmp(pcap_lib_version(), "Npcap", 5) == 0) { - char maj_min[CBUFSIZE]; - char *c = version; - - while (*c && !isdigit (*c)) - ++c; - get_glyph (c, maj_min, ','); - if (strcmp ("0.9990", maj_min) > 0) - snprintf(version, sizeof(version), "Unsupported - %s", pcap_lib_version()); - } - } -return version; -#else -return NULL; +if (version[0] != '\0') + return version; +#if defined(HAVE_SLIRP_NETWORK) +if (version[0] != '\0') + strlcat (version, ", ", sizeof (version)); +strlcat (version, "NAT", sizeof (version)); #endif +#if defined(HAVE_TAP_NETWORK) +if (version[0] != '\0') + strlcat (version, ", ", sizeof (version)); +strlcat (version, "TAP", sizeof (version)); +#endif +#if defined(HAVE_VDE_NETWORK) +if (version[0] != '\0') + strlcat (version, ", ", sizeof (version)); +strlcat (version, "VDE", sizeof (version)); +#endif +if (version[0] != '\0') + strlcat (version, ", ", sizeof (version)); +strlcat (version, "UDP", sizeof (version)); +#if defined(HAVE_PCAP_NETWORK) +if (version[0] != '\0') + strlcat (version, ", ", sizeof (version)); +strlcat (version, "PCAP: ", sizeof (version)); +if (strstr (pcap_lib_version(), "Npcap") != NULL) { + char maj_min[CBUFSIZE]; + const char *c = pcap_lib_version(); + + while (*c && !isdigit (*c)) + ++c; + get_glyph (c, maj_min, ','); + if (strcmp ("0.9990", maj_min) > 0) + strlcat (version, "Unsupported - ", sizeof(version)); + } +strlcat (version, pcap_lib_version(), sizeof (version)); +#endif +return version; } t_stat eth_attach_help(FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr)