120 Commits
Author SHA1 Message Date
Alessandro Boch fbe33267f0 Enable Network labels in backend
- Allow labels to be passed to network driver during network create

Signed-off-by: Alessandro Boch <aboch@docker.com>
2015-10-09 01:06:15 -07:00
Jana Radhakrishnan b77b0b054d Merge pull request #612 from aboch/bip
Retire ipallocator
2015-10-08 22:29:08 -07:00
Jana Radhakrishnan 845ef40a45 Make bridge driver networks persistent
Since libnetwork is going to provide createNetwork
notifications only once when the network is created
bridge network needs to save it's network state in
persistent store so that it becomes available even
after restart.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2015-10-08 20:42:45 -07:00
Alessandro Boch bc4a61cadf Retire ipallocator
Signed-off-by: Alessandro Boch <aboch@docker.com>
2015-10-08 18:19:25 -07:00
Alessandro Boch a49fb6b897 Phase-2 bridge driver changes to support IPAM
- Set bridge ipv4 address when bridge is present
- IPv6 changes for bridge
- Convert unit tests to the new model

Signed-off-by: Alessandro Boch <aboch@docker.com>
2015-10-08 16:22:03 -07:00
Madhu Venugopal b462ed4566 Phase-1 bridge driver changes to support IPAM
Signed-off-by: Madhu Venugopal <madhu@docker.com>
2015-10-08 14:26:58 -07:00
Alessandro Boch 6315c9a4b6 libnetwork <-> ipam driver interaction
Signed-off-by: Alessandro Boch <aboch@docker.com>
2015-10-03 16:18:19 -07:00
Madhu Venugopal 8d03e80f21 Integration with Docker Discovery
* integrated hostdiscovery package with the new Docker Discovery
* Integrated hostdiscovery package with libnetwork core
* removed libnetwork_discovery tag
* Introduced driver apis for discovery events
* moved overlay driver to make use of the discovery events
* Using Docker Discovery service.
* Changed integration-tests to make use of the new discovery

Signed-off-by: Madhu Venugopal <madhu@docker.com>
2015-10-01 12:32:55 -07:00
Madhu Venugopal d4fb07736c Fixed a few more issues observed during docker integration
- DisableBridgeCreation is misleading. change it to DefaultBridge
- Dont fail the init if localstore cannot be initialized
- added a convenience function to get endpoint for a container

Signed-off-by: Madhu Venugopal <madhu@docker.com>
2015-09-25 09:40:42 -07:00
Madhu Venugopal cd3f1eb46c Setting bridgename to be network-id[:12] if bridgename option is empty
Signed-off-by: Madhu Venugopal <madhu@docker.com>
2015-09-24 19:10:28 -07:00
Madhu Venugopal 02ba4f6df7 Flip the default for the flag AllowNonDefaultBridge in bridge driver
Replaced it with DisableBridgeCreation and it can be used ONLY in
a special case for docker0 bridge from docker, instead of calling it
from all other case.

Signed-off-by: Madhu Venugopal <madhu@docker.com>
2015-09-24 02:18:35 -07:00
Chun Chen b35d1735d4 Add local datastore to persist states of LocalScope network
Signed-off-by: Chun Chen <ramichen@tencent.com>
2015-09-21 17:58:51 +08:00
Jana Radhakrishnan 900aca112b Push driver config during Init
Currently the driver configuration is pushed through a separate
api. This makes driver configuration possible at any arbitrary
time. This unncessarily complicates the driver implementation.
More importantly the driver does not get access to it's
configuration before it can do the handshake with libnetwork.
This make the internal drivers a little bit different to
external plugins which can get their configuration before the handshake
with libnetwork.

This PR attempts to fix that mismatch between internal drivers and
external plugins.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2015-09-19 08:43:34 -07:00
Jana Radhakrishnan a3db98ec00 Remove multiple interface in an endpoint
Currently the endpoint data model consists of multiple
interfaces per-endpoint. This seems to be an overkill
since there is no real use case for it. Removing it
to remove unnecessary complexity from the code.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2015-09-11 09:19:01 -07:00
Jana Radhakrishnan 128ad3ca2d Fix bridge driver panic in CreateNetwork
Bridge driver panics in `CreateNetwork` if called without
a prior `Config` call. This causes issues in dnet which
tries to create network using default driver configuration.
It should be valid to call `CreateNetwork` without a prior
`Config` call in which case we need to assume default driver
config.

