123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- // Copyright 2015 flannel authors
- //
- // 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 (
- "net"
- "sync"
- "github.com/flannel-io/flannel/subnet"
- "golang.org/x/net/context"
- )
- type ExternalInterface struct {
- Iface *net.Interface
- IfaceAddr net.IP
- IfaceV6Addr net.IP
- ExtAddr net.IP
- ExtV6Addr net.IP
- }
- // 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.
- type Backend interface {
- // Called when the backend should create or begin managing a new network
- RegisterNetwork(ctx context.Context, wg *sync.WaitGroup, config *subnet.Config) (Network, error)
- }
- type Network interface {
- Lease() *subnet.Lease
- MTU() int
- Run(ctx context.Context)
- }
- type BackendCtor func(sm subnet.Manager, ei *ExternalInterface) (Backend, error)
|