1/* SPDX-License-Identifier: MIT
2 *
3 * Copyright (C) 2017-2021 WireGuard LLC. All Rights Reserved.
4 */
5
6package device
7
8import (
9	"errors"
10
11	"golang.zx2c4.com/wireguard/conn"
12)
13
14type DummyDatagram struct {
15	msg      []byte
16	endpoint conn.Endpoint
17}
18
19type DummyBind struct {
20	in6    chan DummyDatagram
21	in4    chan DummyDatagram
22	closed bool
23}
24
25func (b *DummyBind) SetMark(v uint32) error {
26	return nil
27}
28
29func (b *DummyBind) ReceiveIPv6(buff []byte) (int, conn.Endpoint, error) {
30	datagram, ok := <-b.in6
31	if !ok {
32		return 0, nil, errors.New("closed")
33	}
34	copy(buff, datagram.msg)
35	return len(datagram.msg), datagram.endpoint, nil
36}
37
38func (b *DummyBind) ReceiveIPv4(buff []byte) (int, conn.Endpoint, error) {
39	datagram, ok := <-b.in4
40	if !ok {
41		return 0, nil, errors.New("closed")
42	}
43	copy(buff, datagram.msg)
44	return len(datagram.msg), datagram.endpoint, nil
45}
46
47func (b *DummyBind) Close() error {
48	close(b.in6)
49	close(b.in4)
50	b.closed = true
51	return nil
52}
53
54func (b *DummyBind) Send(buff []byte, end conn.Endpoint) error {
55	return nil
56}
57