1
0
mirror of https://github.com/open-simh/simh.git synced 2026-01-26 20:23:09 +00:00

ETHER, SOCK: Update latest from master branch

This commit is contained in:
Mark Pizzolato
2020-06-07 12:45:41 -07:00
parent bc2e8df1e1
commit 4289d79bbf
4 changed files with 52 additions and 41 deletions

View File

@@ -1653,7 +1653,9 @@ static int _eth_get_system_id (char *buf, size_t buf_size)
#endif
if ((status = RegOpenKeyExA (HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Cryptography", 0, KEY_QUERY_VALUE|KEY_WOW64_64KEY, &reghnd)) != ERROR_SUCCESS)
return -1;
reglen = buf_size;
if (buf_size < 37)
return -1;
reglen = buf_size - 1;
if ((status = RegQueryValueExA (reghnd, "MachineGuid", NULL, &regtype, (LPBYTE)buf, &reglen)) != ERROR_SUCCESS) {
RegCloseKey (reghnd);
return -1;
@@ -1672,19 +1674,16 @@ static int _eth_get_system_id (char *buf, size_t buf_size)
FILE *f;
memset (buf, 0, buf_size);
if ((f = fopen ("/etc/machine-id", "r"))) {
if (fread (buf, 1, buf_size - 1, f))
fclose (f);
else
fclose (f);
}
else {
if ((f = popen ("hostname", "r"))) {
if (fread (buf, 1, buf_size - 1, f))
pclose (f);
else
pclose (f);
}
if (buf_size < 37)
return -1;
if ((f = fopen ("/etc/machine-id", "r")) == NULL)
f = popen ("hostname", "r");
if (f) {
size_t read_size;
read_size = fread (buf, 1, buf_size - 1, f);
buf[read_size] = '\0';
fclose (f);
}
while ((strlen (buf) > 0) && sim_isspace(buf[strlen (buf) - 1]))
buf[strlen (buf) - 1] = '\0';
@@ -1959,7 +1958,8 @@ return NULL;
t_stat eth_set_async (ETH_DEV *dev, int latency)
{
#if !defined(USE_READER_THREAD) || !defined(SIM_ASYNCH_IO)
char *msg = "Eth: can't operate asynchronously, must poll\n";
char *msg = "Eth: Can't operate asynchronously, must poll.\n"
" *** Build with USE_READER_THREAD defined and link with pthreads for asynchronous operation. ***\n";
return sim_messagef (SCPE_NOFNC, "%s", msg);
#else
int wakeup_needed;
@@ -2070,13 +2070,14 @@ if (0 == strncmp("tap:", savname, 4)) {
}
else {
*fd_handle = (SOCKET)tun;
strcpy(savname, devname);
memmove(savname, devname, strlen(devname) + 1);
}
#if defined (__APPLE__)
if (1) {
if (tun >= 0) { /* Good so far? */
struct ifreq ifr;
int s;
/* Now make sure the interface is up */
memset (&ifr, 0, sizeof(ifr));
ifr.ifr_addr.sa_family = AF_INET;
strlcpy(ifr.ifr_name, savname, sizeof(ifr.ifr_name));
@@ -2474,13 +2475,20 @@ return SCPE_OK;
const char *eth_version (void)
{
#if defined(HAVE_PCAP_NETWORK)
static char version[256];
static char version[300];
if (!version[0]) {
if (memcmp(pcap_lib_version(), "Npcap", 5))
strlcpy(version, pcap_lib_version(), sizeof(version));
else
snprintf(version, sizeof(version), "Unsupported - %s", pcap_lib_version());
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