virtcontainers: Add a Network API skeleton for Darwin

Empty for now.

Fixes: #6051

Signed-off-by: Samuel Ortiz <s.ortiz@apple.com>
Signed-off-by: Eric Ernst <eric_ernst@apple.com>
This commit is contained in:
Samuel Ortiz 2021-11-24 17:06:12 +01:00 committed by Eric Ernst
parent c6b7f69040
commit ea06fe3afc

View File

@ -0,0 +1,101 @@
// Copyright (c) 2023 Apple Inc.
//
// SPDX-License-Identifier: Apache-2.0
//
package virtcontainers
import (
"context"
"errors"
"github.com/vishvananda/netlink"
persistapi "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist/api"
)
var endpointNotSupported error = errors.New("Unsupported endpoint on Darwin")
// DarwinNetwork represents a sandbox networking setup.
type DarwinNetwork struct {
networkID string
interworkingModel NetInterworkingModel
networkCreated bool
eps []Endpoint
}
func NewNetwork(configs ...*NetworkConfig) (Network, error) {
if len(configs) > 1 {
return nil, errors.New("too many network configurations")
}
// Empty constructor
if len(configs) == 0 {
return &DarwinNetwork{}, nil
}
config := configs[0]
if config == nil {
return nil, errors.New("missing network configuration")
}
return &DarwinNetwork{
config.NetworkID,
config.InterworkingModel,
config.NetworkCreated,
[]Endpoint{},
}, nil
}
func LoadNetwork(netInfo persistapi.NetworkInfo) Network {
network := DarwinNetwork{
networkID: netInfo.NetworkID,
networkCreated: netInfo.NetworkCreated,
}
return &network
}
func (n *DarwinNetwork) AddEndpoints(context.Context, *Sandbox, []NetworkInfo, bool) ([]Endpoint, error) {
return nil, endpointNotSupported
}
func (n *DarwinNetwork) RemoveEndpoints(context.Context, *Sandbox, []Endpoint, bool) error {
return endpointNotSupported
}
func (n *DarwinNetwork) Run(context.Context, func() error) error {
return nil
}
func (n *DarwinNetwork) NetworkID() string {
return n.networkID
}
func (n *DarwinNetwork) NetworkCreated() bool {
return n.networkCreated
}
func (n *DarwinNetwork) NetMonitorThread() int {
return 0
}
func (n *DarwinNetwork) SetNetMonitorThread(pid int) {
return
}
func (n *DarwinNetwork) Endpoints() []Endpoint {
return n.eps
}
func (n *DarwinNetwork) SetEndpoints(endpoints []Endpoint) {
n.eps = endpoints
}
func validGuestRoute(route netlink.Route) bool {
return true
}
func validGuestNeighbor(route netlink.Neigh) bool {
return true
}