2015-02-22 17:24:22 -08:00
|
|
|
package bridge
|
|
|
|
|
2015-05-22 10:56:36 -07:00
|
|
|
type setupStep func(*networkConfiguration, *bridgeInterface) error
|
2015-02-22 17:24:22 -08:00
|
|
|
|
2015-03-04 13:25:43 -08:00
|
|
|
type bridgeSetup struct {
|
2015-05-22 10:56:36 -07:00
|
|
|
config *networkConfiguration
|
2015-03-04 13:25:43 -08:00
|
|
|
bridge *bridgeInterface
|
|
|
|
steps []setupStep
|
2015-02-22 17:24:22 -08:00
|
|
|
}
|
|
|
|
|
2015-05-22 10:56:36 -07:00
|
|
|
func newBridgeSetup(c *networkConfiguration, i *bridgeInterface) *bridgeSetup {
|
2015-04-15 05:25:42 +00:00
|
|
|
return &bridgeSetup{config: c, bridge: i}
|
2015-02-22 17:24:22 -08:00
|
|
|
}
|
|
|
|
|
2015-03-04 13:25:43 -08:00
|
|
|
func (b *bridgeSetup) apply() error {
|
2015-02-22 17:24:22 -08:00
|
|
|
for _, fn := range b.steps {
|
2015-04-15 05:25:42 +00:00
|
|
|
if err := fn(b.config, b.bridge); err != nil {
|
2015-02-22 17:24:22 -08:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2015-03-04 13:25:43 -08:00
|
|
|
func (b *bridgeSetup) queueStep(step setupStep) {
|
2015-02-22 17:24:22 -08:00
|
|
|
b.steps = append(b.steps, step)
|
|
|
|
}
|