libnetwork/iptables: make setupDockerZone a method

Make it a method on the firewalldConnection, which felt more natural
than being implemented as a standalone function that depended on the
package-level variable.

Also improve some error-messages to include context about the failure.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn 2023-08-15 14:58:28 +02:00
parent 7844a8d481
commit 1a36c4eef9
No known key found for this signature in database
GPG key ID: 76698F39D527CE8C

View file

@ -54,7 +54,7 @@ func firewalldInit() error {
// start handling D-Bus signals that were registered.
firewalld.handleSignals()
err = setupDockerZone()
err = firewalld.setupDockerZone()
if err != nil {
return err
}
@ -227,13 +227,13 @@ func (z firewalldZone) settings() []interface{} {
}
}
// setupDockerZone creates a zone called docker in firewalld which includes docker interfaces to allow
// container networking
func setupDockerZone() error {
// setupDockerZone creates a zone called docker in firewalld which includes
// docker interfaces to allow container networking.
func (fwd *firewalldConnection) setupDockerZone() error {
var zones []string
// Check if zone exists
if err := firewalld.sysObj.Call(dbusInterface+".zone.getZones", 0).Store(&zones); err != nil {
return err
if err := fwd.sysObj.Call(dbusInterface+".zone.getZones", 0).Store(&zones); err != nil {
return fmt.Errorf("firewalld: failed to check if %s zone already exists: %v", dockerZone, err)
}
if contains(zones, dockerZone) {
log.G(context.TODO()).Infof("Firewalld: %s zone already exists, returning", dockerZone)
@ -248,12 +248,12 @@ func setupDockerZone() error {
description: "zone for docker bridge network interfaces",
target: "ACCEPT",
}
if err := firewalld.sysConfObj.Call(dbusInterface+".config.addZone", 0, dockerZone, dz.settings()).Err; err != nil {
return err
if err := fwd.sysConfObj.Call(dbusInterface+".config.addZone", 0, dockerZone, dz.settings()).Err; err != nil {
return fmt.Errorf("firewalld: failed to set up %s zone: %v", dockerZone, err)
}
// Reload for change to take effect
if err := firewalld.sysObj.Call(dbusInterface+".reload", 0).Err; err != nil {
return err
if err := fwd.sysObj.Call(dbusInterface+".reload", 0).Err; err != nil {
return fmt.Errorf("firewalld: failed to set up %s zone: %v", dockerZone, err)
}
return nil