Commit Graph
847 Commits
Author SHA1 Message Date
rade d7405bf8d5 Merge pull request #304 from viirya/fix_detach
Support detaching on containers created in container networking mode.
2014-12-29 15:41:03 +00:00
Liang-Chi Hsieh 961b1eb3de Support detaching on containers created in container networking mode. 2014-12-29 23:14:59 +08:00
Matthias Radestock 70eea06de0 more precise detection of weave-attached-ness
Rather than looking for the host end of the veth pair, we look for the
expected interface inside the container. This has the advantage of
detecting weave-attached-ness even when the container is sharing a
network namespace with others.

Closes #303, #302.
2014-12-29 14:14:53 +00:00
Matthias Radestock 7cfb79cfc1 close connection when failing to decrypt packets
Since we may never recover from that if nonces got out of sync.

Closes #274.
2014-12-28 19:52:56 +00:00
Matthias Radestock f792bf7ef8 don't log packet on decryption error
since that is expensive and clutters the logs
2014-12-28 19:09:41 +00:00
Matthias Radestock 4242a60768 use documented 'docker inspect --format=...' instead of '--format ...' 2014-12-28 00:11:03 +00:00
Matthias Radestock f3faf83321 refuse to attach containers running in the host network namespace
Since bad things happen otherwise, i.e. we end up creating veth pairs
with an ethwe on the host

Closes #270.
2014-12-27 15:14:29 +00:00
Matthias Radestock 73bbb95f7f refactor: move LocalPeer code into separate file 2014-12-25 14:05:41 +00:00
Matthias Radestock f304543ddf refactor: move definition of Peer and related types 2014-12-25 14:02:53 +00:00
Matthias Radestock 7a026f5a14 cosmetic: move a method 2014-12-25 13:57:49 +00:00
Matthias Radestock 5e6bb8ee67 cosmetic: more logical field order 2014-12-25 13:57:31 +00:00
Matthias Radestock 75ed7d52b9 refactor: give Peers knowledge of Ourself.Peer and MacCache
so their use (when applying updates and performing gc) is opaque
2014-12-25 13:49:58 +00:00
Matthias Radestock af59b38134 refactor: Peers no longer has dependency on Router
or ConnectionMaker
2014-12-25 13:33:45 +00:00
Matthias Radestock 6f990d217d refactor: fewer references to Router 2014-12-25 13:12:42 +00:00
Matthias Radestock 3ba5a5024e refactor: Peer no longer needs Router
Hooray!
2014-12-25 13:05:22 +00:00
Matthias Radestock 465915d7d4 refactor: split out LocalPeer
This has been a source of confusion for a long time.
2014-12-25 12:57:45 +00:00
Matthias Radestock 059360416a gofmt 2014-12-25 11:27:42 +00:00
rade c367914984 Merge pull request #299 from viirya/fix_doc_link
Minor fix of document link
2014-12-25 08:49:20 +00:00
Liang-Chi Hsieh d557f2ff31 Fix document link. 2014-12-25 16:25:19 +08:00
Matthias Radestock da8e9fd0eb refactor: further reduce dependency on router 2014-12-24 20:43:35 +00:00
Matthias Radestock 2d4baa8dba refactor: reduce dependency on peer.Router
now the only code depending on it is Peer itself
2014-12-24 20:12:48 +00:00
Matthias Radestock 945a5cf7fe refactor: reduce dependencies of ConnectionMaker
it doesn't need to know about Router, just Ourself and Peers
2014-12-24 19:53:11 +00:00
Matthias Radestock 71cd83bf20 refactor: move ConnectionMaker and related types 2014-12-24 19:46:12 +00:00
Matthias Radestock 03b338a252 remove cruft 2014-12-24 19:42:49 +00:00
Matthias Radestock b3be24248e refactor: narrow dependencies of Routes
it doesn't need to know about the Router, just Ourself and Peers.
2014-12-24 19:40:18 +00:00
Matthias Radestock 2b2f47c031 refactor: rename PeerCache to Peers
It was never much of a cache, and that aspect of it is certainly not
its defining characteristic.
2014-12-24 19:23:43 +00:00
Matthias Radestock e8f836ad85 refactor: rename 'Topology' to 'Routes'
Since that is what it is. By contrast, when the docs talk about
topology they actually refer to the peer connectivity graph.
2014-12-24 19:12:01 +00:00
Matthias Radestock fc1ec6ada2 refactor: go straight to PeerCache for fetching topology
There is no need to go via Topology. Fetching does not access or
modify the Topology state, and none of the functions on Topology
update the PeerCache. So there is no point serialising the fetching
with RebuildRoutes (or anything else).

