diff --git a/libnetwork/drivers/macvlan/macvlan_network.go b/libnetwork/drivers/macvlan/macvlan_network.go index 398c14e308..50f1a086a5 100644 --- a/libnetwork/drivers/macvlan/macvlan_network.go +++ b/libnetwork/drivers/macvlan/macvlan_network.go @@ -195,25 +195,21 @@ func parseNetworkOptions(id string, option options.Generic) (*configuration, err // parseNetworkGenericOptions parses generic driver docker network options func parseNetworkGenericOptions(data interface{}) (*configuration, error) { - var ( - err error - config *configuration - ) switch opt := data.(type) { case *configuration: - config = opt + return opt, nil case map[string]string: return newConfigFromLabels(opt), nil case options.Generic: - var opaqueConfig interface{} - if opaqueConfig, err = options.GenerateFromModel(opt, config); err == nil { - config = opaqueConfig.(*configuration) + var config *configuration + opaqueConfig, err := options.GenerateFromModel(opt, config) + if err != nil { + return nil, err } + return opaqueConfig.(*configuration), nil default: - err = types.BadRequestErrorf("unrecognized network configuration format: %v", opt) + return nil, types.BadRequestErrorf("unrecognized network configuration format: %v", opt) } - - return config, err } // newConfigFromLabels creates a new configuration from the given labels.