diff --git a/devpnc.h b/devpnc.h index 5f7d64f..2b88c58 100644 --- a/devpnc.h +++ b/devpnc.h @@ -973,7 +973,7 @@ int devpnc (int class, int func, int device) { #endif addr.sin_family = AF_INET; addr.sin_port = htons(nport); - addr.sin_addr.s_addr = INADDR_ANY; + addr.sin_addr.s_addr = bindaddr; if (bind(pncfd, (struct sockaddr *)&addr, sizeof(addr))) { perror("bind: unable to bind for PNC"); fatal(NULL); diff --git a/em.c b/em.c index 195b9f6..0433c11 100644 --- a/em.c +++ b/em.c @@ -667,6 +667,7 @@ static int domemdump; /* -memdump arg */ static int tport; /* -tport option (incoming terminals) */ static int nport; /* -nport option (PNC/Ringnet) */ +static in_addr_t bindaddr = INADDR_ANY; /* -naddr option (PnC/Ringnet) */ /* load map related data, specified with -map */ @@ -4626,6 +4627,12 @@ int main (int argc, char **argv) { } else fatal("-nport needs an argument\n"); + } else if (strcmp(argv[i],"-naddr") == 0) { + if (i+1 < argc && argv[i+1][0] != '-') { + inet_aton(argv[++i], &bindaddr); + } else + fatal("-naddr needs an argument\n"); + } else if (strcmp(argv[i],"-tport") == 0) { if (i+1 < argc && argv[i+1][0] != '-') { sscanf(argv[++i],"%d", &templ);