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

Alexey Eromenko al4321 at gmail.com
Wed Apr 1 16:10:35 UTC 2015


Kicking out old NAT had some disadvantages:
1) On certain Windows hosts, there are incompatible network drivers
(VPNs and Firewalls alike). Those crash with any network kernel code,
but work fine with user-space (like old-NAT).

See:
Known incompatibilities with 3rd party drivers
https://forums.virtualbox.org/viewtopic.php?f=6&t=48044

2) porting VBox to new platforms (Genode OS) is easier, as only
"vboxdrv" needs porting.

I suggest leaving it out, but if really must, you can hide it inside
of "generic" network interface.

Basically it comes down to userspace vs kernelspace : avoids trouble
in corner cases.

On Wed, Apr 1, 2015 at 6:58 PM, Klaus Espenlaub
<klaus.espenlaub at oracle.com> wrote:
> Alexey,
>
> 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 :)
>
> Klaus
>
>
>> ...
>>
>> 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 !



-- 
-Alexey Eromenko "Technologov"



More information about the vbox-dev mailing list