Fixed this by properly initializing the driver config pointer.
Also introduced a `configured` bool to make sure that still
`Config` is called exactly once for the instance of the bridge
driver.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2015-09-04 11:19:52 -07:00
Jana Radhakrishnan dc74350acc Merge pull request #443 from aboch/mb
Fixes ip allocation for multi bridge networks
2015-09-03 16:30:19 -07:00
Jana Radhakrishnan b784a13c94 Explicitly set namespace for all network operations
Make sure to always explicitly set namespace for all
kernel bound network operations irrespective of whether
the operation is performed in init namespace or a user
defined namespace. This already happens for user defined
netns. But doesn't happen for initial netns that libnetwork
runs in.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2015-09-01 14:00:58 -07:00
Alessandro Boch 13738d592e Fixes ip allocation for multi bridge networks
- Do not discard errors on ip allocation for gw and bridge
- Release addresses on network delete
- Add some context on top of ipallocator returned error
- Create ip allocator instance at driver creation, not at package init,
  otherwise this affects bridge test code where ip db is carried over
  test functions

Signed-off-by: Alessandro Boch <aboch@docker.com>
2015-08-27 20:39:30 -07:00
Alessandro Boch 9a47be244a Introduce Sandbox entity
- Maps 1 to 1 with container's networking stack
- It holds container's specific nw options which
  before were incorrectly owned by Endpoint.
- Sandbox creation no longer coupled with Endpoint Join,
  sandbox and endpoint have now separate lifecycle.
- LeaveAll naturally replaced by Sandbox.Delete
- some pkg and file renaming in order to have clear
  mapping between structure name and entity ("sandbox")
- Revisited hosts and resolv.conf handling
- Removed from JoinInfo interface capability of setting hosts and resolv.conf paths
- Changed etchosts.Build() to first write the search domains and then the nameservers

Signed-off-by: Alessandro Boch <aboch@docker.com>
2015-08-27 11:19:02 -07:00
Alessandro Boch 0eb9387480 Fix in bridge delete endpoint
- In DeleteEndpoint(), veth removal is a best effort,
  as it could have alreayd been removed by sandbox destroy.
  Therefore if veth is not found, cleanup defer function
  should not run.

Signed-off-by: Alessandro Boch <aboch@docker.com>
2015-08-06 17:04:38 -07:00
Mohammad Banikazemi 9c6ab12376 Seperates the driver-specific and network-specific iptable operations
for the bridge driver.

Moves two config options, namely EnableIPTables and EnableUserlandProxy
from networks to the driver.

Closes #242
Signed-off-by: Mohammad Banikazemi <MBanikazemi@gmail.com>
2015-08-04 17:26:41 -04:00
Madhu Venugopal 84d8c77b20 Merge pull request #434 from runcom/remove-unused-config-check
Remove unused config check
2015-08-04 12:51:27 -07:00
Madhu Venugopal 9f903375f8 Merge pull request #399 from mdavranche/brnetfilter
Fix module loading return.
2015-08-04 08:41:13 -07:00
Antonio Murdaca f657962ddb Remove unused config check
Signed-off-by: Antonio Murdaca <runcom@linux.com>
2015-08-04 01:04:11 +02:00
Alessandro Boch 20e2079cfb Reorganize MAC generation functions
- We have more than one function doing the same thing

Signed-off-by: Alessandro Boch <aboch@docker.com>
2015-07-30 11:06:16 -07:00
Madhu Venugopal 79b3e7761d Prefer Netlink calls over ioctl
As seen in https://github.com/docker/docker/issues/14738 there is
general instability in the later kernels under race conditions when ioctl
calls are used in parallel with netlink calls for various operations.
(We are yet to narrow down to the exact root-cause on the kernel).

