This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
stellar-stellar/infra/packet_manager/test/gtest_gre1_utils.cpp

67 lines
2.1 KiB
C++

#include <gtest/gtest.h>
#include "packet_helper.h"
/*
* Generic Routing Encapsulation (PPP)
* Flags and Version: 0x3081
* 0... .... .... .... = Checksum Bit: No
* .0.. .... .... .... = Routing Bit: No
* ..1. .... .... .... = Key Bit: Yes
* ...1 .... .... .... = Sequence Number Bit: Yes
* .... 0... .... .... = Strict Source Route Bit: No
* .... .000 .... .... = Recursion control: 0
* .... .... 1... .... = Acknowledgment: Yes
* .... .... .000 0... = Flags (Reserved): 0
* .... .... .... .001 = Version: Enhanced GRE (1)
* Protocol Type: PPP (0x880b)
* Payload Length: 103
* Call ID: 6016
* Sequence Number: 430001
* Acknowledgment Number: 539254
*/
unsigned char gre1_opt_seq_ack[] = {
0x30, 0x81, 0x88, 0x0b, 0x00, 0x67, 0x17, 0x80, 0x00, 0x06, 0x8f, 0xb1, 0x00, 0x08, 0x3a, 0x76};
TEST(GRE1_UTILS, GET_1)
{
const struct gre1_hdr *hdr = (struct gre1_hdr *)gre1_opt_seq_ack;
EXPECT_TRUE(gre1_hdr_get_flags(hdr) == 0x3081);
EXPECT_TRUE(gre1_hdr_get_seq_flag(hdr) == 1);
EXPECT_TRUE(gre1_hdr_get_ack_flag(hdr) == 1);
EXPECT_TRUE(gre1_hdr_get_version(hdr) == 1);
EXPECT_TRUE(gre1_hdr_get_proto(hdr) == 0x880b);
EXPECT_TRUE(gre1_hdr_get_payload_length(hdr) == 103);
EXPECT_TRUE(gre1_hdr_get_call_id(hdr) == 6016);
EXPECT_TRUE(gre1_hdr_get_seq(hdr) == 430001);
EXPECT_TRUE(gre1_hdr_get_ack(hdr) == 539254);
EXPECT_TRUE(calc_gre1_hdr_len((const char *)gre1_opt_seq_ack, sizeof(gre1_opt_seq_ack)) == 16);
}
TEST(GRE1_UTILS, SET_1)
{
char buff[16] = {0};
struct gre1_hdr *hdr = (struct gre1_hdr *)buff;
gre1_hdr_set_flags(hdr, 0x3081);
gre1_hdr_set_seq_flag(hdr, 1);
gre1_hdr_set_ack_flag(hdr, 1);
gre1_hdr_set_version(hdr, 1);
gre1_hdr_set_proto(hdr, 0x880b);
gre1_hdr_set_payload_length(hdr, 103);
gre1_hdr_set_call_id(hdr, 6016);
gre1_hdr_set_seq(hdr, 430001);
gre1_hdr_set_ack(hdr, 539254);
EXPECT_TRUE(memcmp(buff, gre1_opt_seq_ack, 16) == 0);
}
int main(int argc, char **argv)
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}