Commit Graph

679 Commits

Author SHA1 Message Date
Dave Scott
0d5cc3597c Merge pull request #146 from djs55/port-vsockd
proxy: add a multiplexing server frontend
2016-05-22 04:51:53 -07:00
Dave Scott
26f1a8b6e2 Merge pull request #147 from djs55/error-on-startup
tap-vsockd: only try to start on Hyper-V
2016-05-22 04:51:34 -07:00
David Scott
0014546165 proxy: update the 9P protocol
We now tell the 9P server

 proto1:ip1:port1:<address for forwarding>

which means please listen on proto1:ip1:port1, then connect to the port
proxy in Moby and tell it the connection is for <address for forwarding>.

Note this requires a corresponding change in hostnet/vpnkit.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-22 12:43:24 +01:00
David Scott
5090fd9599 proxy: add a multiplexing server frontend
On a Hyper-V system we can only register one listening endpoint (with
a GUID), so we need to accept connections, read a header and then
start the proxy.

If the binary has argv[0] == "proxy-vsockd" then run this new frontend.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-22 12:43:18 +01:00
David Scott
0e5e0bf7f9 tap-vsockd: only try to start on Hyper-V
This avoids an unnecessary boot-up error on non-Hyper-V hosts.

From review comments on #130

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-22 12:12:01 +01:00
Dave Scott
be3e256015 Merge pull request #130 from djs55/tap
Add Hyper-V sockets to ethernet proxy
2016-05-22 03:56:40 -07:00
David Scott
ddea73d6d2 tap-vsockd: add tap-vsockd service to bring up eth1
The tap-vsockd service is started from eth1's pre-up script.

On the Mac: the bind of the AF_HYPERV socket fails, and eth1 is skipped.
On Windows: if there is no database then eth1 is skipped.
On Windows: if the database has network=native then eth1 is brought up.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 21:58:38 +01:00
Dave Scott
58204eab91 Merge pull request #145 from djs55/tap-vsockd-tool
tuntap vsock tool
2016-05-21 13:50:03 -07:00
Dave Scott
a0ae0b66ec Merge pull request #144 from djs55/9pmount-vsock-tool
9pmount vsock tool
2016-05-21 13:48:57 -07:00
David Scott
81f6905893 9pmount-vsock: add .gitignore
Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 21:42:52 +01:00
David Scott
b40c691f89 9pmount-vsock: add to /sbin
This patch adds the binary to /sbin but does not hook it up.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 21:41:50 +01:00
David Scott
dbd9fb77fd tap-vsockd: add to /sbin
Install the daemon in /sbin, but don't start it up yet.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 21:15:11 +01:00
Rolf Neugebauer
a71e917f6d Merge pull request #143 from rneugeba/kernel-vmbus-fix
kernel: update VMBus fix patch from MSFT
2016-05-21 15:27:27 +01:00
David Scott
b72e8de310 tap-vsockd: if the client closes, be prepared to reconnect
In `connect` mode the client looping calling `connect` and `close` on a timer.
This could result in the server accepting the connection and the client accidentally
closing it immediately. This patch makes `tap-vsockd` keep trying to (re-)establish
the connection. Note that daemonization is delayed until after the first successful
negotiation, so attempts to send a packet afterwards should succeed.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:51:32 +01:00
David Scott
67bc700af3 tap-vsockd: use stderr rather than syslog if service guid is wrong
Our convention is to print command-line parse failures to the terminal
to allow easier interactive debugging, rather than sending them to
the syslog.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:51:32 +01:00
David Scott
1142bbb611 tap-vsockd: remove the Windows compatibility shim
Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:51:32 +01:00
David Scott
a493947c9c tap-vsockd: support daemonization via a --daemon arg
We daemonize after checking the command-line and binding/connecting
the socket and creating the tap device. Only the ethernet frame
processing happens afterwards.

