// Copyright 2023 Antrea 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 testing

import (
	antreasyscall "antrea.io/antrea/pkg/agent/util/syscall"
)

// MockNetIO  is a custom defined mock struct, not generated by MockGen.
type MockNetIO struct {
	GetIPInterfaceEntryErr  error
	SetIPInterfaceEntryErr  error
	CreateIPForwardEntryErr error
	DeleteIPForwardEntryErr error
	ListIPForwardRowsErr    error
	IPForwardRows           []antreasyscall.MibIPForwardRow
}

func NewMockNetIO(testMibIPForwardRows []antreasyscall.MibIPForwardRow) antreasyscall.NetIOInterface {
	return &MockNetIO{
		IPForwardRows: testMibIPForwardRows,
	}
}

func (n *MockNetIO) GetIPInterfaceEntry(_ *antreasyscall.MibIPInterfaceRow) (errcode error) {
	return n.GetIPInterfaceEntryErr
}

func (n *MockNetIO) SetIPInterfaceEntry(_ *antreasyscall.MibIPInterfaceRow) (errcode error) {
	return n.SetIPInterfaceEntryErr
}

func (n *MockNetIO) CreateIPForwardEntry(_ *antreasyscall.MibIPForwardRow) (errcode error) {
	return n.CreateIPForwardEntryErr
}

func (n *MockNetIO) DeleteIPForwardEntry(_ *antreasyscall.MibIPForwardRow) (errcode error) {
	return n.DeleteIPForwardEntryErr
}

func (n *MockNetIO) ListIPForwardRows(_ uint16) ([]antreasyscall.MibIPForwardRow, error) {
	return n.IPForwardRows, n.ListIPForwardRowsErr
}
