123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- // Copyright 2015 CoreOS, Inc.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- package backend
- import (
- "github.com/coreos/flannel/Godeps/_workspace/src/golang.org/x/net/context"
- "github.com/coreos/flannel/subnet"
- )
- type SubnetDef struct {
- Lease *subnet.Lease
- MTU int
- }
- // Besides the entry points in the Backend interface, the backend's New()
- // function receives static network interface information (like internal and
- // external IP addresses, MTU, etc) which it should cache for later use if
- // needed.
- //
- // To implement a singleton backend which manages multiple networks, the
- // New() function should create the singleton backend object once, and return
- // that object on on further calls to New(). The backend is guaranteed that
- // the arguments passed via New() will not change across invocations. Also,
- // since multiple RegisterNetwork() and Run() calls may be in-flight at any
- // given time for a singleton backend, it must protect these calls with a mutex.
- type Backend interface {
- // Called when the backend should create or begin managing a new network
- RegisterNetwork(ctx context.Context, network string, config *subnet.Config) (*SubnetDef, error)
- // Called after the backend's first network has been registered to
- // allow the plugin to watch dynamic events
- Run(ctx context.Context)
- }
|