[vbox-dev] Good news: Telnet server patch for VirtualBox serial port !

Klaus Espenlaub klaus.espenlaub at oracle.com
Wed Apr 1 15:58:03 UTC 2015


On 01.04.2015 12:14, Alexey Eromenko wrote:
> 1. Yeah, I will look into "include/iprt/tcp.h". Need to figure out how it works.

It implements a generic TCP socket server for a single client, and the 
matching client code. Shouldn't be rocket science, and there's code 
using these elsewhere in our sources. I think the TCP server and client 
stuff is used by the teleportation code. Not the only place, but 
probably that's the place which is easiest to understand. iSCSI uses the 
client side, but goes into extremes regarding non-blocking and what not...

> 2. "Create Pipe" can be renamed into "Create Socket" or "Server Mode".
> "Create Socket" sounds better to my ear. If Oracle agrees, I will
> rename it. Just didn't wanted to touch it for now.

Leave it alone for now. That's something we can handle :D It was really 
meant as a joke.

> 3. IPv4-only code is all over the place:
> a. NAT
Old NAT yes (and we want to eventually kick out the old engine and 
replace it with the one from NAT Network), NAT Network no.
> b. Host-only network (it's DHCP server)
IPv6 usually doesn't rely on DHCP...
> c. UDP Tunnel (my colleague's code)
> d. Telnet Server (my code)
> e. Live Migration (?) <-- needs check.
That one uses the runtime code, and should handle both, at least in the 
next major release.
> f. Bridge Mode to host's Wireless NIC
This one supports IPv6 for quite a while (fixes are in 4.3), only 
specific setups have trouble.

We really try hard to ensure all new features are IPv6 enabled. For some 
old features it's tough or outside our control. Even there we're 
eventually moving :)


> ...
> On Wed, Apr 1, 2015 at 12:53 PM, Klaus Espenlaub
> <klaus.espenlaub at oracle.com> wrote:
>> Alexey,
>> On 31.03.2015 20:35, Alexey Eromenko wrote:
>>> Several days of work :)
>>> VirtualBox finally got a serial-telnet-server patch !
>>> Ugly tricks such as "socat" bridge and "VMware Serial Line Gateway"
>>> out; Patch in !
>> really a brilliant contribution - with one catch: your code is using the
>> socket API directly (always a risk of subtle bugs on Windows, as winsock
>> is a poor copy of the socket API, with surprises all over the place),
>> and clearly can only handle IPv4. Would you be willing to spend a few
>> extra minutes to convert it to use the TCP server/client functionality
>> available in include/iprt/tcp.h (you choose if you want the callbacks or
>> the other variant) plus include/iprt/socket.h (for the actual
>> reading/writing)?
>> All other issues I found while reviewing the code are idle nagging of a
>> perfectionist - the most prominent one is shown by your screenshot
>> actually: the GUI has a "Create Pipe" checkbox in this case (controlling
>> server mode), which is misleadingly named in this context. Far from
>> urgent. Your contribution's usefulness outweighs such really tiny
>> quirks. It actually might be a task for us, using different wording for
>> this option in all cases, in the light of having a new member in the
>> list of serial port backends.
>>> This is especially useful for GNS3 Network Simulator, where we do
>>> access remote VM's serial port.
>>> I ask you to include it in the upcoming VirtualBox 4.4, and call it a
>>> "major new feature" in changelog :)
>> I definitely want to get this into the coming release. Actually I
>> wouldn't postpone it even if you said that you don't have time right now
>> to do the socket API cleanup I mentioned above - then it would be IPv4
>> only until someone does.
>> Just a bit sad as with the coming release we want to squash as many
>> places as possible which are IPv4 only - it is becoming an annoying
>> limitation for some users.
>>> Download patch + screenshot here:
>>> https://forums.virtualbox.org/viewtopic.php?f=10&t=66893&p=317052#p317052
>> All in all a really good quality contribution.
>> Thanks so far, and we'll see when in the next week or so someone finds
>> time to include it (let us know if you want to do the cleanup first,
>> would avoid a tiny bit of additional work for is)!
>> Klaus
>>> Enjoy !

More information about the vbox-dev mailing list