[Simh] support for SLiRP status?

Jason Stevens neozeed at gmail.com
Fri Jun 13 13:37:03 EDT 2008


I've been using it for some time now, and it's been pretty good.  I've even
bundled it up on this project:

http://downloads.sourceforge.net/bsd42/BSD-4.3-Reno-install.exe?modtime=1191969474&big_mirror=0

I have been rebuilding the supporting exe to incorporate the inline memory
access to speed it up, and a
backport of 3-7-1's idle support onto 3-7-1.  I've even had a copy up and
running for over a month until
a power hit took the test machine out...

I know most people don't like it as it's TCP/IP centric... I've been
starting to play with directly integrating it
with the HECnet bridge code, but to be honest I've been having too much fun
with frontvm ( http://www.tomatarium.pwp.blueyonder.co.uk/glfrontier.html )
as of late....

I guess I need to update my patchset ....

On Fri, Jun 13, 2008 at 7:39 AM, Peter Garay <peter.garay at lhsystems.hu>
wrote:

> Dear Jason and all,
>
> A long time ago there was a post on this list about using SLiRP and I would
> like to inquire about the progress, if any made.
>
> I know that SLiRP is only suitable for a subset of TCP/IP networking and
> hence
> not applicable for everyone. However it is a good solution on platforms
> where
> there is no pcap library available and it works well in qemu for client
> type
> applications. For instance, I would hope to get the emulator on WinMobile
> this way.
>
> Thanks and best regards,
>
> Peter
>
>
>
>
> Jason Stevens neozeed at gmail.com
> Sun Oct 7 00:42:00 EDT 2007
>
> I've done some hacking with the networking on qemu & simh, and I've finally
> done something that's been on my list of things to do.  Qemu has a built in
> 'user mode networking' stack called slirp that will allow Qemu to connect
> to
> the network without any tap/tun or libpcap.  All TCP/IP traffic on the
> ethernet is intercepted, and operated on the host side.  If you remember
> slirp from the "good old days" when everyone had shell accounts, then the
> windows people would build slirp so a stubbed out winsock.dll would allow
> them to use winsock applications going thru the host computer.
>
> Anyways I've tested this successfully with the VAX emulator.  It appears
> that there is some weird issues either with the way the vax780 emulator
> handles it's ethernet card (which may be why it's disabled to start with),
> or with BSD 4.3 / Taho on how their ethernet frames are...   Right now I'm
> testing with IRC on 4.3 BSD Quasijarus UNIX #3.  I've also included a redir
> port so that I can 'telnet' into the host.
>
> I don't know if anyone would even find this interesting, but the prospect
> of
> a 'drop and go' host is quite usefull for me at least.  Not to mention
> it'll
> be a snap to setup on the network, or install Operating Systems like
> OpenBSD
> which can pull the rest of the OS via HTTP.
>
> Remember it's best to use the following config under slirp
>
> Host IP     10.0.2.15
> Netmask   255.255.255.0
> Gateway   10.0.2.2
> DNS         10.0.2.3
>
>
> In the source below, I've hardcoded port 42323 on the host to go to port 23
> on the emulated vax.  I then telnet to the loop on 42323 and connect to the
> OS.
>
> If you want to try, download and configure qemu on your PC.  I just then
> copied the slirp files into simh, and added them to the makefile.  I had to
> copy some config headers from qemu to satisfy the last of the slirp
> dependancies.  From what I can gather the major 'block' here is that slirp
> needs to know what endian the host is at compile time.
>
> For what it's worth, here is my addition to the sim_ether file.  I'm sorry
> it's not a diff, I had removed the os dependant portion from the
> independant
> portion to speed my compiles & tests...
>
> #include "slirp.h"
> #include <ctype.h>
> #include "sim_ether.h"
> #include "sim_sock.h"
>
> unsigned char tbuff[2000];
> int tbufflen;
> int slirp_inited=0;
> extern fd_set *global_readfds, *global_writefds, *global_xfds;
>
> t_stat eth_open(ETH_DEV* dev, char* name, DEVICE* dptr, uint32 dbit)
>  {
>        struct in_addr guest_addr;
>        slirp_init();
>        tbufflen=0;
>        slirp_inited=1;
>        inet_aton(" 10.0.2.15",&guest_addr);
>        slirp_redir(0,42323,guest_addr,23);
>        return SCPE_OK;
>        }
>
> t_stat eth_close (ETH_DEV* dev)
>  {slirp_exit(1);
>        return SCPE_OK;}
>
> t_stat eth_write (ETH_DEV* dev, ETH_PACK* packet, ETH_PCALLBACK routine)
>  {
>        slirp_input(packet->msg,packet->len);
>        if(routine)
>        (routine)(0);
>        return SCPE_OK;
>  }
>
>
>
> t_stat eth_read (ETH_DEV* dev, ETH_PACK* packet, ETH_PCALLBACK routine)
>  {
>        int ret,nfds;
>        fd_set rfds, wfds, xfds;
>        struct timeval tv;
>
> if(!dev) return SCPE_UNATT;
> if(!packet) return SCPE_ARG;
>
> dev->read_packet = packet;
> packet->len = 0;
> dev->read_callback = routine;
>
> if(tbufflen>0)
>        {
>        dev->read_packet->len=tbufflen;
>        memcpy(dev->read_packet->msg,tbuff,tbufflen);
>        eth_add_crc32(dev->read_packet);
>        if(dev->read_callback)
>         (dev->read_callback)(0);
>        tbufflen=0;
>        }
>
>
> nfds=-1;
> FD_ZERO(&rfds);
> FD_ZERO(&wfds);
> FD_ZERO(&xfds);
> if(slirp_inited)
>        {
>        slirp_select_fill(&nfds,&rfds,&wfds,&xfds);
>        tv.tv_sec=0;
>        tv.tv_usec=0;
>        ret = select(nfds + 1, &rfds, &wfds, &xfds, &tv);
>        if(ret>0)
>                {}
>        if(ret<0) {
>            FD_ZERO(&rfds);
>            FD_ZERO(&wfds);
>            FD_ZERO(&xfds);
>            }
>        slirp_select_poll(&rfds, &wfds, &xfds);
>        }
>
>
> return SCPE_OK;
> }
>
>
> t_stat eth_filter (ETH_DEV* dev, int addr_count, ETH_MAC* addresses,
>                   ETH_BOOL all_multicast, ETH_BOOL promiscuous)
>  {return SCPE_NOFNC;}
>
> int eth_devices (int max, ETH_LIST* dev)
>  {return -1;}
>
> void slirp_output (const unsigned char *pkt, int pkt_len)
> {
> tbufflen=pkt_len;
> memcpy(tbuff,pkt,pkt_len);
> }
>
> int slirp_can_output(void)
> {
> return 1;
> }
>
>
>
>
>
>
>
> -------
>
> Let me know if anyone is interested, and I'll check out what the full
> licensing is involved in this....
>
> Jason Stevens
> _______________________________________________
> Simh mailing list
> Simh at trailing-edge.com
> http://mailman.trailing-edge.com/mailman/listinfo/simh
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.trailing-edge.com/pipermail/simh/attachments/20080613/52aec940/attachment-0002.html>


More information about the Simh mailing list