Commit Graph

31 Commits

Author SHA1 Message Date
Rolf Neugebauer
aceebda3db net: consolidate DHCP onto eth0 only
- rename DfW main interface eth0
- remove eth1 DHCP config
- create tap device in init script not interfaces file

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-09-22 18:12:45 +01:00
Rolf Neugebauer
eee8a92d03 tap-vsockd: better error handling
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-09-16 11:02:29 +01:00
Rolf Neugebauer
afb6b0b830 tap-vsockd: Use Linux coding style (mostly)
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-09-16 11:02:29 +01:00
Justin Cormack
8646f76ed2 update to latest alpine base images
Signed-off-by: Justin Cormack <justin@specialbusservice.com>
2016-09-12 16:02:07 +01:00
Justin Cormack
b1597ff9a9 Move all output to the directories it will be in eventually
Signed-off-by: Justin Cormack <justin@specialbusservice.com>
2016-09-12 16:02:07 +01:00
Justin Cormack
a67d112799 use cc
Signed-off-by: Justin Cormack <justin@specialbusservice.com>
2016-09-12 16:00:53 +01:00
Justin Cormack
6297dede18 clean up tap-vsockd build process
Signed-off-by: Justin Cormack <justin@specialbusservice.com>
2016-09-12 16:00:53 +01:00
Justin Cormack
3a2c28f352 Closer to reproducible builds
Make an alpine base image for C and Go builds.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-09-06 13:18:11 +01:00
Justin Cormack
daea294c94 use build-base not alpine-sdk, it is smaller
Signed-off-by: Justin Cormack <justin@specialbusservice.com>
2016-08-30 10:43:34 +01:00
David Scott
d5661d6426 tap-vsockd: support reconnection
If the server side crashes and is restarted, this patch makes
tap-vsockd reconnect so the network is restored.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-08-18 11:01:02 +01:00
Justin Cormack
a880bcf136 Use mobyplatform not vmbus for tap-vsock
Plus cleanup for less indentation. No functional change.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-20 12:30:59 +01:00
David Scott
abe75e4e50 tap-vsockd: make sure the service daemonizes properly
This tells start-stop-daemon to run tap-vsockd as a daemon, and tells
tap-vsockd not to daemonize itself. This seems to work more reliably
than when tap-vsockd self-daemonizes.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-06-14 15:16:56 +01:00
Ian Campbell
b8a7032161 Add || true to the docker rmi invocations in the clean target
Linux xargs calls the command with no arguments if it gets no inputs, which
`docker rmi` complains about. It provides -r / --no-run-if-empty to prevent
this but unfortunately this isn't supported on OSX.

Ignore errors from `docker rmi` so that `make clean` will keep going and clean
up later stuff.

Signed-off-by: Ian Campbell <ian.campbell@docker.com>
2016-06-08 13:59:47 +01:00
Justin Cormack
8a86af7d1e Update to Alpine 3.4
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-06-03 12:45:15 +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
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
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