This does mean the connections' receiveTCP goroutines will take a
direct lock on PeerCache, but a) it is only a read lock, and b) they
already take a write lock in another code path.

There may be some extra load on the PeerCache as a result of this
change, due to the topology fetching of multiple connections no longer
being funneled through the single Topology goroutine. Consequently,
write locks on the PeerCache may take a little longer to
acquire. Until we encounter this as a genuine problem though it's
better to stick with the simpler code.
2014-12-24 18:34:59 +00:00
Matthias Radestock aa5fc62184 remove cruft 2014-12-24 16:06:31 +00:00
Bryan Boreham 47f4933c92 Merge pull request #295 from rade/eliminate_heartbeater
LGTM.  Fixes #294
2014-12-24 13:41:03 +00:00
Matthias Radestock 1c5d720db4 simplify some more 2014-12-24 13:38:17 +00:00
Matthias Radestock fecbf220cc simplify 2014-12-24 13:35:51 +00:00
Matthias Radestock 9cd652ef0b refactor: introduce small helper 2014-12-24 13:29:13 +00:00
Matthias Radestock 99c1163862 fmt 2014-12-24 10:54:38 +00:00
Matthias Radestock 108e468ada Merge branch 'master' into eliminate_heartbeater
Conflicts:
	router/connection.go
2014-12-24 10:48:39 +00:00
Matthias Radestock 5ccc753367 kill stale connections
The weave protocol already effectively performs heartbeating -
FetchAll is performed at regular intervals. Hence we can detect stale
connections by the lack of receiving any data for approximately that
interval (we use x2).

We use the same interval to set a time limit on the handshake too, and
any subsequent interactions prior to the connection being fully
established.

Fixes #272.
2014-12-24 10:33:37 +00:00
Matthias Radestock 3c50909a49 nodelay is the default, according to the docs 2014-12-24 09:09:00 +00:00
Matthias Radestock e850127ed4 git rid of heartbeater goroutine
...by moving the logic into the connection actor goroutine.

The heartbeater goroutine was doing a lot more than just heartbeating;
namely it also had tickers for triggering a ProtocolFetchAll and
initiating a fragmentation test. Furhermore, ensureHeartbeats also
spawned the forwarders.

So this was quite a mix of functionality, and, furthermore, most of it
related quite closely to the connection actor. So moving the
functionality into that simplifies the code.

In the process we also fix #294.
2014-12-23 22:01:03 +00:00
Matthias Radestock ad67dc5d07 don't swallow error
Since sometimes the error is different from what we expect.
2014-12-23 19:50:08 +00:00
Matthias Radestock 34db7044e4 cosmetic 2014-12-23 17:49:16 +00:00
rade e5699fcfcb Merge pull request #292 from errordeveloper/fix_282
Simplify docker version sed expression

Fixes #282.
2014-12-23 17:00:10 +00:00
Ilya Dmitrichenko c61ed4010a Simplify docker version sed expression (close #282) 2014-12-23 16:24:10 +00:00
Matthias Radestock d0846961e3 cosmetic(ish): consistently use $(...) instead of ... 2014-12-23 14:52:15 +00:00
rade ccabdc421a Merge pull request #290 from bboreham/master
Quote $@ everywhere, to guard against spaces, globbing, etc.
2014-12-23 14:50:28 +00:00
Bryan Boreham 5bb80c7126 Quote $@ everywhere, to guard against spaces, globbing, etc. 2014-12-23 14:42:48 +00:00
Matthias Radestock 15a5e38e8b cosmetic 2014-12-23 12:59:54 +00:00
Matthias Radestock af3d2c7e7f cosmetic: break overlong lines 2014-12-23 12:27:13 +00:00
Matthias Radestock d54cc53864 install docker-ns in test VMs
handy for debugging
2014-12-23 12:14:33 +00:00
Ilya Dmitrichenko 73a8f32532 Merge pull request #288 from viirya/if_param
Assign iface parameter from defined variable
2014-12-23 12:10:53 +00:00
Liang-Chi Hsieh f5afe3b203 Merge remote-tracking branch 'upstream/master' into if_param
Conflicts:
	weave
	weaver/Dockerfile
2014-12-22 20:58:20 +08:00