Commit Graph

860 Commits

Author SHA1 Message Date
David Scott
da954e93e3 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
David Scott
129f7836fd mobyconfig: on Hyper-V connect to the db over AF_HYPERV
We detect Hyper-V by the presence of /sys/bus/vmbus and then run the
/sbin/9pmount-vsock command to establish a socket connection and then
pass the fd to /bin/mount

This patch also hard-codes the database directory

  com.docker.driver.amd64-linux

since we can't use the kernel commandline on Hyper-V hosts. It would
probably be better to expose a generic directory name ( / ?) on all
platforms and configure the datbase to store each VM's configuration
in a different directory.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 21:51:11 +01:00
Dave Scott
49ca65ede8 Merge pull request #145 from djs55/tap-vsockd-tool
tuntap vsock tool
2016-05-21 13:50:03 -07:00
Dave Scott
4482790f48 Merge pull request #144 from djs55/9pmount-vsock-tool
9pmount vsock tool
2016-05-21 13:48:57 -07:00
David Scott
537efa03be 9pmount-vsock: add .gitignore
Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 21:42:52 +01:00
David Scott
af556bdc23 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
d7863c8882 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
b6c367d4ac 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
4fa937d11d 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
1e96379e3f 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
1805c803a9 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
a1d91d2a3d 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
f636321b81 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
f74d52574e 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
a4a8d02560 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
4ffd1742dd 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
4f4c807245 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
b45ac6d9a8 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
853d17e04f 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
3533ff526e 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
66534816a7 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
cd441c5f29 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
17ced40bf4 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
2f3b1cce02 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
a295aec785 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
672d611c8f 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
a772c2b7d6 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
36d09be949 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
ed616f8c26 9pmount-vsock: add initial skeleton
Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 13:56:36 +01:00
Rolf Neugebauer
57921ac699 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
32c5dcd97a 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
2dc7c66e0d 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
f8e3bd7c37 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
49d72c048a 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
217883beea 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
b2bfeeb607 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
26b2dc0dd7 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
8a15616f33 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
f1aa816c4a 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
27126abf3b 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
124eb81ca2 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
255a92a3dc 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
db0ddaa84e 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
61634d2aff 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
aeacb7b283 Merge pull request #135 from justincormack/buildbase
use build-base not alpine-sdk as smaller
2016-05-17 10:01:32 -05:00
Justin Cormack
a740d022ff use build-base not alpine-sdk as smaller
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-05-17 10:00:58 -05:00
Justin Cormack
504b115a4e Merge pull request #128 from dave-tucker/proxy
Write Proxy Settings in Docker Init Script
2016-05-17 08:03:29 -05:00
Justin Cormack
8b24be487b Merge pull request #133 from rneugeba/vmbus-up
kernel: cherry-pick more VMBus patches, fix for yet another kernel crash
2016-05-17 08:01:20 -05:00
Justin Cormack
7e868001e4 Merge pull request #134 from ncopa/kernel-4.4.10
update to kernel 4.4.10, aufs 20160516
2016-05-17 08:00:59 -05:00
Natanael Copa
26ae4693e1 update to kernel 4.4.10, aufs 20160516
Signed-off-by: Natanael Copa <natanael.copa@docker.com>
2016-05-17 12:55:24 +02:00