blob: 6d824957ce990d987221636d23a54b32537278de [file] [log] [blame]
Matteo Scandolof6f3a7f2019-10-11 11:19:29 -07001/*
2 * Copyright 2018-present Open Networking Foundation
3
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7
8 * http://www.apache.org/licenses/LICENSE-2.0
9
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package packetHandlers_test
18
19import (
20 "github.com/google/gopacket"
21 "github.com/google/gopacket/layers"
22 "github.com/opencord/bbsim/internal/bbsim/packetHandlers"
23 "gotest.tools/assert"
24 "net"
25 "testing"
26)
27
28func Test_IsDhcpPacket_True(t *testing.T) {
29 dhcp := &layers.DHCPv4{
30 Operation: layers.DHCPOpReply,
31 }
32
33 buffer := gopacket.NewSerializeBuffer()
34 opts := gopacket.SerializeOptions{FixLengths: true}
35 err := gopacket.SerializeLayers(buffer, opts, dhcp)
36 if err != nil {
37 t.Fatal(err)
38 }
39
40 dhcpPkt := gopacket.NewPacket(buffer.Bytes(), layers.LayerTypeDHCPv4, gopacket.DecodeOptions{})
41
42 res := packetHandlers.IsDhcpPacket(dhcpPkt)
43 assert.Equal(t, res, true)
44}
45
46func Test_IsDhcpPacket_False(t *testing.T) {
47 eth := &layers.Ethernet{
48 DstMAC: net.HardwareAddr{0x2e, 0x60, 0x70, 0x13, 0x15, 0x16},
49 SrcMAC: net.HardwareAddr{0x2e, 0x60, 0x70, 0x13, 0x15, 0x17},
50 }
51
52 buffer := gopacket.NewSerializeBuffer()
53 opts := gopacket.SerializeOptions{FixLengths: true}
54 err := gopacket.SerializeLayers(buffer, opts, eth)
55 if err != nil {
56 t.Fatal(err)
57 }
58
59 ethernetPkt := gopacket.NewPacket(buffer.Bytes(), layers.LayerTypeEthernet, gopacket.DecodeOptions{})
60
61 res := packetHandlers.IsDhcpPacket(ethernetPkt)
62 assert.Equal(t, res, false)
63}
64
65func Test_IsIncomingPacket_True(t *testing.T) {
66 eth := &layers.IPv4{
67 SrcIP: net.ParseIP("182.21.0.128"),
68 DstIP: net.ParseIP("182.21.0.122"),
69 }
70
71 buffer := gopacket.NewSerializeBuffer()
72 opts := gopacket.SerializeOptions{FixLengths: true}
73 err := gopacket.SerializeLayers(buffer, opts, eth)
74 if err != nil {
75 t.Fatal(err)
76 }
77
78 ethernetPkt := gopacket.NewPacket(buffer.Bytes(), layers.LayerTypeIPv4, gopacket.DecodeOptions{})
79
80 res := packetHandlers.IsIncomingPacket(ethernetPkt)
81 assert.Equal(t, res, true)
82}
83
84func Test_IsIncomingPacket_False(t *testing.T) {
85 eth := &layers.IPv4{
86 SrcIP: net.ParseIP("182.21.0.122"),
87 DstIP: net.ParseIP("182.21.0.128"),
88 }
89
90 buffer := gopacket.NewSerializeBuffer()
91 opts := gopacket.SerializeOptions{FixLengths: true}
92 err := gopacket.SerializeLayers(buffer, opts, eth)
93 if err != nil {
94 t.Fatal(err)
95 }
96
97 ethernetPkt := gopacket.NewPacket(buffer.Bytes(), layers.LayerTypeIPv4, gopacket.DecodeOptions{})
98
99 res := packetHandlers.IsIncomingPacket(ethernetPkt)
100 assert.Equal(t, res, false)
101}
102
103func Test_GetDstMacAddressFromPacket(t *testing.T) {
104 dstMac := net.HardwareAddr{0x2e, 0x60, 0x70, 0x13, 0x15, 0x16}
105 eth := &layers.Ethernet{
106 DstMAC: dstMac,
107 SrcMAC: net.HardwareAddr{0x2e, 0x60, 0x70, 0x13, 0x15, 0x17},
108 }
109
110 buffer := gopacket.NewSerializeBuffer()
111 opts := gopacket.SerializeOptions{FixLengths: true}
112 err := gopacket.SerializeLayers(buffer, opts, eth)
113 if err != nil {
114 t.Fatal(err)
115 }
116
117 ethernetPkt := gopacket.NewPacket(buffer.Bytes(), layers.LayerTypeEthernet, gopacket.DecodeOptions{})
118
119 res, err := packetHandlers.GetDstMacAddressFromPacket(ethernetPkt)
120 assert.Equal(t, err, nil)
121 assert.Equal(t, res.String(), dstMac.String())
122}