This patch also includes a new well-known service GUID for the
VPN-proxy ethernet service.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:50:52 +01:00
David Scott
54001a1d06 tap-vsockd: support both connect() and accept()
Older versions of the Linux AF_HVSOCK can only accept() as they
don't allow connections to the parent partition. Support both
modes for now.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:49:55 +01:00
David Scott
6ad649b77b tap-vsockd: add a --pidfile <pidfile> argument
Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:49:55 +01:00
David Scott
f498bf69e1 tap-vsockd: exit non-zero if the server cannot start
Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:49:55 +01:00
David Scott
1103dc40e9 tap-vsockd: add basic logging support
By default we write to syslog. If the `--debug` argument is provided
then we also write to stderr.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:49:55 +01:00
David Scott
3fcf9b7e9b tap-vsockd: set the MAC address on the TAP device
The vmnet protocol expects to tell the client what the MAC address is.
This patch sets it on the TAP device.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:49:55 +01:00
David Scott
4fa693777f tap-vsockd: proxy between the hyper-v socket and the tap device
Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:49:55 +01:00
David Scott
20a92cfc3b tap-vsockd: open the tap device, connect the hvsock and negotiate
Signed-off-by: David Scott <dave@recoil.org>
2016-05-21 14:49:55 +01:00
David Scott
616b1c1f66 tap-vsockd: remove dead code and ASL references
Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:49:55 +01:00
David Scott
085969fa49 tap-vsockd: add the vmnet protocol definitions
Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:49:55 +01:00
David Scott
8669c643cf tap-vsockd: add a function to open a TAP device
Signed-off-by: David Scott <dave@recoil.org>
2016-05-21 14:49:55 +01:00
David Scott
292b94a1f4 tap-vsockd: add skeleton with hyper-v sockets
Signed-off-by: David Scott <dave@recoil.org>
2016-05-21 14:49:50 +01:00
David Scott
a19630c1f4 9pmount-vsock: retry the mount if it fails
The client on the host may time-out the connection attempt after we have
accepted it. If the mount fails, sleep for 1s and try again.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 13:56:40 +01:00
David Scott
1dfe82981a 9pmount-vsock: require <tag> and <path> arguments for the 9P mount
The program can now be used to mount more filesystems than the database
one.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 13:56:36 +01:00
David Scott
d7fc50c777 9pmount-vsock: remove Win32 compatibility code
There's no point having an ability to compile this code on
Windows, so simplify it.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 13:56:36 +01:00
David Scott
0a28aa11b3 9pmount-vsock: only try to accept 1 connection
The database has a reconnect loop, and we don't particularly want
to accept more than one of its connections per mount.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 13:56:36 +01:00
David Scott
bf005cdd1e 9pmount-vsock: make a connection then execv /bin/mount
The magic options are
  -o trans=fd,rfdno=<FD>,wfdno=<FD>

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 13:56:36 +01:00
David Scott
9e353247cd 9pmount-vsock: add initial skeleton
Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 13:56:36 +01:00
Rolf Neugebauer
1a1ba74f48 kernel: update VMBus fix patch from MSFT
Also rebase patches to 4.4.10 (no code changes)

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-05-21 11:28:02 +01:00
Justin Cormack
788e3a0756 Merge pull request #141 from justincormack/kernelup
update Linux to 4.4.11 stable release
2016-05-20 10:22:33 -07:00
Justin Cormack
a907297f2d update Linux to 4.4.11 stable release
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-05-20 10:21:52 -07:00
Rolf Neugebauer
0b61a4785e Merge pull request #140 from rneugeba/revert-126
moby: revert #126. setup-disk -m depends on syslinux for now
2016-05-20 09:49:35 +01:00
Rolf Neugebauer
a29e63d660 moby: revert #126. setup-disk -m depends on syslinux for now
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-05-20 09:42:46 +01:00
Rolf Neugebauer
ea0c773db6 Merge pull request #139 from rneugeba/moby-fs
kernel: enable VFAT and ISO9660 Filesystems in the kernel
2016-05-19 14:35:09 +01:00
Dave Scott
3ae0db1280 Merge pull request #137 from rneugeba/vsock-up
Add (optional) Hyper-V socket support to vsudd and diagnosis
2016-05-19 06:09:51 -07:00
Rolf Neugebauer
ebb5604d71 vsudd: use vendor'ed hvsock/vsock modules
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-05-19 13:54:48 +01:00
Rolf Neugebauer
6c2056055c proxy: use share vendored go packages
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-05-19 13:54:48 +01:00
Rolf Neugebauer
245fa32d28 diagnostics: add support for hyper-V sockets
Use the new shared vendor'ed packages

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-05-19 13:54:48 +01:00
Rolf Neugebauer
cdfc424823 go: add the logrus package used by the proxy
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-05-19 11:49:49 +01:00
Rolf Neugebauer
2e14f1c2a9 go: vendor shared hvsock/vsock packages
These packages will be shared by a number of utilities
so vendoring them in a shared place.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-05-19 11:49:49 +01:00
Rolf Neugebauer
56ab75386f kernel: enable VFAT and ISO9660 Filesystems in the kernel
DOS filesystems are handy for embedded development. ISO FS was
requested/suggested somewhere on a forum.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-05-19 10:35:53 +01:00
Justin Cormack
92f6148566 Merge pull request #136 from dave-tucker/proxy_2
Only watch proxy if keys are in the db
2016-05-18 07:47:44 -05:00
Dave Tucker
50412a6769 Only watch proxy if keys are in the db
My last change fails if the proxy keys aren't in the db...

Signed-off-by: Dave Tucker <dt@docker.com>
2016-05-18 11:23:02 +01:00
Justin Cormack
8977f9b358 Merge pull request #135 from justincormack/buildbase
use build-base not alpine-sdk as smaller
2016-05-17 10:01:32 -05:00