diff --git a/include/tins/dot11/dot11_base.h b/include/tins/dot11/dot11_base.h index 0886dc2..a93ec21 100644 --- a/include/tins/dot11/dot11_base.h +++ b/include/tins/dot11/dot11_base.h @@ -279,6 +279,15 @@ public: return header_.control.power_mgmt; } + /** + * \brief Getter for the More Data field. + * + * \return The stored More Data field. + */ + small_uint<1> more_data() const { + return header_.control.more_data; + } + /** * \brief Getter for the WEP field. * @@ -373,6 +382,13 @@ public: */ void power_mgmt(small_uint<1> new_value); + /** + * \brief Setter for the More Data field. + * + * \param new_value The new More Data field value. + */ + void more_data(small_uint<1> new_value); + /** * \brief Setter for the WEP field. * diff --git a/src/dot11/dot11_base.cpp b/src/dot11/dot11_base.cpp index cc89338..cc32444 100644 --- a/src/dot11/dot11_base.cpp +++ b/src/dot11/dot11_base.cpp @@ -164,6 +164,10 @@ void Dot11::power_mgmt(small_uint<1> new_value) { header_.control.power_mgmt = (new_value)? 1 : 0; } +void Dot11::more_data(small_uint<1> new_value) { + header_.control.more_data = (new_value)? 1 : 0; +} + void Dot11::wep(small_uint<1> new_value) { header_.control.wep = (new_value)? 1 : 0; } diff --git a/tests/include/tests/dot11.h b/tests/include/tests/dot11.h index 967b605..a432cf4 100644 --- a/tests/include/tests/dot11.h +++ b/tests/include/tests/dot11.h @@ -16,6 +16,7 @@ inline void test_equals(const Dot11& dot1, const Dot11& dot2) { EXPECT_EQ(dot1.more_frag(), dot2.more_frag()); EXPECT_EQ(dot1.retry(), dot2.retry()); EXPECT_EQ(dot1.power_mgmt(), dot2.power_mgmt()); + EXPECT_EQ(dot1.more_data(), dot2.more_data()); EXPECT_EQ(dot1.wep(), dot2.wep()); EXPECT_EQ(dot1.order(), dot2.order()); EXPECT_EQ(dot1.duration_id(), dot2.duration_id()); @@ -31,6 +32,7 @@ inline void test_equals_empty(const Dot11& dot11) { EXPECT_EQ(dot11.more_frag(), 0); EXPECT_EQ(dot11.retry(), 0); EXPECT_EQ(dot11.power_mgmt(), 0); + EXPECT_EQ(dot11.more_data(), 0); EXPECT_EQ(dot11.wep(), 0); EXPECT_EQ(dot11.order(), 0); EXPECT_EQ(dot11.duration_id(), 0); diff --git a/tests/include/tests/dot11_mgmt.h b/tests/include/tests/dot11_mgmt.h index e4f9bac..48d763f 100644 --- a/tests/include/tests/dot11_mgmt.h +++ b/tests/include/tests/dot11_mgmt.h @@ -26,6 +26,7 @@ inline void test_equals_expected(const Dot11ManagementFrame& dot11) { EXPECT_EQ(dot11.more_frag(), 0); EXPECT_EQ(dot11.retry(), 0); EXPECT_EQ(dot11.power_mgmt(), 0); + EXPECT_EQ(dot11.more_data(), 0); EXPECT_EQ(dot11.wep(), 0); EXPECT_EQ(dot11.order(), 0); EXPECT_EQ(dot11.duration_id(), 0x234f); diff --git a/tests/src/dot11/ack_test.cpp b/tests/src/dot11/ack_test.cpp index fb8f14c..704ac81 100644 --- a/tests/src/dot11/ack_test.cpp +++ b/tests/src/dot11/ack_test.cpp @@ -38,6 +38,7 @@ void test_equals_expected(const Dot11Ack& dot11) { EXPECT_EQ(dot11.more_frag(), 0); EXPECT_EQ(dot11.retry(), 0); EXPECT_EQ(dot11.power_mgmt(), 0); + EXPECT_EQ(dot11.more_data(), 0); EXPECT_EQ(dot11.wep(), 0); EXPECT_EQ(dot11.order(), 0); EXPECT_EQ(dot11.duration_id(), 0x234f); @@ -56,6 +57,7 @@ TEST_F(Dot11AckTest, Constructor) { EXPECT_EQ(dot11.more_frag(), 0); EXPECT_EQ(dot11.retry(), 0); EXPECT_EQ(dot11.power_mgmt(), 0); + EXPECT_EQ(dot11.more_data(), 0); EXPECT_EQ(dot11.wep(), 0); EXPECT_EQ(dot11.order(), 0); EXPECT_EQ(dot11.duration_id(), 0); diff --git a/tests/src/dot11/dot11_test.cpp b/tests/src/dot11/dot11_test.cpp index 27d7ce5..6af80d0 100644 --- a/tests/src/dot11/dot11_test.cpp +++ b/tests/src/dot11/dot11_test.cpp @@ -34,6 +34,7 @@ TEST_F(Dot11Test, DefaultConstructor) { EXPECT_EQ(dot11.more_frag(), 0); EXPECT_EQ(dot11.retry(), 0); EXPECT_EQ(dot11.power_mgmt(), 0); + EXPECT_EQ(dot11.more_data(), 0); EXPECT_EQ(dot11.wep(), 0); EXPECT_EQ(dot11.order(), 0); EXPECT_EQ(dot11.duration_id(), 0); @@ -64,6 +65,7 @@ TEST_F(Dot11Test, ConstructorFromBuffer) { EXPECT_EQ(dot11.more_frag(), 0); EXPECT_EQ(dot11.retry(), 0); EXPECT_EQ(dot11.power_mgmt(), 0); + EXPECT_EQ(dot11.more_data(), 0); EXPECT_EQ(dot11.wep(), 0); EXPECT_EQ(dot11.order(), 0); EXPECT_EQ(dot11.duration_id(), 0x234f); @@ -123,6 +125,12 @@ TEST_F(Dot11Test, PowerMGMT) { EXPECT_EQ(dot11.power_mgmt(), 1); } +TEST_F(Dot11Test, MoreData) { + Dot11 dot11; + dot11.more_data(1); + EXPECT_EQ(dot11.more_data(), 1); +} + TEST_F(Dot11Test, WEP) { Dot11 dot11; dot11.wep(1);