It’s always bugged me that the only way to build Dynamips for Windows was with Cygwin.
Well fear no more, I’ve mashed an old version (I would have tried newer, but of course Cmake fails spectacularly and with zero help as always!) and not only does it compile, but it can boot a 7200 version of IOS.
JIT is broken. You have to telnet into the console. And the console is a little wonkey as I’m sure it’s doing a lot more UNIX translation vs being a Win32 program but it does work enough to login, save the config, and reload.
But it’ll crash on reload.
I’m sure it’s full of bugs actually.
I started with Dynamips 0.2.8-RC7-community and started commenting out stuff to get it to compile. Luckily I found this ezwinports that includes mairix that includes some memory mapping functions, namely mmap and munmap ported to Win32 in an early glibc port. While I was trying to integrate libuuid, I got this fun error:
mingw “error: conflicting types” “UUID”
MinGW includes UUID support, since it’s a Microsoft thing. Unfortunately libuuid doesn’t include unique names, so I had to rename uuid_t to uu_uuid_t
//typedef unsigned char uuid_t;
typedef unsigned char uu_uuid_t;
in the uuid.h header file, along with all instances in Dynamips.
After that it was a matter of making sure Winsock starts up, and fixing some linking breakage.
For those who want to try, the binary package is here. I’ll have to setup git on this machine and upload all the changes. It shouldn’t require any DLL’s, although I haven’t looked at the pcap stuff, as I mentioned it’s largely untested, so I have no idea if any of it works other than the telnet console.