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:
52
sim_ether.c
52
sim_ether.c
@@ -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, ®hnd)) != ERROR_SUCCESS)
|
||||
return -1;
|
||||
reglen = buf_size;
|
||||
if (buf_size < 37)
|
||||
return -1;
|
||||
reglen = buf_size - 1;
|
||||
if ((status = RegQueryValueExA (reghnd, "MachineGuid", NULL, ®type, (LPBYTE)buf, ®len)) != 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
|
||||
|
||||
Reference in New Issue
Block a user