Skip to content

Commit 888197d

Browse files
committed
Add MACsecEgressFilter tests
1 parent 8ed6e36 commit 888197d

File tree

2 files changed

+53
-1
lines changed

2 files changed

+53
-1
lines changed

unittest/vslib/Makefile.am

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ tests_SOURCES = main.cpp \
1818
TestLaneMap.cpp \
1919
TestLaneMapContainer.cpp \
2020
TestLaneMapFileParser.cpp \
21-
TestMACsecAttr.cpp
21+
TestMACsecAttr.cpp \
22+
TestMACsecEgressFilter.cpp
2223

2324
tests_CXXFLAGS = $(DBGFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS_COMMON)
2425
tests_LDADD = $(LDADD_GTEST) $(top_srcdir)/vslib/libSaiVS.a -lhiredis -lswsscommon -lpthread -L$(top_srcdir)/meta/.libs -lsaimetadata -lsaimeta -lzmq $(CODE_COVERAGE_LIBS)
+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#include "MACsecEgressFilter.h"
2+
3+
#include <gtest/gtest.h>
4+
5+
#include <sys/types.h>
6+
#include <sys/socket.h>
7+
#include <linux/if_packet.h>
8+
#include <linux/if_ether.h>
9+
#include <arpa/inet.h>
10+
#include <net/if.h>
11+
12+
#define EAPOL_ETHER_TYPE (0x888e)
13+
14+
using namespace saivs;
15+
16+
TEST(MACsecEgressFilter, ctr)
17+
{
18+
MACsecEgressFilter filter("foo");
19+
}
20+
21+
TEST(MACsecEgressFilter, forward)
22+
{
23+
MACsecEgressFilter filter("foo");
24+
25+
filter.set_macsec_fd(0);
26+
27+
uint8_t packet[4000];
28+
29+
memset(packet, 0, sizeof(packet));
30+
31+
ethhdr* eth = (ethhdr*)packet;
32+
33+
eth->h_proto = ntohs(EAPOL_ETHER_TYPE);
34+
35+
size_t len = sizeof(packet);
36+
37+
EXPECT_EQ(filter.execute(packet, len), TrafficFilter::CONTINUE);
38+
39+
eth->h_proto = ntohs(6);
40+
41+
EXPECT_EQ(filter.execute(packet, len), TrafficFilter::TERMINATE);
42+
43+
filter.enable_macsec_device(true);
44+
45+
// fd is ok, stdout
46+
EXPECT_EQ(filter.execute(packet, len), TrafficFilter::TERMINATE);
47+
48+
filter.set_macsec_fd(70); // bad fd
49+
50+
EXPECT_EQ(filter.execute(packet, len), TrafficFilter::ERROR);
51+
}

0 commit comments

Comments
 (0)