mirror of
https://github.com/rcornwell/sims.git
synced 2026-01-18 17:07:59 +00:00
KA10: Fix DHCP in IMP
This commit is contained in:
commit
3ce98e65cc
@ -6010,6 +6010,19 @@ qua_srv(UNIT * uptr)
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* This sequence of instructions is a mix that hopefully
|
||||
* represents a resonable instruction set that is a close
|
||||
* estimate to the normal calibrated result.
|
||||
*/
|
||||
|
||||
static const char *pdp10_clock_precalibrate_commands[] = {
|
||||
"-m 100 ADDM 0,110",
|
||||
"-m 101 ADDI 0,1",
|
||||
"-m 102 JRST 100",
|
||||
"PC 100",
|
||||
NULL};
|
||||
|
||||
/* Reset routine */
|
||||
|
||||
t_stat cpu_reset (DEVICE *dptr)
|
||||
@ -6044,6 +6057,7 @@ exec_map = 0;
|
||||
for(i=0; i < 128; dev_irq[i++] = 0);
|
||||
sim_brk_types = SWMASK('E') | SWMASK('W') | SWMASK('R');
|
||||
sim_brk_dflt = SWMASK ('E');
|
||||
sim_clock_precalibrate_commands = pdp10_clock_precalibrate_commands;
|
||||
sim_rtcn_init_unit (&cpu_unit[0], cpu_unit[0].wait, TMR_RTC);
|
||||
sim_activate(&cpu_unit[0], 10000);
|
||||
#if MPX_DEV
|
||||
|
||||
700
PDP10/kx10_imp.c
700
PDP10/kx10_imp.c
File diff suppressed because it is too large
Load Diff
BIN
doc/ka10_doc.doc
BIN
doc/ka10_doc.doc
Binary file not shown.
@ -2118,9 +2118,7 @@ else { /* !tap: */
|
||||
|
||||
while (isspace(*devname))
|
||||
++devname;
|
||||
if (!(*handle = (void*) sim_slirp_open(devname, opaque, &_slirp_callback, dptr, dbit)))
|
||||
strlcpy(errbuf, strerror(errno), PCAP_ERRBUF_SIZE);
|
||||
else {
|
||||
if ((*handle = (void*) sim_slirp_open(devname, opaque, &_slirp_callback, dptr, dbit, errbuf, PCAP_ERRBUF_SIZE))) {
|
||||
*eth_api = ETH_API_NAT;
|
||||
*fd_handle = 0;
|
||||
}
|
||||
|
||||
@ -172,7 +172,7 @@ uint32 slirp_dbit;
|
||||
}
|
||||
#endif
|
||||
|
||||
SLIRP *sim_slirp_open (const char *args, void *opaque, packet_callback callback, DEVICE *dptr, uint32 dbit)
|
||||
SLIRP *sim_slirp_open (const char *args, void *opaque, packet_callback callback, DEVICE *dptr, uint32 dbit, char *errbuf, size_t errbuf_size)
|
||||
{
|
||||
SLIRP *slirp = (SLIRP *)g_malloc0(sizeof(*slirp));
|
||||
char *targs = g_strdup (args);
|
||||
@ -191,6 +191,7 @@ slirp->maskbits = 24;
|
||||
slirp->dhcpmgmt = 1;
|
||||
slirp->db_chime = INVALID_SOCKET;
|
||||
inet_aton(DEFAULT_IP_ADDR,&slirp->vgateway);
|
||||
pthread_mutex_init (&slirp->write_buffer_lock, NULL);
|
||||
|
||||
err = 0;
|
||||
while (*tptr && !err) {
|
||||
@ -209,7 +210,7 @@ while (*tptr && !err) {
|
||||
if (cptr && *cptr)
|
||||
slirp->tftp_path = g_strdup (cptr);
|
||||
else {
|
||||
sim_printf ("Missing TFTP Path\n");
|
||||
strlcpy (errbuf, "Missing TFTP Path", errbuf_size);
|
||||
err = 1;
|
||||
}
|
||||
continue;
|
||||
@ -218,7 +219,7 @@ while (*tptr && !err) {
|
||||
if (cptr && *cptr)
|
||||
slirp->boot_file = g_strdup (cptr);
|
||||
else {
|
||||
sim_printf ("Missing DHCP Boot file name\n");
|
||||
strlcpy (errbuf, "Missing DHCP Boot file name", errbuf_size);
|
||||
err = 1;
|
||||
}
|
||||
continue;
|
||||
@ -228,7 +229,7 @@ while (*tptr && !err) {
|
||||
if (cptr && *cptr)
|
||||
inet_aton (cptr, &slirp->vnameserver);
|
||||
else {
|
||||
sim_printf ("Missing nameserver\n");
|
||||
strlcpy (errbuf, "Missing nameserver", errbuf_size);
|
||||
err = 1;
|
||||
}
|
||||
continue;
|
||||
@ -253,7 +254,7 @@ while (*tptr && !err) {
|
||||
} while (name && *name);
|
||||
}
|
||||
else {
|
||||
sim_printf ("Missing DNS search list\n");
|
||||
strlcpy (errbuf, "Missing DNS search list", errbuf_size);
|
||||
err = 1;
|
||||
}
|
||||
continue;
|
||||
@ -266,7 +267,7 @@ while (*tptr && !err) {
|
||||
inet_aton (abuf, &slirp->vgateway);
|
||||
}
|
||||
else {
|
||||
sim_printf ("Missing host\n");
|
||||
strlcpy (errbuf, "Missing host", errbuf_size);
|
||||
err = 1;
|
||||
}
|
||||
continue;
|
||||
@ -279,7 +280,7 @@ while (*tptr && !err) {
|
||||
inet_aton (abuf, &slirp->vnetwork);
|
||||
}
|
||||
else {
|
||||
sim_printf ("Missing network\n");
|
||||
strlcpy (errbuf, "Missing network", errbuf_size);
|
||||
err = 1;
|
||||
}
|
||||
continue;
|
||||
@ -292,7 +293,7 @@ while (*tptr && !err) {
|
||||
if (cptr && *cptr)
|
||||
err = _parse_redirect_port (&slirp->rtcp, cptr, IS_UDP);
|
||||
else {
|
||||
sim_printf ("Missing UDP port mapping\n");
|
||||
strlcpy (errbuf, "Missing UDP port mapping", errbuf_size);
|
||||
err = 1;
|
||||
}
|
||||
continue;
|
||||
@ -301,12 +302,12 @@ while (*tptr && !err) {
|
||||
if (cptr && *cptr)
|
||||
err = _parse_redirect_port (&slirp->rtcp, cptr, IS_TCP);
|
||||
else {
|
||||
sim_printf ("Missing TCP port mapping\n");
|
||||
strlcpy (errbuf, "Missing TCP port mapping", errbuf_size);
|
||||
err = 1;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
sim_printf ("Unexpected NAT argument: %s\n", gbuf);
|
||||
snprintf (errbuf, errbuf_size - 1, "Unexpected NAT argument: %s", gbuf);
|
||||
err = 1;
|
||||
}
|
||||
if (err) {
|
||||
@ -337,7 +338,6 @@ else {
|
||||
GPollFD pfd;
|
||||
int64_t rnd_val = qemu_clock_get_ns ((QEMUClockType)0) / 1000000;
|
||||
|
||||
pthread_mutex_init (&slirp->write_buffer_lock, NULL);
|
||||
slirp->gpollfds = g_array_new(FALSE, FALSE, sizeof(GPollFD));
|
||||
/* setup transmit packet wakeup doorbell */
|
||||
do {
|
||||
|
||||
@ -8,7 +8,7 @@ typedef struct sim_slirp SLIRP;
|
||||
|
||||
typedef void (*packet_callback)(void *opaque, const unsigned char *buf, int len);
|
||||
|
||||
SLIRP *sim_slirp_open (const char *args, void *opaque, packet_callback callback, DEVICE *dptr, uint32 dbit);
|
||||
SLIRP *sim_slirp_open (const char *args, void *opaque, packet_callback callback, DEVICE *dptr, uint32 dbit, char *errbuf, size_t errbuf_size);
|
||||
void sim_slirp_close (SLIRP *slirp);
|
||||
int sim_slirp_send (SLIRP *slirp, const char *msg, size_t len, int flags);
|
||||
int sim_slirp_select (SLIRP *slirp, int ms_timeout);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user