an [abandoned] attempt to slice out the docker/docker/pkg package
Find a file
Jiri Popelka 5e167a6493 Support for Firewalld
Firewalld [1] is a firewall managing daemon with D-Bus interface.

What sort of problem are we trying to solve with this ?

Firewalld internally also executes iptables/ip6tables to change firewall settings.
It might happen on systems where both docker and firewalld are running
concurrently, that both of them try to call iptables at the same time.
The result is that the second one fails because the first one is holding a xtables lock.
One workaround is to use --wait/-w option in both
docker & firewalld when calling iptables.
It's already been done in both upstreams:
b315c380f4
b3b451d6f8
But it'd still be better if docker used firewalld when it's running.

Other problem the firewalld support would solve is that
iptables/firewalld service's restart flushes all firewall rules
previously added by docker.
See next patch for possible solution.

This patch utilizes firewalld's D-Bus interface.
If firewalld is running, we call direct.passthrough() [2] method instead
of executing iptables directly.
direct.passthrough() takes the same arguments as iptables tool itself
and passes them through to iptables tool.
It might be better to use other methods, like direct.addChain and
direct.addRule [3] so it'd be more intergrated with firewalld, but
that'd make the patch much bigger.
If firewalld is not running, everything works as before.

[1] http://www.firewalld.org/
[2] https://jpopelka.fedorapeople.org/firewalld/doc/firewalld.dbus.html#FirewallD1.direct.Methods.passthrough
[3] https://jpopelka.fedorapeople.org/firewalld/doc/firewalld.dbus.html#FirewallD1.direct.Methods.addChain
    https://jpopelka.fedorapeople.org/firewalld/doc/firewalld.dbus.html#FirewallD1.direct.Methods.addRule

Signed-off-by: Jiri Popelka <jpopelka@redhat.com>
2015-04-20 13:02:03 +02:00
archive Fix vet warning 2015-04-13 11:43:30 -07:00
broadcastwriter pkg/broadcastwriter: reset after 4 KB w/o stream 2015-04-01 01:26:19 +03:00
chrootarchive Merge pull request #12360 from yestin/11601-supplement-tests-part-2 2015-04-14 21:00:12 -04:00
devicemapper devmapper: Use a pointer as argument to deferred function UdevWait() 2015-04-02 16:47:14 -04:00
directory Makes directory pkg compilable on Windows. 2015-03-12 15:54:22 +01:00
etchosts added documentation for functions 2015-04-15 19:28:01 -07:00
fileutils Refactor utils/utils, fixes #11923 2015-04-14 01:37:36 +02:00
graphdb Fix wrong graphdb refs paths purging 2015-04-14 23:10:43 +02:00
homedir If $HOME is not set, return homedir from /etc/passwd 2015-03-10 10:00:22 -04:00
httputils Refactor utils/utils, fixes #11923 2015-04-14 01:37:36 +02:00
ioutils Refactor utils/utils, fixes #11923 2015-04-14 01:37:36 +02:00
iptables Support for Firewalld 2015-04-20 13:02:03 +02:00
jsonlog pkg/jsonlog: add JSONLogBytes for low allocations 2015-04-01 01:02:18 +03:00
jsonmessage Fixes hacks from progressreader refactor 2015-03-25 18:21:02 -07:00
listenbuffer listenbuffer: add docs 2015-03-25 03:11:34 +00:00
mflag Refactor utils/flags.go, fixes #11892 2015-03-29 03:22:46 +02:00
mount Add documentation for exported functions and types 2015-04-03 11:33:34 +02:00
namesgenerator Merge pull request #12214 from ahmetalpbalkan/namesgenerator/localrand 2015-04-14 13:10:26 -04:00
parsers Add ability to refer to image by name + digest 2015-03-17 10:10:42 +00:00
pidfile Moved pidfile from utils to pkg 2015-03-24 23:59:32 +01:00
pools Remove pools_nopool.go & build tag from pools.go 2015-04-10 02:32:55 +03:00
progressreader Fix progress reader output on close 2015-03-31 13:17:25 -07:00
promise Move Go() promise-like func from utils to pkg/promise 2014-09-29 23:16:27 -07:00
proxy Replace aliased imports of logrus, fixes #11762 2015-03-26 23:22:04 +01:00
pubsub Remove publisher if no one is listening 2015-01-20 20:21:47 -08:00
reexec Fix relative path execution of docker daemon in reexec.Self() 2015-03-16 16:52:00 -04:00
requestdecorator Refactor utils/utils, fixes #11923 2015-04-14 01:37:36 +02:00
resolvconf Refactor utils/utils, fixes #11923 2015-04-14 01:37:36 +02:00
signal Replace aliased imports of logrus, fixes #11762 2015-03-26 23:22:04 +01:00
stdcopy correct pkg/stdcopy NewStdWriter function comments 2015-04-13 17:21:27 +08:00
streamformatter Fixes hacks from progressreader refactor 2015-03-25 18:21:02 -07:00
stringid Refactor pkg/common, Fixes #11599 2015-03-24 18:19:59 +01:00
stringutils Refactor utils/utils, fixes #11923 2015-04-14 01:37:36 +02:00
symlink Remove subdirectories MAINTAINERS files 2015-03-06 18:21:51 -08:00
sysinfo Update inline doc for New 2015-03-27 13:55:22 -04:00
system Add some documentation to pkg/system 2015-03-31 12:00:33 -07:00
systemd Remove subdirectories MAINTAINERS files 2015-03-06 18:21:51 -08:00
tailfile Implement tail for docker logs 2014-07-01 23:44:12 +04:00
tarsum Remove subdirectories MAINTAINERS files 2015-03-06 18:21:51 -08:00
term fix some typos 2015-04-17 08:12:13 +00:00
timeoutconn Rename package timeout to timeoutconn. 2015-02-25 20:52:37 +01:00
timeutils Remove subdirectories MAINTAINERS files 2015-03-06 18:21:51 -08:00
truncindex Removed redundant err == nil check 2015-03-26 11:36:13 +01:00
ulimit Fixes pointer error 2015-03-25 20:45:17 -07:00
units Remove subdirectories MAINTAINERS files 2015-03-06 18:21:51 -08:00
urlutil Move git and url checks into pkg 2014-11-24 18:10:37 -05:00
version Fix minor typo 2015-03-25 00:46:22 +08:00
README.md Add README to pkg 2013-12-23 23:12:19 +00:00

pkg/ is a collection of utility packages used by the Docker project without being specific to its internals.

Utility packages are kept separate from the docker core codebase to keep it as small and concise as possible. If some utilities grow larger and their APIs stabilize, they may be moved to their own repository under the Docker organization, to facilitate re-use by other projects. However that is not the priority.

The directory pkg is named after the same directory in the camlistore project. Since Brad is a core Go maintainer, we thought it made sense to copy his methods for organizing Go code :) Thanks Brad!

Because utility packages are small and neatly separated from the rest of the codebase, they are a good place to start for aspiring maintainers and contributors. Get in touch if you want to help maintain them!