For those older kernels which doesnt support some of the netlink APIs,
we can fallback to using ioctl calls. Hence bringing back the original
code that used netlink (https://github.com/docker/libnetwork/pull/349).

Also, there was an existing bug in bridge creation using netlink which
was setting bridge mac during bridge creation. That operation is not
supported in the netlink library (and doesnt throw an error either).
Included a fix for that condition by setting the bridge mac after
creating the bridge.

Signed-off-by: Madhu Venugopal <madhu@docker.com>
2015-07-30 09:10:22 -07:00
mikael.davranche 2626408796 Fix bridge and br_netfilter modules loading.
Signed-off-by: mikael.davranche <mikael.davranche@corp.ovh.com>
2015-07-30 09:34:09 +02:00
Madhu Venugopal 979a0eb2e4 Merge pull request #419 from mountkin/avoid-iface-leak-on-error
make sure the interfaces is cleared on error
2015-07-29 08:20:28 -07:00
Shijiang Wei 21e6f10be6 make sure the interfaces is cleared on error
Signed-off-by: Shijiang Wei <mountkin@gmail.com>
2015-07-29 20:15:02 +08:00
Alessandro Boch dbe6172d8c Misc fixes to ipallocator & bridge driver about FixedCIDR
- NetworkRange() function on which ipallocatore relies
  to compute the subnet limits has a bug in computing the upper limit IP
- in case container subnet is specified (fixedCIDR), bridge driver to
  reserve bridge and gateway addresses only if they belong to the container
  subnet
- Make ipallocator more robust in using converting the passed network
  to a canonical one before using it as a key in its public APIs

Signed-off-by: Alessandro Boch <aboch@docker.com>
2015-07-27 18:12:33 -07:00
Alessandro Boch fd896b98ce Misc fixes to ip allocation in bridge driver
Two changes were missing:
- On allocation of bridge ip was not passing canonical subnet
- Canonical subnet has to be passed on ip release
  as well, otherwise ipallocator will attempt
  ip release from a non registered nw

Signed-off-by: Alessandro Boch <aboch@docker.com>
2015-07-24 16:59:27 -07:00
aboch bf4ea43b71 Merge pull request #412 from mrjana/bugs
Use sysfs to set hairpin mode
2015-07-24 12:03:53 -07:00
Jana Radhakrishnan 9740746cf5 Merge pull request #409 from alecbenson/iccfix
Fix ICC on Fedora systems with Firewalld
2015-07-24 10:46:03 -07:00
Jana Radhakrishnan ef0378b1f3 Merge pull request #288 from aboch/ag
Pass a canonical subnet to ipallocator
2015-07-24 10:45:20 -07:00
Jana Radhakrishnan 22e60f160b Use sysfs to set hairpin mode
Set the hairpin mode using the sysfs interface which
looks like it is working all the way to the oldest
of RHEL6.6 kernels.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2015-07-24 10:26:08 -07:00
Alec Benson 7110f5ae6c Fix ICC on Firewalld enabled fedora systems, add in missing firewalld functionality to re-apply configuration when reloaded
Signed-off-by: Alec Benson <albenson@redhat.com>
2015-07-24 13:20:48 -04:00
Alexander Morozov fb6dd9766e Remove dependency on libcontainer
Signed-off-by: Alexander Morozov <lk4d4@docker.com>
2015-07-16 13:26:26 -07:00
Madhu Venugopal bc3bf488c3 Fixed a bug in DeleteEndpoint to properly release v6 ip
When fixed-cidrv6 is used, the allocation and release must happen from
the appropriate network. Allocation is done properly in createendpoint,
but the DeleteEndpoint wasnt taking care of this case.

Signed-off-by: Madhu Venugopal <madhu@docker.com>
2015-07-09 20:46:36 -07:00
Alec Benson ec88bd0a72 Refactor of docker PR #11405
Signed-off-by: Alec Benson <albenson@redhat.com>
2015-07-08 10:15:08 -04:00
Jana Radhakrishnan d7cfd9b2f1 Manually bring up the host side veth interface
In preparation for the new update of vishvananda/netlink package
we need to bringup the host veth interface manually.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2015-07-02 09:32:03 -07:00
Jana Radhakrishnan 3527ebe475 Fix networking issues in RHEL/Centos 6.6
Some parts of the bridge driver code needs to use a different kernel
api or use the already existing apis in slightly different ways to
make the bridge driver work in RHEL/Centos 6.6. This PR provides
those fixes.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2015-07-02 09:31:13 -07:00
Madhu Venugopal 64d1b728bb Merge pull request #278 from LK4D4/firewalld_support
Resurrect firewalld support
2015-06-26 13:12:19 -07:00
aboch 7d501b2b73 Merge pull request #304 from wulonghui/wulonghui-patch-1
Update modprobe bridge output
2015-06-25 16:51:30 -07:00
wulonghui 7df8d3eb4c Update error return in bridge driver's getNetwork 2015-06-25 19:33:46 +08:00
Alexander Morozov 0220b06cd6 Resurrect firewalld support
Signed-off-by: Alexander Morozov <lk4d4@docker.com>
2015-06-21 16:42:01 -07:00
wulonghui d5bea7ef27 Update modprobe bridge output 2015-06-17 10:07:51 +00:00
Madhu Venugopal 198ac62aef Cleaning up iptables nat table on driver bootup
This is required to have consistent behaviour as in 1.6.2.

Signed-off-by: Madhu Venugopal <madhu@docker.com>
2015-06-16 09:26:23 -07:00
Alessandro Boch 746bcb1dd3 Pass a canonical subnet to ipallocator
- Currently both network and host bits in the subnet are passed
  when requesting an address from ipallocator.
  The way ip allocator determines the first available
  IP is tainted when caller passes the subnet host bits.

- Verified this patch applied to libnetwork vendored in docker
  fixes the issue when starting the daemon.

- Fixes #287

Signed-off-by: Alessandro Boch <aboch@docker.com>
2015-06-12 00:20:43 -07:00
Madhu Venugopal acfac0ba4c enable hairpin mode on the bridge port & fix iptables rule
* When userland-proxy is disabled, enable hairpin mode on the host-side of the veth
* When userland-proxy is enabled, fix the iptable rules appropriately

Signed-off-by: Madhu Venugopal <madhu@docker.com>
2015-06-11 19:23:02 -07:00
Jana Radhakrishnan 590b873ac3 Merge pull request #264 from mavenugo/mh-ln
datastore support for endpoint, GetObject, DeleteObject and swarm store API upgrade
2015-06-11 15:28:19 -07:00