summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThierry Carré2012-02-29 17:39:53 +0100
committerThierry Carré2012-03-02 13:47:13 +0100
commit95bdb230254a812628bb5bd632b99e52958eb041 (patch)
tree46b904545e7b4fec90664c3c9b59d3bc331d1e84
parentbc63913675c2f160e6ae5ac6a798e22e69b84806 (diff)
parentd0f44610b945e92106f53eb03764f852a77ea737 (diff)
Merge branch 't2900_t2894_av' into eoc
-rw-r--r--cesar/common/defs/Config1
-rw-r--r--cesar/common/defs/Module0
-rw-r--r--cesar/common/defs/ethernet.h75
-rw-r--r--cesar/common/defs/homeplugAV.h63
-rw-r--r--cesar/common/make/setup.mk1
-rw-r--r--cesar/cp/cco/action/test/src/action-test.c106
-rw-r--r--cesar/cp/cco/action/test/utest/src/msg_stub.c3
-rw-r--r--cesar/cp/cl_interf/test/src/test-cl-interf.c32
-rw-r--r--cesar/cp/eoc/cco/action/test/scenario/src/msg_stub.c3
-rw-r--r--cesar/cp/eoc/cco/action/test/utest/src/msg_stub.c7
-rw-r--r--cesar/cp/eoc/cco/action/test/utest/src/test_actions.c32
-rw-r--r--cesar/cp/eoc/cco/action/test/utest_eoc/src/test_actions.c23
-rw-r--r--cesar/cp/eoc/multi_sta/action/test/utest/src/test_actions.c29
-rw-r--r--cesar/cp/eoc/sta/action/src/assoc.c3
-rw-r--r--cesar/cp/eoc/sta/action/src/drv.c7
-rw-r--r--cesar/cp/eoc/sta/action/test/utest/src/msg_stub.c7
-rw-r--r--cesar/cp/eoc/sta/action/test/utest/src/test_actions.c12
-rw-r--r--cesar/cp/mme.h12
-rw-r--r--cesar/cp/msg/inc/cc_relay.h25
-rw-r--r--cesar/cp/msg/inc/cm_encrypted_payload.h42
-rw-r--r--cesar/cp/msg/inc/msg_cc.h1
-rw-r--r--cesar/cp/msg/inc/msg_cm.h1
-rw-r--r--cesar/cp/msg/inc/msg_drv.h4
-rw-r--r--cesar/cp/msg/msg.h4
-rw-r--r--cesar/cp/msg/src/msg.c245
-rw-r--r--cesar/cp/msg/src/msg_cc.c57
-rw-r--r--cesar/cp/msg/src/msg_cm.c7
-rw-r--r--cesar/cp/msg/src/msg_drv.c16
-rw-r--r--cesar/cp/msg/stub/src/msg_drv.c4
-rw-r--r--cesar/cp/msg/test/src/cc_discover_list.c66
-rw-r--r--cesar/cp/msg/test/src/mme_frag.c32
-rw-r--r--cesar/cp/msg/test/src/msg_cc.c37
-rw-r--r--cesar/cp/msg/test/src/msg_cm.c359
-rw-r--r--cesar/cp/msg/test/src/msg_drv.c4
-rw-r--r--cesar/cp/msg/test/src/msg_vs.c139
-rw-r--r--cesar/cp/msg/test/src/relay.c125
-rw-r--r--cesar/cp/msg/test/src/test-msg-read-header.c41
-rw-r--r--cesar/cp/msg/test_eoc/src/msg_cc_eoc.c3
-rw-r--r--cesar/cp/msg/test_eoc/src/msg_vs_eoc.c16
-rw-r--r--cesar/cp/secu/defs.h9
-rw-r--r--cesar/cp/sta/action/src/drv.c2
-rw-r--r--cesar/cp/sta/action/test/utest/src/misc.c6
-rw-r--r--cesar/cp/sta/action/test/utest/src/msg_stub.c3
-rw-r--r--cesar/cp/test/mme/src/test_mme.c11
-rw-r--r--cesar/interface/fcall/src/interface_fcall.c2
-rw-r--r--cesar/interface/sniffer/src/sniffer.c44
-rw-r--r--cesar/interface/sniffer/test/src/test-sniffer.c22
-rw-r--r--cesar/interface/src/interface.c20
-rw-r--r--cesar/interface/test/src/test-interface.c8
-rw-r--r--cesar/lib/src/stats.c4
-rw-r--r--cesar/mac/sar/test/functional/Makefile.mk6
-rw-r--r--cesar/mac/sar/test/functional/src/sar_rx_perf_huge_mpdu_max_eth.c (renamed from cesar/mac/sar/test/functional/src/sar_rx_perf_huge_mpdu_1518.c)0
-rw-r--r--cesar/mac/sar/test/functional/src/sar_rx_tx.c2
-rw-r--r--cesar/mac/sar/test/functional/src/sar_tx_rx.c2
-rw-r--r--cesar/mac/sar/test/functional/src/test_functions.c8
-rw-r--r--cesar/mac/sar/test/unit_test/ecos/src/misc.c4
-rw-r--r--cesar/mac/sar/test/unit_test/ecos/src/reassembly.c6
-rw-r--r--cesar/mac/sar/test/unit_test/ecos/src/sar_pb_stats.c80
-rw-r--r--cesar/mac/sar/test/unit_test/ecos/src/tests.c8
-rw-r--r--cesar/maximus/stationtest/src/test_ether.c8
-rw-r--r--cesar/maximus/stationtest/src/test_lib_cesar.c10
-rw-r--r--cesar/maximus/stationtest/src/test_station.c10
-rw-r--r--cesar/projects/eoc/master-Config1
-rw-r--r--cesar/projects/eoc/slave-Config1
-rw-r--r--cesar/tools/sniffer_phy/src/mme.c4
-rw-r--r--common/tests/tests2
66 files changed, 1195 insertions, 732 deletions
diff --git a/cesar/common/defs/Config b/cesar/common/defs/Config
new file mode 100644
index 0000000000..c4903af902
--- /dev/null
+++ b/cesar/common/defs/Config
@@ -0,0 +1 @@
+CONFIG_COMMON_DEFS_TWICEVLAN = n
diff --git a/cesar/common/defs/Module b/cesar/common/defs/Module
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/cesar/common/defs/Module
diff --git a/cesar/common/defs/ethernet.h b/cesar/common/defs/ethernet.h
index 333f7cc547..add0aa159a 100644
--- a/cesar/common/defs/ethernet.h
+++ b/cesar/common/defs/ethernet.h
@@ -13,21 +13,82 @@
* \ingroup common_defs
*
* Based on the norme 802.3
+ * Information: chapter 12.3.2.1.1 in homeplugav specification.
*/
+#include "config/common/defs.h"
/** Ethernet Mac Address size. */
#define ETH_MAC_ADDRESS_SIZE 6
-/** Ethernet packet minimum size. */
-#define ETH_PACKET_MIN_SIZE 60
+/** Define the Ethernet type for one VLAN, in little endian */
+#define ETH_TYPE_VLAN 0x0081
-/** Ethernet packet maximum size. */
-#define ETH_PACKET_MAX_SIZE 1522
+/** Define the MTYPE size. */
+#define ETH_TYPE_SIZE 2
/** Ethernet VLAN Tag complete size. */
-#define ETH_VLAN_TAG_SIZE 4
+#define ETH_VLANTAG_SIZE 4
-/** Ethernet Minimum size allowed. */
-#define ETH_PACKET_MIN_SIZE_ALLOWED 14
+/** Vlan size returned depend of the eth_type.
+ * eth_type must be in little endian (no swap16 so).
+ * Twice vlan is not added, because the plc driver don't managed it. */
+#define ETH_GET_VLANTAG_SIZE(a) ( \
+ (a) == (ETH_TYPE_VLAN) ? ETH_VLANTAG_SIZE : 0 )
+
+/** Macro which return true, if a simple vlan is detected. */
+#define ETH_IS_VLANTAG(a) \
+ ((a) == (ETH_TYPE_VLAN) ? true : false)
+
+/** Ethernet packet minimum payload size. */
+#define ETH_PACKET_MIN_PAYLOAD_SIZE 46
+
+/** Ethernet packet maximum payload size. */
+#define ETH_PACKET_MAX_PAYLOAD_SIZE 1500
+
+/** Define the ethernet type offset (=12). */
+#define ETH_TYPE_OFFSET ((ETH_MAC_ADDRESS_SIZE)*2)
+
+/** Ethernet minimum size allowed (=14). */
+#define ETH_PACKET_MIN_SIZE_ALLOWED (ETH_TYPE_OFFSET + ETH_TYPE_SIZE)
+
+/** Ethernet packet minimum size without vlan (=60). */
+#define ETH_PACKET_MIN_NOVLAN_SIZE (ETH_PACKET_MIN_SIZE_ALLOWED \
+ + ETH_PACKET_MIN_PAYLOAD_SIZE)
+
+/** Ethernet packet minimum size with one vlan (=64). */
+#define ETH_PACKET_MIN_VLAN_SIZE (ETH_PACKET_MIN_NOVLAN_SIZE \
+ + ETH_VLANTAG_SIZE)
+
+/** Ethernet packet minimum size with twice vlan (=68). */
+#define ETH_PACKET_MIN_TWICE_VLAN_SIZE (ETH_PACKET_MIN_NOVLAN_SIZE \
+ + 2*(ETH_VLANTAG_SIZE))
+
+/** Ethernet packet minimum of minimum size. */
+#define ETH_PACKET_MIN_SIZE (ETH_PACKET_MIN_NOVLAN_SIZE)
+
+
+/** Ethernet packet maximum size without vlan (=1514). */
+#define ETH_PACKET_MAX_NOVLAN_SIZE (ETH_PACKET_MIN_SIZE_ALLOWED \
+ + ETH_PACKET_MAX_PAYLOAD_SIZE)
+
+/** Ethernet packet maximum size with one vlan (=1518). */
+#define ETH_PACKET_MAX_VLAN_SIZE (ETH_PACKET_MAX_NOVLAN_SIZE \
+ + ETH_VLANTAG_SIZE)
+
+/** Ethernet packet maximum size with twice vlan (=1522). */
+#define ETH_PACKET_MAX_TWICE_VLAN_SIZE (ETH_PACKET_MAX_NOVLAN_SIZE \
+ + 2*(ETH_VLANTAG_SIZE))
+
+/** Ethernet packet maximum size. Useful for buffer. */
+#define ETH_PACKET_MAX_SIZE (CONFIG_COMMON_DEFS_TWICEVLAN ? \
+ ETH_PACKET_MAX_TWICE_VLAN_SIZE : ETH_PACKET_MAX_VLAN_SIZE)
+
+/** Return ethernet packet min size. */
+#define ETH_PACKET_GET_MIN_SIZE(eth_type) \
+ (ETH_PACKET_MIN_NOVLAN_SIZE + ETH_GET_VLANTAG_SIZE(eth_type))
+
+/** Return ethernet packet max size. */
+#define ETH_PACKET_GET_MAX_SIZE(eth_type) \
+ (ETH_PACKET_MAX_NOVLAN_SIZE + ETH_GET_VLANTAG_SIZE(eth_type))
#endif /* common_defs_ethernet_h */
diff --git a/cesar/common/defs/homeplugAV.h b/cesar/common/defs/homeplugAV.h
index cb903856fb..72956dfd6d 100644
--- a/cesar/common/defs/homeplugAV.h
+++ b/cesar/common/defs/homeplugAV.h
@@ -16,48 +16,59 @@
*/
#include "common/defs/ethernet.h"
-/** Define the MTYPE for MME. */
-#define HPAV_MTYPE_MME 0x88E1
-/** Define the MTYPE size. */
-#define HPAV_MTYPE_SIZE 2
-/** Define the mtype offset where it is if the vlan is not present. */
-#define HPAV_MTYPE_OFFSET 12
-/** The vlan tag size in bytes. */
-#define HPAV_VLANTAG_SIZE 4
-/** Define the offset of the MMTYPE when the vlan is not present. */
-#define HPAV_MMTYPE_OFFSET 15
+/** Define the MTYPE for MME, in little endian.*/
+#define HPAV_MTYPE_MME 0xE188
+
+/** Define the MTYPE size for MME.
+ * Chapter 11.1.4 in homeplugav specification. */
+#define HPAV_MTYPE_SIZE (ETH_TYPE_SIZE)
+
+/** Define MMV Size. */
+#define HPAV_MMV_SIZE 1
+
+/** Define MMTYPE size. */
+#define HPAV_MMTYPE_SIZE 2
+
+/** Define FMI Size. */
+#define HPAV_FMI_SIZE 2
+
+/** Define the MTYPE offset for MME. */
+#define HPAV_GET_MTYPE_OFFSET(eth_type) \
+ (ETH_TYPE_OFFSET + ETH_GET_VLANTAG_SIZE(eth_type))
+
+/** Define the offset of the MMTYPE. */
+#define HPAV_GET_MMTYPE_OFFSET(eth_type) \
+ (ETH_PACKET_MIN_SIZE_ALLOWED + HPAV_MMV_SIZE + \
+ ETH_GET_VLANTAG_SIZE(eth_type))
/** Define the amount max of fragmented message. value coded on 4 bits */
#define HPAV_MME_FRAG_MAX 16
-/** Max payload size in bytes without vlan (= 1499). */
-#define HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN \
- (ETH_PACKET_MAX_SIZE - HPAV_MME_HEADER)
-
/** MMV version for the MME HomePlug 1.0 see section 11.1.5 */
#define HPAV_MMV0 0x0
/** MMV version for the MME HomePlug 1.1 see section 11.1.5 */
#define HPAV_MMV1 0x1
/** MMV version max for MME HomePlug. */
#define HPAV_MMV_MAX HPAV_MMV1
-
/** Define the MMV default type for HPAV. */
#define HPAV_MMV HPAV_MMV1
-/** Define MMV Size. */
-#define HPAV_MMV_SIZE 1
-
-/** Define length of the MME HEADER with Vlan tag. */
-#define HPAV_MME_HEADER_LEN_WITH_VLAN 23
+/** Define length of the MME HEADER without Vlan tag (=19). */
+#define HPAV_MME_HEADER (ETH_PACKET_MIN_SIZE_ALLOWED \
+ + HPAV_MMV_SIZE \
+ + HPAV_MMTYPE_SIZE \
+ + HPAV_FMI_SIZE )
-/** Define length of the MME HEADER without Vlan tag. */
-#define HPAV_MME_HEADER 19
+/** Max MME payload size in bytes, with or without vlan (= 1495). */
+#define HPAV_MME_PAYLOAD_MAX_SIZE (ETH_PACKET_MAX_NOVLAN_SIZE \
+ - HPAV_MME_HEADER)
-/** Define MMTYPE size. */
-#define HPAV_MMTYPE_SIZE 2
+/** Return TRUE if the mmtype is a Vendor Specific (VS). */
+#define HPAV_MMTYPE_IS_VS(mmtype) \
+ ((mmtype) >= VS_MIN && (mmtype) <= VS_MAX)
-/** Define FMI Size. */
-#define HPAV_FMI_SIZE 2
+/** Max VS MME payload size in bytes, with or without vlan (= 1492). */
+#define HPAV_VS_MME_PAYLOAD_MAX (HPAV_MME_PAYLOAD_MAX_SIZE - OUI_SIZE)
/** CRC Data. */
#define HPAV_CRC32_GENERATOR 0x04c11db7
diff --git a/cesar/common/make/setup.mk b/cesar/common/make/setup.mk
index a541f5ba0c..165290710d 100644
--- a/cesar/common/make/setup.mk
+++ b/cesar/common/make/setup.mk
@@ -46,6 +46,7 @@ ALL_PROGRAMS := $(call gather_type,PROGRAMS)
define MODULES_template
$2_MODULES := $$(sort $$(foreach program,$$($2_PROGRAMS),$$($$(program)_MODULES)))
$2_CONFIG_MODULES := $$(sort $$(foreach program,$$($2_PROGRAMS),$$($$(program)_CONFIG_MODULES)))
+$2_CONFIG_MODULES += common/defs
$2_MODULES_CONFIG :=
endef
$(call foreach_type,MODULES_template)
diff --git a/cesar/cp/cco/action/test/src/action-test.c b/cesar/cp/cco/action/test/src/action-test.c
index 8f46dde156..86b856b6dc 100644
--- a/cesar/cp/cco/action/test/src/action-test.c
+++ b/cesar/cp/cco/action/test/src/action-test.c
@@ -417,11 +417,13 @@ test_case_sta_assoc_procedure (test_t test)
// Construct the MME to associate the first station.
mme_rx.peer.mac = 2;
- mme_rx.peer.vlan_tag = 0;
+ mme_rx.peer.eth_type = HPAV_MTYPE_MME;
+ mme_rx.peer.vlan_tci = 0;
mme_rx.peer.tei = 0;
// Write the request.
- bitstream_init (&bitstream, buffer + 19, 10, BITSTREAM_WRITE);
+ bitstream_init (&bitstream, buffer + HPAV_MME_HEADER, 10,
+ BITSTREAM_WRITE);
bitstream_access (&bitstream, &req_type, 8);
bitstream_access (&bitstream, &nid, 56);
bitstream_access (&bitstream, &cco_cap, 8);
@@ -431,7 +433,8 @@ test_case_sta_assoc_procedure (test_t test)
// Initialise the MME Rx object.
mme_rx.p_mme = buffer;
mme_rx.length = 60;
- bitstream_init (&mme_rx.bitstream, buffer + 19, 60, BITSTREAM_READ);
+ bitstream_init (&mme_rx.bitstream, buffer + HPAV_MME_HEADER,
+ mme_rx.length, BITSTREAM_READ);
sta_tei = 0;
cp_cco_action_cco__cc_assoc_req (&cp, &mme_rx);
@@ -459,11 +462,13 @@ test_case_sta_assoc_procedure (test_t test)
// Second station to add.
// Construct the MME to associate the second station.
mme_rx.peer.mac = 3;
- mme_rx.peer.vlan_tag = 0;
+ mme_rx.peer.eth_type = HPAV_MTYPE_MME;
+ mme_rx.peer.vlan_tci = 0;
mme_rx.peer.tei = 0;
// Write the request.
- bitstream_init (&bitstream, buffer + 19, 10, BITSTREAM_WRITE);
+ bitstream_init (&bitstream, buffer + HPAV_MME_HEADER, 10,
+ BITSTREAM_WRITE);
bitstream_access (&bitstream, &req_type, 8);
bitstream_access (&bitstream, &nid, 56);
bitstream_access (&bitstream, &cco_cap, 8);
@@ -473,7 +478,8 @@ test_case_sta_assoc_procedure (test_t test)
// Initialise the MME Rx object.
mme_rx.p_mme = buffer;
mme_rx.length = 60;
- bitstream_init (&mme_rx.bitstream, buffer + 19, 60, BITSTREAM_READ);
+ bitstream_init (&mme_rx.bitstream, buffer + HPAV_MME_HEADER,
+ mme_rx.length, BITSTREAM_READ);
sta_tei = 0;
cp_cco_action_cco__cc_assoc_req (&cp, &mme_rx);
@@ -495,11 +501,13 @@ test_case_sta_assoc_procedure (test_t test)
/* Configure the MME received. */
mme_rx.peer.mac = 0x42;
- mme_rx.peer.vlan_tag = 0;
+ mme_rx.peer.eth_type = HPAV_MTYPE_MME;
+ mme_rx.peer.vlan_tci = 0;
mme_rx.peer.tei = 1;
/* Write the CC_ASSOC.REQ request. */
- bitstream_init (&bitstream, buffer + 19, 10, BITSTREAM_WRITE);
+ bitstream_init (&bitstream, buffer + HPAV_MME_HEADER, 10,
+ BITSTREAM_WRITE);
bitstream_access (&bitstream, &req_type, 8);
bitstream_access (&bitstream, &nid, 56);
bitstream_access (&bitstream, &cco_cap, 8);
@@ -509,7 +517,8 @@ test_case_sta_assoc_procedure (test_t test)
/* Initialise the MME Rx. */
mme_rx.p_mme = buffer;
mme_rx.length = 60;
- bitstream_init (&mme_rx.bitstream, buffer + 19, 60, BITSTREAM_READ);
+ bitstream_init (&mme_rx.bitstream, buffer + HPAV_MME_HEADER,
+ mme_rx.length, BITSTREAM_READ);
/* Reset stub. */
sta_tei = 0;
@@ -541,8 +550,8 @@ test_case_sta_assoc_procedure (test_t test)
test_begin (test, "No more TEI available")
{
- // The next station can not be associated because the TEIs are already in
- // use.
+ /* The next station can not be associated because the TEIs are
+ * already in use. */
cp.cco_action.tei_flags[0] = 0xFFFFFFFF;
cp.cco_action.tei_flags[1] = 0xFFFFFFFF;
cp.cco_action.tei_flags[2] = 0xFFFFFFFF;
@@ -555,11 +564,13 @@ test_case_sta_assoc_procedure (test_t test)
// third station to add.
// Construct the MME to associate the third station.
mme_rx.peer.mac = 4;
- mme_rx.peer.vlan_tag = 0;
+ mme_rx.peer.eth_type = HPAV_MTYPE_MME;
+ mme_rx.peer.vlan_tci = 0;
mme_rx.peer.tei = 0;
// Write the request.
- bitstream_init (&bitstream, buffer + 19, 10, BITSTREAM_WRITE);
+ bitstream_init (&bitstream, buffer + HPAV_MME_HEADER, 10,
+ BITSTREAM_WRITE);
bitstream_access (&bitstream, &req_type, 8);
bitstream_access (&bitstream, &nid, 56);
bitstream_access (&bitstream, &cco_cap, 8);
@@ -569,7 +580,8 @@ test_case_sta_assoc_procedure (test_t test)
// Initialise the MME Rx object.
mme_rx.p_mme = buffer;
mme_rx.length = 60;
- bitstream_init (&mme_rx.bitstream, buffer + 19, 60, BITSTREAM_READ);
+ bitstream_init (&mme_rx.bitstream, buffer + HPAV_MME_HEADER,
+ mme_rx.length, BITSTREAM_READ);
sta_tei = 0;
cp_cco_action_cco__cc_assoc_req (&cp, &mme_rx);
@@ -589,12 +601,14 @@ test_case_sta_assoc_procedure (test_t test)
{
// Renew the lease.
mme_rx.peer.mac = 2;
- mme_rx.peer.vlan_tag = 0;
+ mme_rx.peer.eth_type = HPAV_MTYPE_MME;
+ mme_rx.peer.vlan_tci = 0;
mme_rx.peer.tei = 2;
// Write the request.
req_type = CP_MSG_CC_ASSOC_REQ_TYPE_RENEW;
- bitstream_init (&bitstream, buffer + 19, 10, BITSTREAM_WRITE);
+ bitstream_init (&bitstream, buffer + HPAV_MME_HEADER, 10,
+ BITSTREAM_WRITE);
bitstream_access (&bitstream, &req_type, 8);
bitstream_access (&bitstream, &nid, 56);
bitstream_access (&bitstream, &cco_cap, 8);
@@ -604,7 +618,8 @@ test_case_sta_assoc_procedure (test_t test)
// Initialise the MME Rx object.
mme_rx.p_mme = buffer;
mme_rx.length = 60;
- bitstream_init (&mme_rx.bitstream, buffer + 19, 60, BITSTREAM_READ);
+ bitstream_init (&mme_rx.bitstream, buffer + HPAV_MME_HEADER,
+ mme_rx.length, BITSTREAM_READ);
net = cp_sta_mgr_get_our_avln (&cp);
sta = cp_sta_mgr_sta_get_assoc (&cp, net, 2);
@@ -623,7 +638,8 @@ test_case_sta_assoc_procedure (test_t test)
/* Station does not exists. */
mme_rx.p_mme = buffer;
mme_rx.length = 60;
- bitstream_init (&mme_rx.bitstream, buffer + 19, 60, BITSTREAM_READ);
+ bitstream_init (&mme_rx.bitstream, buffer + HPAV_MME_HEADER,
+ mme_rx.length, BITSTREAM_READ);
cp_cco_action_cco__cc_assoc_req (&cp, &mme_rx);
@@ -653,12 +669,14 @@ test_case_sta_assoc_procedure (test_t test)
slab_release (sta);
// Construct the MME to associate the first station.
mme_rx.peer.mac = 2;
- mme_rx.peer.vlan_tag = 0;
+ mme_rx.peer.eth_type = HPAV_MTYPE_MME;
+ mme_rx.peer.vlan_tci = 0;
mme_rx.peer.tei = 0;
req_type = CP_MSG_CC_ASSOC_REQ_TYPE_NEW;
// Write the request.
- bitstream_init (&bitstream, buffer + 19, 10, BITSTREAM_WRITE);
+ bitstream_init (&bitstream, buffer + HPAV_MME_HEADER, 10,
+ BITSTREAM_WRITE);
bitstream_access (&bitstream, &req_type, 8);
bitstream_access (&bitstream, &nid, 56);
bitstream_access (&bitstream, &cco_cap, 8);
@@ -668,7 +686,8 @@ test_case_sta_assoc_procedure (test_t test)
// Initialise the MME Rx object.
mme_rx.p_mme = buffer;
mme_rx.length = 60;
- bitstream_init (&mme_rx.bitstream, buffer + 19, 60, BITSTREAM_READ);
+ bitstream_init (&mme_rx.bitstream, buffer + HPAV_MME_HEADER,
+ mme_rx.length, BITSTREAM_READ);
cp_sta_mgr_set_our_avln (&cp, net);
cp_sta_own_data_set_tei (&cp, 244);
@@ -712,13 +731,15 @@ test_case_sta_assoc_procedure_ucco_to_cco (test_t test)
{
// Construct the MME to associate the first station.
mme_rx.peer.mac = 2;
- mme_rx.peer.vlan_tag = 0;
+ mme_rx.peer.eth_type = HPAV_MTYPE_MME;
+ mme_rx.peer.vlan_tci = 0;
mme_rx.peer.tei = 0;
req_type = CP_MSG_CC_ASSOC_REQ_TYPE_NEW;
// Write the request.
- bitstream_init (&bitstream, buffer + 19, 10, BITSTREAM_WRITE);
+ bitstream_init (&bitstream, buffer + HPAV_MME_HEADER, 10,
+ BITSTREAM_WRITE);
bitstream_access (&bitstream, &req_type, 8);
bitstream_access (&bitstream, &nid, 56);
bitstream_access (&bitstream, &cco_cap, 8);
@@ -728,7 +749,8 @@ test_case_sta_assoc_procedure_ucco_to_cco (test_t test)
// Initialise the MME Rx object.
mme_rx.p_mme = buffer;
mme_rx.length = 60;
- bitstream_init (&mme_rx.bitstream, buffer + 19, 60, BITSTREAM_READ);
+ bitstream_init (&mme_rx.bitstream, buffer + HPAV_MME_HEADER,
+ mme_rx.length, BITSTREAM_READ);
fsm_event_posted = false;
cp_cco_action_ucco__cc_assoc_req (&cp, &mme_rx);
@@ -783,7 +805,6 @@ test_case_sta_authentication (test_t test)
cp_t cp;
lib_rnd_init (&cp.rnd, 1234);
cp_net_t *net;
- mfs_rx_t mfs;
bitstream_t bitstream;
cp_mme_rx_t mme;
u64 data;
@@ -813,8 +834,8 @@ test_case_sta_authentication (test_t test)
// OSA.
data = 0x1;
bitstream_access (&bitstream, &data, 48);
- // Mtype
- data = swap16 (HPAV_MTYPE_MME);
+ /* Ethernet type */
+ data = HPAV_MTYPE_MME;
bitstream_access (&bitstream, &data, 16);
// MMV.
data = HPAV_MMV1;
@@ -848,7 +869,6 @@ test_case_sta_authentication (test_t test)
mme.length = 37;
mme.p_mme = buffer;
mme.peer.tei = 0x2;
- mfs.common.tei = 0x1;
cp_secu_protocol_run_new (&mme.prun, 0, &cp.rnd);
cp_cco_action_cco__cm_get_key_req_pid0 (&cp, &mme);
@@ -915,6 +935,8 @@ test_case_sta_cc_leave (test_t test)
msg.peer.tei = 1;
msg.peer.mac = 1;
+ msg.peer.eth_type = HPAV_MTYPE_MME;
+ msg.peer.vlan_tci = 0;
msg.mmtype = CC_LEAVE_REQ;
cp_cco_action_cco__cc_leave_req (&cp, &msg);
@@ -952,6 +974,8 @@ test_case_sta_cc_leave (test_t test)
msg.peer.tei = 1;
msg.peer.mac = 1;
+ msg.peer.eth_type = HPAV_MTYPE_MME;
+ msg.peer.vlan_tci = 0;
msg.mmtype = CC_LEAVE_REQ;
cp_cco_action_cco__cc_leave_req (&cp, &msg);
@@ -992,6 +1016,8 @@ test_case_sta_release_tei (test_t test)
msg.peer.tei = sta_tei;
msg.peer.mac = 1;
+ msg.peer.eth_type = HPAV_MTYPE_MME;
+ msg.peer.vlan_tci = 0;
msg.mmtype = CC_LEAVE_REQ;
cp_cco_action_cco__cc_leave_req (&cp, &msg);
@@ -1240,7 +1266,6 @@ cp_msg_cm_get_key_req_receive (cp_t *ctx, cp_mme_rx_t *mme,
cp_msg_cm_get_key_req_t *data)
{
uint offset;
- bool vlantag_present;
u64 unused;
dbg_assert (ctx);
dbg_assert (mme);
@@ -1248,18 +1273,20 @@ cp_msg_cm_get_key_req_receive (cp_t *ctx, cp_mme_rx_t *mme,
dbg_assert (mme->length < ETH_PACKET_MAX_SIZE);
dbg_assert (data);
- if (bitstream_direct_read (mme->p_mme + 12, 0, 16) == swap16(HPAV_MTYPE_MME))
- vlantag_present = false;
- else
- vlantag_present = true;
-
// Read the MME.
bitstream_init (&mme->bitstream, mme->p_mme, mme->length, BITSTREAM_READ);
bitstream_access (&mme->bitstream, &mme->peer.mac, 48);
bitstream_access (&mme->bitstream, &unused, 48);
- if (vlantag_present)
- bitstream_access (&mme->bitstream, &mme->peer.vlan_tag, 32);
- bitstream_access (&mme->bitstream, &unused, 16);
+ bitstream_access (&mme->bitstream, &mme->peer.eth_type, 16);
+
+ if (ETH_IS_VLANTAG (mme->peer.eth_type))
+ {
+ bitstream_access (&mme->bitstream, &mme->peer.vlan_tci, 16);
+ bitstream_access (&mme->bitstream, &unused, 16);
+ }
+ else
+ mme->peer.vlan_tci = 0;
+
bitstream_access (&mme->bitstream, &unused, 8);
bitstream_access (&mme->bitstream, &unused, 16);
bitstream_access (&mme->bitstream, &unused, 16);
@@ -1269,10 +1296,7 @@ cp_msg_cm_get_key_req_receive (cp_t *ctx, cp_mme_rx_t *mme,
bitstream_access (&mme->bitstream, &data->key_type, 8);
bitstream_access (&mme->bitstream, &data->nid, 56);
- if (vlantag_present)
- offset = 41;
- else
- offset = 37;
+ offset = 37 + ETH_GET_VLANTAG_SIZE (mme->peer.eth_type);
memcpy (mme->p_mme + offset, &data->hash_key, mme->length - offset);
return true;
diff --git a/cesar/cp/cco/action/test/utest/src/msg_stub.c b/cesar/cp/cco/action/test/utest/src/msg_stub.c
index 870c8c4c71..b6e593005c 100644
--- a/cesar/cp/cco/action/test/utest/src/msg_stub.c
+++ b/cesar/cp/cco/action/test/utest/src/msg_stub.c
@@ -75,7 +75,8 @@ EVENT (cp_t *ctx, cp_mme_tx_t *mme \
test_fail_unless (strcmp (PARAM, param->PARAM) == 0);
#define __ms_test_peer \
test_fail_unless (peer->mac == param->peer.mac); \
- test_fail_unless (peer->vlan_tag == param->peer.vlan_tag); \
+ test_fail_unless (peer->eth_type == param->peer.eth_type); \
+ test_fail_unless (peer->vlan_tci == param->peer.vlan_tci); \
test_fail_unless (peer->tei == param->peer.tei); \
/* Code for MME transmission with a data structure. */
diff --git a/cesar/cp/cl_interf/test/src/test-cl-interf.c b/cesar/cp/cl_interf/test/src/test-cl-interf.c
index 46c6a39274..8f820da587 100644
--- a/cesar/cp/cl_interf/test/src/test-cl-interf.c
+++ b/cesar/cp/cl_interf/test/src/test-cl-interf.c
@@ -86,7 +86,7 @@ test_case_cl_intef_process_mme_create_mme (cp_t *cp, cp_sta_t *sta,
bitstream_write_large (&stream, cp_sta_own_data_get_mac_address (cp),
48);
bitstream_write_large (&stream, cp_sta_get_mac_address (sta), 48);
- bitstream_write (&stream, swap16(HPAV_MTYPE_MME), 16);
+ bitstream_write (&stream, HPAV_MTYPE_MME, 16);
bitstream_write (&stream, 1, 8);
bitstream_write (&stream, 0x3245, 16);
bitstream_write (&stream, fmi_nb_frags, 4);
@@ -243,7 +243,7 @@ test_case_cl_interf_mme_rx_update_sta_expired_date_run (
bitstream_write_init (&stream, buffer, 23);
bitstream_write_large (&stream, mymac, 48);
bitstream_write_large (&stream, itsmac, 48);
- bitstream_write (&stream, swap16(HPAV_MTYPE_MME), 16);
+ bitstream_write (&stream, HPAV_MTYPE_MME, 16);
bitstream_write (&stream, 1, 8);
bitstream_write (&stream, 0x3245, 16);
bitstream_write (&stream, 0, 4);
@@ -412,36 +412,40 @@ cp_msg_mme_read_header (cp_t *ctx, u8 *mme, uint length, cp_tei_t tei,
uint *fmi)
{
cp_mme_rx_t *mme_rx;
- bool vlantag_present;
uint mtype;
uint mmv;
dbg_assert (ctx);
dbg_assert (mme);
- if (bitstream_direct_read (mme, 12 * 8, 16) == swap16 (HPAV_MTYPE_MME))
- vlantag_present = false;
- else
- vlantag_present = true;
-
mme_rx = cp_msg_mme_rx_init (ctx, mme, length, tei);
bitstream_init (&mme_rx->bitstream, mme + ETH_MAC_ADDRESS_SIZE,
length, BITSTREAM_READ);
bitstream_access (&mme_rx->bitstream, &mme_rx->peer.mac,
BYTES_SIZE_TO_BITS(ETH_MAC_ADDRESS_SIZE));
- if (vlantag_present)
- bitstream_access (&mme_rx->bitstream, &mme_rx->peer.vlan_tag, 32);
+ bitstream_access (&mme_rx->bitstream, &mme_rx->peer.eth_type,
+ BYTES_SIZE_TO_BITS(ETH_TYPE_SIZE));
+
+ if (ETH_IS_VLANTAG (mme_rx->peer.eth_type))
+ {
+ bitstream_access (&mme_rx->bitstream, &mme_rx->peer.vlan_tci, 16);
+ bitstream_access (&mme_rx->bitstream, &mtype,
+ BYTES_SIZE_TO_BITS (HPAV_MTYPE_SIZE));
+ }
else
- mme_rx->peer.vlan_tag = 0;
+ {
+ mme_rx->peer.vlan_tci = 0;
+ mtype = mme_rx->peer.eth_type;
+ }
- bitstream_access (&mme_rx->bitstream, &mtype, 16);
bitstream_access (&mme_rx->bitstream, &mmv, 8);
bitstream_access (&mme_rx->bitstream, &mme_rx->mmtype, 16);
- bitstream_access (&mme_rx->bitstream, fmi, 16);
+ bitstream_access (&mme_rx->bitstream, fmi,
+ BYTES_SIZE_TO_BITS (HPAV_FMI_SIZE));
// Verify some data.
- if ((mmv != HPAV_MMV1) || (swap16(mtype) != HPAV_MTYPE_MME))
+ if ((mmv != HPAV_MMV1) || (mtype != HPAV_MTYPE_MME))
{
slab_release (mme_rx);
mme_rx = NULL;
diff --git a/cesar/cp/eoc/cco/action/test/scenario/src/msg_stub.c b/cesar/cp/eoc/cco/action/test/scenario/src/msg_stub.c
index c0cc9c99f3..c9beef391b 100644
--- a/cesar/cp/eoc/cco/action/test/scenario/src/msg_stub.c
+++ b/cesar/cp/eoc/cco/action/test/scenario/src/msg_stub.c
@@ -91,7 +91,8 @@ EVENT (cp_t *ctx, cp_mme_tx_t *mme, const DATA *data) \
test_fail_unless (strcmp (PARAM, param->PARAM) == 0);
#define __ms_test_peer \
test_fail_unless (peer->mac == param->peer.mac); \
- test_fail_unless (peer->vlan_tag == param->peer.vlan_tag); \
+ test_fail_unless (peer->eth_type == param->peer.eth_type); \
+ test_fail_unless (peer->vlan_tci == param->peer.vlan_tci); \
test_fail_unless (peer->tei == param->peer.tei); \
/* Code for MME transmission with a data structure. */
diff --git a/cesar/cp/eoc/cco/action/test/utest/src/msg_stub.c b/cesar/cp/eoc/cco/action/test/utest/src/msg_stub.c
index fd7ada2b79..e5f8091b90 100644
--- a/cesar/cp/eoc/cco/action/test/utest/src/msg_stub.c
+++ b/cesar/cp/eoc/cco/action/test/utest/src/msg_stub.c
@@ -471,7 +471,8 @@ cp_msg_imac_get_discover_list_cnf_send_end (cp_t *ctx, cp_mme_tx_t *mme)
#define __ms_pdecl_ports__two_dim_array(TYPE, NUM1, NUM2, PARAM) , TYPE (*PARAM)[PORT_NB]
#define __ms_test_peer \
test_fail_unless (peer->mac == param->peer.mac); \
- test_fail_unless (peer->vlan_tag == param->peer.vlan_tag); \
+ test_fail_unless (peer->eth_type == param->peer.eth_type); \
+ test_fail_unless (peer->vlan_tci == param->peer.vlan_tci); \
test_fail_unless (peer->tei == param->peer.tei); \
#define __mr_pdecl_(TYPE, PARAM, KIND) , TYPE __ptr_ (KIND) PARAM
@@ -1105,7 +1106,7 @@ cp_msg_mme_init_not_frag (cp_t *ctx, cp_mme_peer_t *peer, cp_mmtype_t mmtype)
data = 0x1;
bitstream_access (&my_mme.bitstream, &data, 48);
// Mtype
- data = swap16 (HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&my_mme.bitstream, &data, 16);
// MMV.
data = HPAV_MMV1;
@@ -1137,7 +1138,7 @@ cp_msg_mme_init_not_frag (cp_t *ctx, cp_mme_peer_t *peer, cp_mmtype_t mmtype)
data = 0x1;
bitstream_access (&bitstream, &data, 48);
// Mtype
- data = swap16 (HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&bitstream, &data, 16);
// MMV.
data = HPAV_MMV1;
diff --git a/cesar/cp/eoc/cco/action/test/utest/src/test_actions.c b/cesar/cp/eoc/cco/action/test/utest/src/test_actions.c
index 866e830251..c4181c8984 100644
--- a/cesar/cp/eoc/cco/action/test/utest/src/test_actions.c
+++ b/cesar/cp/eoc/cco/action/test/utest/src/test_actions.c
@@ -2939,7 +2939,7 @@ test_begin (test, "Receiving a CC_ASSOC.REQ and transfering to multi_sta, sta in
data = 0x1;
bitstream_access (&bitstream, &data, 48);
// Mtype
- data = swap16 (HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&bitstream, &data, 16);
// MMV.
data = HPAV_MMV1;
@@ -2989,7 +2989,7 @@ test_begin (test, "Receiving a CC_ASSOC.REQ and transfering to multi_sta, sta in
data = 0x1;
bitstream_access (&bitstream, &data, 48);
// Mtype
- data = swap16 (HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&bitstream, &data, 16);
// MMV.
data = HPAV_MMV1;
@@ -3375,7 +3375,8 @@ test_case_cco_action (test_t test)
test_fail_unless(ctx.sta_action.assoc.peer.mac == MAC_BROADCAST);
- test_fail_unless(ctx.sta_action.assoc.peer.vlan_tag == 0);
+ test_fail_unless(ctx.sta_action.assoc.peer.eth_type == HPAV_MTYPE_MME);
+ test_fail_unless(ctx.sta_action.assoc.peer.vlan_tci == 0);
test_fail_unless(ctx.sta_action.assoc.peer.tei == MAC_TEI_UNASSOCIATED);
cp_cco_bw_uninit (&ctx);
cp_trace_uninit (&ctx);
@@ -3794,7 +3795,6 @@ cp_msg_cm_get_key_req_receive (cp_t *ctx, cp_mme_rx_t *mme,
{
uint offset;
- bool vlantag_present;
u64 unused;
dbg_assert (ctx);
dbg_assert (mme);
@@ -3802,18 +3802,21 @@ cp_msg_cm_get_key_req_receive (cp_t *ctx, cp_mme_rx_t *mme,
dbg_assert (mme->length < ETH_PACKET_MAX_SIZE);
dbg_assert (data);
- if (bitstream_direct_read (mme->p_mme + 12, 0, 16) == swap16(HPAV_MTYPE_MME))
- vlantag_present = false;
- else
- vlantag_present = true;
-
// Read the MME.
bitstream_init (&mme->bitstream, mme->p_mme, mme->length, BITSTREAM_READ);
bitstream_access (&mme->bitstream, &mme->peer.mac, 48);
bitstream_access (&mme->bitstream, &unused, 48);
- if (vlantag_present)
- bitstream_access (&mme->bitstream, &mme->peer.vlan_tag, 32);
- bitstream_access (&mme->bitstream, &unused, 16);
+ bitstream_access (&mme->bitstream, &mme->peer.eth_type, 16);
+ if (ETH_IS_VLANTAG (mme->peer.eth_type))
+ {
+ bitstream_access (&mme->bitstream, &mme->peer.vlan_tci, 16);
+ bitstream_access (&mme->bitstream, &unused, 16);
+ }
+ else
+ {
+ mme->peer.vlan_tci = 0;
+ }
+
bitstream_access (&mme->bitstream, &unused, 8);
bitstream_access (&mme->bitstream, &unused, 16);
bitstream_access (&mme->bitstream, &unused, 16);
@@ -3823,10 +3826,7 @@ cp_msg_cm_get_key_req_receive (cp_t *ctx, cp_mme_rx_t *mme,
bitstream_access (&mme->bitstream, &data->key_type, 8);
bitstream_access (&mme->bitstream, &data->nid, 56);
- if (vlantag_present)
- offset = 41;
- else
- offset = 37;
+ offset = 37 + ETH_GET_VLANTAG_SIZE (mme->peer.eth_type);
memcpy (mme->p_mme + offset, &data->hash_key, mme->length - offset);
diff --git a/cesar/cp/eoc/cco/action/test/utest_eoc/src/test_actions.c b/cesar/cp/eoc/cco/action/test/utest_eoc/src/test_actions.c
index 43b1a3e003..84a6d2215c 100644
--- a/cesar/cp/eoc/cco/action/test/utest_eoc/src/test_actions.c
+++ b/cesar/cp/eoc/cco/action/test/utest_eoc/src/test_actions.c
@@ -64,11 +64,12 @@ static void
test_write_header (bool vlan_present, mme_header_t *pheader,
bitstream_t *pstream)
{
- bitstream_init (pstream, buffer, 1518, BITSTREAM_WRITE);
+ bitstream_init (pstream, buffer, ETH_PACKET_MAX_NOVLAN_SIZE,
+ BITSTREAM_WRITE);
bitstream_write_large (pstream, pheader->oda, 48);
bitstream_write_large (pstream, pheader->osa, 48);
- bitstream_write (pstream, swap16 (HPAV_MTYPE_MME), 16);
+ bitstream_write (pstream, HPAV_MTYPE_MME, 16);
bitstream_write (pstream, HPAV_MMV, 8);
bitstream_write (pstream, pheader->mmtype, 16);
bitstream_write (pstream, pheader->fmi_inf, 4);
@@ -82,20 +83,21 @@ static void
test_read_header (bool vlan_present, mme_header_t *pheader,
mme_header_t *pexpected, bitstream_t *pstream)
{
- bitstream_init (pstream, buffer, 1518, BITSTREAM_READ);
+ bitstream_init (pstream, buffer, ETH_PACKET_MAX_NOVLAN_SIZE,
+ BITSTREAM_READ);
pheader->oda = bitstream_read_large (pstream, 48);
pheader->osa = bitstream_read_large (pstream, 48);
if (vlan_present)
pheader->vlan = bitstream_read (pstream, 32);
pheader->mtype = bitstream_read (pstream, 16);
- pheader->mtype = swap16 (pheader->mtype);
+ pheader->mtype = pheader->mtype;
pheader->mmv = bitstream_read (pstream, 8);
pheader->mmtype = bitstream_read (pstream, 16);
pheader->fmi_inf = bitstream_read (pstream, 4);
pheader->fmi_mi = bitstream_read (pstream, 4);
pheader->fmi_ssn = bitstream_read (pstream, 8);
- if (pheader->mmtype >= VS_MIN && pheader->mmtype <= VS_MAX)
+ if (HPAV_MMTYPE_IS_VS (pheader->mmtype))
bitstream_read (pstream, 24);
test_begin (test, "Header")
@@ -158,7 +160,9 @@ test_case_vs_eoc_get_topo (test_t test)
bitstream_finalise (&stream);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, buffer, 1518, peer.tei, &fmi);
+ rx_mme = cp_msg_mme_read_header (&cp, buffer,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
+ peer.tei, &fmi);
test_fail_unless (rx_mme != NULL);
test_fail_unless (rx_mme->mmtype == VS_EOC_GET_TOPO_REQ);
data = cp_msg_mme_read_error (&cp, rx_mme);
@@ -273,7 +277,9 @@ test_case_vs_eoc_cco_get_wl (test_t test)
bitstream_finalise (&stream);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, buffer, 1518, peer.tei, &fmi);
+ rx_mme = cp_msg_mme_read_header (&cp, buffer,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
+ peer.tei, &fmi);
test_fail_unless (rx_mme != NULL);
test_fail_unless (rx_mme->mmtype == VS_EOC_CCO_GET_WL_REQ);
data = cp_msg_mme_read_error (&cp, rx_mme);
@@ -389,7 +395,8 @@ main (void)
/* configure peer */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = MAC_TEI_FOREIGN;
/* 1. test VS_EOC_GET_TOPO */
diff --git a/cesar/cp/eoc/multi_sta/action/test/utest/src/test_actions.c b/cesar/cp/eoc/multi_sta/action/test/utest/src/test_actions.c
index 75b5b4b7bf..2697dfe283 100644
--- a/cesar/cp/eoc/multi_sta/action/test/utest/src/test_actions.c
+++ b/cesar/cp/eoc/multi_sta/action/test/utest/src/test_actions.c
@@ -91,7 +91,8 @@ test_case_sta_assoc_procedure (test_t test)
{
// Construct the MME to associate the first station.
mme_rx.peer.mac = 2;
- mme_rx.peer.vlan_tag = 0;
+ mme_rx.peer.eth_type = HPAV_MTYPE_MME;
+ mme_rx.peer.vlan_tci = 0x0;
mme_rx.peer.tei = 0;
printf("DBG: Receiving a CC_ASSOC.REQ join ENTERED\n");
@@ -187,7 +188,7 @@ test_case_sta_authentication (test_t test)
data = 0x1;
bitstream_access (&bitstream, &data, 48);
// Mtype
- data = swap16 (HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&bitstream, &data, 16);
// MMV.
data = HPAV_MMV1;
@@ -280,7 +281,6 @@ cp_msg_cm_get_key_req_receive (cp_t *ctx, cp_mme_rx_t *mme,
cp_msg_cm_get_key_req_t *data)
{
uint offset;
- bool vlantag_present;
u64 unused;
dbg_assert (ctx);
dbg_assert (mme);
@@ -288,18 +288,20 @@ cp_msg_cm_get_key_req_receive (cp_t *ctx, cp_mme_rx_t *mme,
dbg_assert (mme->length < ETH_PACKET_MAX_SIZE);
dbg_assert (data);
- if (bitstream_direct_read (mme->p_mme + 12, 0, 16) == swap16(HPAV_MTYPE_MME))
- vlantag_present = false;
- else
- vlantag_present = true;
-
// Read the MME.
bitstream_init (&mme->bitstream, mme->p_mme, mme->length, BITSTREAM_READ);
bitstream_access (&mme->bitstream, &mme->peer.mac, 48);
bitstream_access (&mme->bitstream, &unused, 48);
- if (vlantag_present)
- bitstream_access (&mme->bitstream, &mme->peer.vlan_tag, 32);
- bitstream_access (&mme->bitstream, &unused, 16);
+ bitstream_access (&mme->bitstream, &mme->peer.eth_type, 16);
+ if (ETH_IS_VLANTAG (mme->peer.eth_type))
+ {
+ bitstream_access (&mme->bitstream, &mme->peer.vlan_tci, 16);
+ bitstream_access (&mme->bitstream, &unused, 16);
+ }
+ else
+ {
+ mme->peer.vlan_tci = 0;
+ }
bitstream_access (&mme->bitstream, &unused, 8);
bitstream_access (&mme->bitstream, &unused, 16);
bitstream_access (&mme->bitstream, &unused, 16);
@@ -309,10 +311,7 @@ cp_msg_cm_get_key_req_receive (cp_t *ctx, cp_mme_rx_t *mme,
bitstream_access (&mme->bitstream, &data->key_type, 8);
bitstream_access (&mme->bitstream, &data->nid, 56);
- if (vlantag_present)
- offset = 41;
- else
- offset = 37;
+ offset = 37 + ETH_GET_VLANTAG_SIZE (mme->peer.eth_type);
memcpy (mme->p_mme + offset, &data->hash_key, mme->length - offset);
return true;
diff --git a/cesar/cp/eoc/sta/action/src/assoc.c b/cesar/cp/eoc/sta/action/src/assoc.c
index cad169f4d9..ef24743706 100644
--- a/cesar/cp/eoc/sta/action/src/assoc.c
+++ b/cesar/cp/eoc/sta/action/src/assoc.c
@@ -678,7 +678,8 @@ cp_eoc_sta_action_auth__authenticated_set_out_lev(cp_t *ctx, cp_mme_rx_t *mme)
cp_mme_peer_t peer;
peer.tei = MAC_TEI_FOREIGN;
peer.mac = ctx->sta_mgr.sta_own_data.mac_addr;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0;
cp_msg_vs_eoc_cco_set_out_lev_ind_send (ctx, &peer,
ctx->sta_mgr.sta_own_data.output_level);
DBG_PRINT_2 ("out_lev = %d", ctx->sta_mgr.sta_own_data.output_level);
diff --git a/cesar/cp/eoc/sta/action/src/drv.c b/cesar/cp/eoc/sta/action/src/drv.c
index 5c59fc190c..c93636abb5 100644
--- a/cesar/cp/eoc/sta/action/src/drv.c
+++ b/cesar/cp/eoc/sta/action/src/drv.c
@@ -355,7 +355,7 @@ cp_sta_action_drv__drv_sta_set_config_req (cp_t *ctx, cp_mme_rx_t *mme)
/* Check parameter. */
dbg_assert (mme);
- char config[HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN];
+ char config[HPAV_MME_PAYLOAD_MAX_SIZE];
cp_msg_drv_result_t result = CP_MSG_DRV_RESULT_FAILURE;
if (cp_msg_drv_sta_set_config_req_receive (ctx, mme, config))
@@ -374,7 +374,7 @@ cp_sta_action_drv__drv_sta_set_slave_config_req (cp_t *ctx, cp_mme_rx_t *mme)
/* Check parameter. */
dbg_assert (mme);
- char config[HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN];
+ char config[HPAV_MME_PAYLOAD_MAX_SIZE];
cp_msg_drv_result_t result = CP_MSG_DRV_RESULT_FAILURE;
if (cp_msg_drv_sta_set_slave_req_receive (ctx, mme, config))
@@ -417,7 +417,8 @@ cp_sta_action_drv__drv_sta_get_status_ind(cp_t *ctx)
peer.tei = MAC_TEI_FOREIGN;
peer.mac = ctx->sta_mgr.sta_own_data.mac_addr;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0;
state = ctx->sta_mgr.sta_own_data.state;
cp_msg_drv_get_status_ind_send (ctx, &peer, DRV_STA_STATUS_IND, state);
}
diff --git a/cesar/cp/eoc/sta/action/test/utest/src/msg_stub.c b/cesar/cp/eoc/sta/action/test/utest/src/msg_stub.c
index 7cc2e66fe5..27e0b4d06a 100644
--- a/cesar/cp/eoc/sta/action/test/utest/src/msg_stub.c
+++ b/cesar/cp/eoc/sta/action/test/utest/src/msg_stub.c
@@ -195,7 +195,8 @@ cp_msg_imac_get_discover_list_cnf_send_end (cp_t *ctx, cp_mme_tx_t *mme)
#define __ms_pdecl_(TYPE, PARAM, KIND) , TYPE PARAM
#define __ms_test_peer \
test_fail_unless (peer->mac == param->peer.mac); \
- test_fail_unless (peer->vlan_tag == param->peer.vlan_tag); \
+ test_fail_unless (peer->eth_type == param->peer.eth_type); \
+ test_fail_unless (peer->vlan_tci == param->peer.vlan_tci); \
test_fail_unless (peer->tei == param->peer.tei); \
#define __mr_pdecl_(TYPE, PARAM, KIND) , TYPE __ptr_ (KIND) PARAM
@@ -420,7 +421,7 @@ cp_msg_mme_init_not_frag (cp_t *ctx, cp_mme_peer_t *peer, cp_mmtype_t mmtype)
data = 0x1;
bitstream_access (&my_mme.bitstream, &data, 48);
// Mtype
- data = swap16 (HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&my_mme.bitstream, &data, 16);
// MMV.
data = HPAV_MMV1;
@@ -452,7 +453,7 @@ cp_msg_mme_init_not_frag (cp_t *ctx, cp_mme_peer_t *peer, cp_mmtype_t mmtype)
data = 0x1;
bitstream_access (&bitstream, &data, 48);
// Mtype
- data = swap16 (HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&bitstream, &data, 16);
// MMV.
data = HPAV_MMV1;
diff --git a/cesar/cp/eoc/sta/action/test/utest/src/test_actions.c b/cesar/cp/eoc/sta/action/test/utest/src/test_actions.c
index cc841e0043..04c55343d0 100644
--- a/cesar/cp/eoc/sta/action/test/utest/src/test_actions.c
+++ b/cesar/cp/eoc/sta/action/test/utest/src/test_actions.c
@@ -879,7 +879,8 @@ test_case_association_and_authentication_action (test_t test)
mme->peer.mac = 2;
mme->peer.tei = 5;
- mme->peer.vlan_tag = 6;
+ mme->peer.eth_type = ETH_TYPE_VLAN;
+ mme->peer.vlan_tci = 6;
mme->mmtype = DRV_STA_MAC_STOP_REQ;
cp_secu_protocol_run_new (&mme->prun, 0, &ctx.rnd);
@@ -894,7 +895,8 @@ test_case_association_and_authentication_action (test_t test)
test_fail_unless (ctx.sta_action.drv_peer.tei == mme->peer.tei);
test_fail_unless (ctx.sta_action.drv_peer.mac == mme->peer.mac);
- test_fail_unless (ctx.sta_action.drv_peer.vlan_tag == mme->peer.vlan_tag);
+ test_fail_unless (ctx.sta_action.drv_peer.eth_type == mme->peer.eth_type);
+ test_fail_unless (ctx.sta_action.drv_peer.vlan_tci == mme->peer.vlan_tci);
}
test_end;
@@ -1768,8 +1770,10 @@ test_case_poweron (test_t test)
test_fail_unless(ctx.sta_action.assoc.peer.mac == \
CP_MME_PEER (MAC_BROADCAST, MAC_TEI_UNASSOCIATED).mac);
- test_fail_unless(ctx.sta_action.assoc.peer.vlan_tag == \
- CP_MME_PEER (MAC_BROADCAST, MAC_TEI_UNASSOCIATED).vlan_tag);
+ test_fail_unless(ctx.sta_action.assoc.peer.eth_type == \
+ CP_MME_PEER (MAC_BROADCAST, MAC_TEI_UNASSOCIATED).eth_type);
+ test_fail_unless(ctx.sta_action.assoc.peer.vlan_tci == \
+ CP_MME_PEER (MAC_BROADCAST, MAC_TEI_UNASSOCIATED).vlan_tci);
test_fail_unless(ctx.sta_action.assoc.peer.tei == \
CP_MME_PEER (MAC_BROADCAST, MAC_TEI_UNASSOCIATED).tei);
}
diff --git a/cesar/cp/mme.h b/cesar/cp/mme.h
index b2f928f0fe..7f6fb5be5e 100644
--- a/cesar/cp/mme.h
+++ b/cesar/cp/mme.h
@@ -414,8 +414,10 @@ struct cp_mme_peer_t
{
/** Peer MAC address. */
mac_t mac;
- /** VLAN tag or 0 if none. */
- u32 vlan_tag;
+ /* First Ethernet type found at offset ETH_TYPE_OFFSET */
+ u16 eth_type;
+ /* 0 if the eth_type isn't a vlan */
+ u16 vlan_tci;
/** Peer TEI, or 0xff if not TEI based. */
cp_tei_t tei;
};
@@ -517,11 +519,13 @@ typedef struct cp_mme_tx_t cp_mme_tx_t;
/** Construct a cp_mme_peer_t for unicast to all STA. */
#define CP_MME_PEER_ALL_STA \
- ((cp_mme_peer_t) { .mac = MAC_BROADCAST, .tei = MAC_TEI_MULTI_UNICAST })
+ ((cp_mme_peer_t) { .mac = MAC_BROADCAST, .eth_type = HPAV_MTYPE_MME, \
+ .tei = MAC_TEI_MULTI_UNICAST })
/** Construct a cp_mme_peer_t from a MAC address and a TEI. */
#define CP_MME_PEER(mac_, tei_) \
- ((cp_mme_peer_t) { .mac = mac_, .vlan_tag = 0, .tei = tei_ })
+ ((cp_mme_peer_t) { .mac = mac_, .eth_type = HPAV_MTYPE_MME, \
+ .vlan_tci = 0, .tei = tei_ })
/**
* Compare two cp_mme_peer_t.
diff --git a/cesar/cp/msg/inc/cc_relay.h b/cesar/cp/msg/inc/cc_relay.h
new file mode 100644
index 0000000000..f2243f752a
--- /dev/null
+++ b/cesar/cp/msg/inc/cc_relay.h
@@ -0,0 +1,25 @@
+#ifndef cp_msg_inc_cc_relay_h
+#define cp_msg_inc_cc_relay_h
+/* Cesar project {{{
+ *
+ * Copyright (C) 2012 Spidcom
+ *
+ * <<<Licence>>>
+ *
+ * }}} */
+
+/**
+ * \file cp/msg/inc/cc_relay.h
+ * \brief CC_RELAY message.
+ * \ingroup cp_msg
+ */
+
+/* These sizes can be found in HPAV spec, table 11-41 (Page 503). */
+#define CP_MSG_CC_RELAY_LEN_SIZE 2
+
+#define CP_MSG_CC_RELAY_LEN_OFFSET 7
+
+#define CP_MSG_CC_RELAY_PAYLOAD_OFFSET (CP_MSG_CC_RELAY_LEN_OFFSET \
+ + CP_MSG_CC_RELAY_LEN_SIZE)
+
+#endif /* cp_msg_inc_cc_relay_h */
diff --git a/cesar/cp/msg/inc/cm_encrypted_payload.h b/cesar/cp/msg/inc/cm_encrypted_payload.h
new file mode 100644
index 0000000000..0794612d38
--- /dev/null
+++ b/cesar/cp/msg/inc/cm_encrypted_payload.h
@@ -0,0 +1,42 @@
+#ifndef cp_msg_inc_cm_encrypted_payload_h
+#define cp_msg_inc_cm_encrypted_payload_h
+/* Cesar project {{{
+ *
+ * Copyright (C) 2012 Spidcom
+ *
+ * <<<Licence>>>
+ *
+ * }}} */
+/**
+ * \file cp/msg/inc/cm_encrypted_payload.h
+ * \brief CM_ENCRYPTED_PAYLOAD message.
+ * \ingroup cp_msg
+ */
+
+/* These sizes can be found in HPAV spec, table 11-76. */
+
+/* Payload Encryption Key Select. */
+#define CP_MSG_CM_ENC_PLAYLOAD_PEKS_SIZE 1
+
+/* AVLN status pf source. */
+#define CP_MSG_CM_ENC_PLAYLOAD_AVLN_STATUS_SIZE 1
+
+/* AES encryption Initialization Vector or Universally Identifier (UUID)
+ * when PID=0x04. */
+#define CP_MSG_CM_ENC_PLAYLOAD_UUID_SIZE 16
+
+/* Offset of "Length of MM" field. */
+#define CP_MSG_CM_ENC_PLAYLOAD_IND_LEN_OFFSET \
+ ( CP_MSG_CM_ENC_PLAYLOAD_PEKS_SIZE +\
+ CP_MSG_CM_ENC_PLAYLOAD_AVLN_STATUS_SIZE +\
+ CP_SECU_PID_SIZE +\
+ CP_SECU_PRN_SIZE +\
+ CP_SECU_PMN_SIZE +\
+ CP_MSG_CM_ENC_PLAYLOAD_UUID_SIZE )
+
+/* Checksum . */
+#define CP_MSG_CM_ENC_PLAYLOAD_CRC_SIZE 4
+
+#define CP_MSG_CM_ENC_PLAYLOAD_RF_LEN_MAX_SIZE 15
+
+#endif /* cp_msg_inc_cm_encrypted_payload_h */
diff --git a/cesar/cp/msg/inc/msg_cc.h b/cesar/cp/msg/inc/msg_cc.h
index fecc1f74d6..306a2fa6a8 100644
--- a/cesar/cp/msg/inc/msg_cc.h
+++ b/cesar/cp/msg/inc/msg_cc.h
@@ -19,6 +19,7 @@
#include "cc_discover_list.h"
#include "cc_handover.h"
#include "cc_cco_appoint.h"
+#include "cc_relay.h"
#include "cp/mme.h"
diff --git a/cesar/cp/msg/inc/msg_cm.h b/cesar/cp/msg/inc/msg_cm.h
index 9271e73aac..a68dfe78be 100644
--- a/cesar/cp/msg/inc/msg_cm.h
+++ b/cesar/cp/msg/inc/msg_cm.h
@@ -22,6 +22,7 @@
#include "cm_nw_info.h"
#include "cm_hfid.h"
#include "cm_link_stats.h"
+#include "cm_encrypted_payload.h"
BEGIN_DECLS
diff --git a/cesar/cp/msg/inc/msg_drv.h b/cesar/cp/msg/inc/msg_drv.h
index cddc336dc7..3e78f4595e 100644
--- a/cesar/cp/msg/inc/msg_drv.h
+++ b/cesar/cp/msg/inc/msg_drv.h
@@ -218,7 +218,7 @@ cp_msg_drv_sta_set_key_req_receive (cp_t *ctx, cp_mme_rx_t *mme, cp_key_t *nmk,
bool
cp_msg_drv_sta_set_config_req_receive (
cp_t *ctx, cp_mme_rx_t *mme,
- char config[HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN]);
+ char config[HPAV_MME_PAYLOAD_MAX_SIZE]);
/**
* Send a DRV_STA_SET_KEY.CNF.
@@ -376,7 +376,7 @@ cp_msg_drv_sta_set_eoc_req_receive (cp_t *ctx, cp_mme_rx_t *mme, uint *exp,
*/
bool
cp_msg_drv_sta_set_slave_req_receive (cp_t *ctx, cp_mme_rx_t *mme,
- char config[HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN]);
+ char config[HPAV_MME_PAYLOAD_MAX_SIZE]);
END_DECLS
diff --git a/cesar/cp/msg/msg.h b/cesar/cp/msg/msg.h
index 9f14d844e5..53fa8ad763 100644
--- a/cesar/cp/msg/msg.h
+++ b/cesar/cp/msg/msg.h
@@ -169,11 +169,9 @@ cp_msg_mme_send (cp_t *ctx, cp_mme_tx_t *mme);
/** Read the MME header once the bitstream has already been initialised.
* \param mme the MME handler.
* \param fmi the FMI.
- * \param vlantag_present indicate if the vlan tag is present in the header.
*/
bool
-cp_msg_mme_read_header_initialised (cp_mme_rx_t *mme, uint *fmi,
- bool vlantag_present);
+cp_msg_mme_read_header_initialised (cp_mme_rx_t *mme, uint *fmi);
/**
* Read the header of a received MME and return the MME context.
diff --git a/cesar/cp/msg/src/msg.c b/cesar/cp/msg/src/msg.c
index 4aa6657ac1..65b5ae0918 100644
--- a/cesar/cp/msg/src/msg.c
+++ b/cesar/cp/msg/src/msg.c
@@ -41,10 +41,6 @@
#include <stdio.h>
-
-
-#define CP_MSG_CM_ENC_PLAYLOAD_RF_LEN_MAX_SIZE 15
-
/**
* Name of the event when there is no event.
*/
@@ -343,6 +339,28 @@ cp_msg_mme_fmsn_increase (cp_msg_t *ctx)
}
/**
+ * Compute the header length of the MME fragmented or not.
+ * \param msg the MME to send.
+ * \return the header length.
+ */
+static inline uint
+cp_msg_mme_header_length (cp_mme_peer_t *peer, cp_mmtype_t mmtype)
+{
+ uint header_length = 0;
+
+ dbg_assert (peer);
+ header_length = HPAV_MME_HEADER;
+ header_length += ETH_GET_VLANTAG_SIZE (peer->eth_type);
+
+ /* If it's a Vendor Specific MME, so we have a OUI field added
+ * See Page 576 of HomePlugAV spec , version 1.1, may 21 2007.*/
+ if (HPAV_MMTYPE_IS_VS (mmtype))
+ header_length += OUI_SIZE;
+
+ return header_length;
+}
+
+/**
* Compute the current length of the MME fragmented or not.
* \param msg the MME to send.
* \return the length.
@@ -350,20 +368,27 @@ cp_msg_mme_fmsn_increase (cp_msg_t *ctx)
static inline uint
cp_msg_mme_length (cp_mme_tx_t *mme)
{
- uint length;
+ uint mme_length;
+ uint p_capability;
+ uint h_size;
- if (mme->fmi_nb)
- {
- length = mme->peer.vlan_tag ? HPAV_MME_HEADER_LEN_WITH_VLAN :
- HPAV_MME_HEADER;
+ dbg_assert (mme);
- length += bitstream_bytes_processed (&mme->bitstream) %
- ETH_PACKET_MAX_SIZE;
- }
+ h_size = cp_msg_mme_header_length (&mme->peer, mme->mmtype);
+
+ if (HPAV_MMTYPE_IS_VS (mme->mmtype))
+ p_capability = HPAV_VS_MME_PAYLOAD_MAX;
else
- length = bitstream_bytes_processed (&mme->bitstream);
+ p_capability = HPAV_MME_PAYLOAD_MAX_SIZE;
+
+ mme_length = bitstream_bytes_processed (&mme->bitstream);
+ dbg_assert (mme_length >= h_size);
+
+ mme_length -= h_size;
+ mme_length %= p_capability;
+ mme_length += h_size;
- return length;
+ return mme_length;
}
/** Pad the MME to reach the minimal length. */
@@ -671,27 +696,24 @@ cp_msg_mme_init (cp_t *ctx, cp_mme_peer_t *peer, cp_mmtype_t mmtype,
uint mme_payload_length)
{
cp_mme_tx_t *mme;
- uint mme_header_length;
+ uint p_capability;
uint nf_mi;
+ dbg_assert (ctx);
dbg_assert (peer);
- /* Compute the header length. */
- mme_header_length = peer->vlan_tag ? HPAV_MME_HEADER_LEN_WITH_VLAN :
- HPAV_MME_HEADER;
-
- /* If it's a Vendor Specific MME, so we have a OUI field added
- * See Page 576 of HomePlugAV spec , version 1.1, may 21 2007.*/
- if (mmtype >= VS_MIN && mmtype <= VS_MAX)
- mme_header_length += OUI_SIZE;
-
/* Fragmentation Management Information –
* 4 bits are Number of Fragments (NF_MI) of the MMENTRY
* 0x00 = MMENTRY is not Fragmented
* 0x01 = MMENTRY is Fragmented into two parts
* 0x02 = MMENTRY is Fragmented into three parts, and so on
**/
- nf_mi = mme_payload_length / (ETH_PACKET_MAX_SIZE - mme_header_length);
+ if (HPAV_MMTYPE_IS_VS(mmtype))
+ p_capability = HPAV_VS_MME_PAYLOAD_MAX;
+ else
+ p_capability = HPAV_MME_PAYLOAD_MAX_SIZE;
+
+ nf_mi = mme_payload_length / p_capability;
dbg_assert (nf_mi < HPAV_MME_FRAG_MAX);
if (nf_mi == 0)
@@ -725,6 +747,7 @@ cp_mme_tx_t *
cp_msg_mme_init_not_frag (cp_t *ctx, cp_mme_peer_t *peer, cp_mmtype_t mmtype)
{
cp_mme_tx_t *msg;
+ uint eth_packet_size = ETH_PACKET_GET_MAX_SIZE (peer->eth_type);
dbg_assert (ctx);
dbg_assert (peer);
@@ -741,8 +764,9 @@ cp_msg_mme_init_not_frag (cp_t *ctx, cp_mme_peer_t *peer, cp_mmtype_t mmtype)
msg->final_peer = *peer;
+
// Initialise the bitstream context and fill the MME header.
- bitstream_write_init (&msg->bitstream, msg->p_mme, ETH_PACKET_MAX_SIZE);
+ bitstream_write_init (&msg->bitstream, msg->p_mme, eth_packet_size);
cp_msg_mme_write_frag_header (ctx, msg, &msg->bitstream, mmtype);
return msg;
}
@@ -767,6 +791,7 @@ cp_msg_mme_init_encrypted (cp_t *ctx, cp_mme_peer_t *peer,
const cp_secu_protocol_run_t *prun)
{
cp_mme_tx_t *msg;
+ uint eth_packet_size = ETH_PACKET_GET_MAX_SIZE (peer->eth_type);
uint i;
dbg_assert (ctx);
@@ -787,7 +812,7 @@ cp_msg_mme_init_encrypted (cp_t *ctx, cp_mme_peer_t *peer,
msg->mmtype = mmtype;
// Initialise the bitstream context and fill the MME header.
- bitstream_write_init (&msg->bitstream, msg->p_mme, ETH_PACKET_MAX_SIZE);
+ bitstream_write_init (&msg->bitstream, msg->p_mme, eth_packet_size);
cp_msg_mme_write_frag_header (ctx, msg, &msg->bitstream,
CM_ENCRYPTED_PAYLOAD_IND);
@@ -866,10 +891,26 @@ cp_msg_mme_write_relay_header (cp_t *ctx, bitstream_t *bs,
BYTES_SIZE_TO_BITS (ETH_MAC_ADDRESS_SIZE));
bitstream_write_large (bs, cp_sta_own_data_get_mac_address (ctx),
BYTES_SIZE_TO_BITS (ETH_MAC_ADDRESS_SIZE));
- if (dpeer.vlan_tag)
- bitstream_write (bs, dpeer.vlan_tag,
- BYTES_SIZE_TO_BITS (ETH_VLAN_TAG_SIZE));
- bitstream_write (bs, swap16 (HPAV_MTYPE_MME),
+
+ switch (dpeer.eth_type)
+ {
+ case HPAV_MTYPE_MME:
+ /* Nothing to add */
+ break;
+
+ case ETH_TYPE_VLAN:
+ bitstream_write (bs, ETH_TYPE_VLAN,
+ BYTES_SIZE_TO_BITS (ETH_TYPE_SIZE));
+ bitstream_write (bs, dpeer.vlan_tci, 16);
+ break;
+
+ default:
+ /* Not managed */
+ dbg_assert_default ();
+ break;
+ }
+
+ bitstream_write (bs, HPAV_MTYPE_MME,
BYTES_SIZE_TO_BITS (HPAV_MTYPE_SIZE));
bitstream_write (bs, HPAV_MMV,
BYTES_SIZE_TO_BITS (HPAV_MMV_SIZE));
@@ -880,7 +921,8 @@ cp_msg_mme_write_relay_header (cp_t *ctx, bitstream_t *bs,
bitstream_write (bs, fmi_fmsn, 8);
/* Store the beginning of the CC RELAY MME.*/
- bitstream_write_large (bs, final_peer.mac, 48);
+ bitstream_write_large (bs, final_peer.mac,
+ BYTES_SIZE_TO_BITS (ETH_MAC_ADDRESS_SIZE));
bitstream_write (bs, final_peer.tei, 8);
bitstream_write (bs, 0, 16);
}
@@ -900,7 +942,8 @@ cp_msg_mme_write_relay (cp_t *ctx, bitstream_t *bs, cp_mme_tx_t *msg)
msg->final_peer.mac = msg->peer.mac;
msg->final_peer.tei = msg->peer.tei;
- msg->final_peer.vlan_tag = msg->peer.vlan_tag;
+ msg->final_peer.eth_type = msg->peer.eth_type;
+ msg->final_peer.vlan_tci = msg->peer.vlan_tci;
/* If the our station is associated.*/
if (cp_sta_own_data_get_tei (ctx) != MAC_TEI_UNASSOCIATED
@@ -962,10 +1005,15 @@ cp_msg_mme_write_frag_header (cp_t *ctx, cp_mme_tx_t *msg, bitstream_t *bs,
BYTES_SIZE_TO_BITS (ETH_MAC_ADDRESS_SIZE));
bitstream_write_large (bs, cp_sta_own_data_get_mac_address (ctx),
BYTES_SIZE_TO_BITS (ETH_MAC_ADDRESS_SIZE));
- if (msg->final_peer.vlan_tag)
- bitstream_write (bs, msg->final_peer.vlan_tag,
- BYTES_SIZE_TO_BITS (ETH_VLAN_TAG_SIZE));
- bitstream_write (bs, swap16 (HPAV_MTYPE_MME),
+
+ if (ETH_IS_VLANTAG (msg->final_peer.eth_type))
+ {
+ bitstream_write (bs, msg->final_peer.eth_type,
+ BYTES_SIZE_TO_BITS (ETH_TYPE_SIZE));
+ bitstream_write (bs, msg->final_peer.vlan_tci, 16);
+ }
+
+ bitstream_write (bs, HPAV_MTYPE_MME,
BYTES_SIZE_TO_BITS (HPAV_MTYPE_SIZE));
bitstream_write (bs, HPAV_MMV,
BYTES_SIZE_TO_BITS (HPAV_MMV_SIZE));
@@ -997,6 +1045,7 @@ cp_msg_mme_init_frag (cp_t *ctx, cp_mme_peer_t *peer, cp_mmtype_t mmtype,
uint fmi_nbFrag)
{
cp_mme_tx_t *msg;
+ uint eth_packet_size = ETH_PACKET_GET_MAX_SIZE (peer->eth_type);
dbg_assert (ctx);
dbg_assert (peer);
@@ -1018,7 +1067,7 @@ cp_msg_mme_init_frag (cp_t *ctx, cp_mme_peer_t *peer, cp_mmtype_t mmtype,
msg->mmtype = mmtype;
cp_msg_mme_fmsn_increase (&ctx->msg);
// Initialise the bitstream context and fill the MME header.
- bitstream_write_init (&msg->bitstream, msg->p_mme, ETH_PACKET_MAX_SIZE);
+ bitstream_write_init (&msg->bitstream, msg->p_mme, eth_packet_size);
cp_msg_mme_write_frag_header (ctx, msg, &msg->bitstream, mmtype);
return msg;
@@ -1078,28 +1127,26 @@ cp_msg_mme_send (cp_t *ctx, cp_mme_tx_t *mme)
*/
mme->length = (bitstream_bytes_processed (&mme->bitstream)
- mme->payload_offset);
- bitstream_direct_write (mme->p_mme,
- ((mme->peer.vlan_tag ?
- HPAV_MME_HEADER_LEN_WITH_VLAN:
- HPAV_MME_HEADER)
- + 22) * 8,
- mme->length,
- 16);
-
-
+ bitstream_direct_write (mme->p_mme, BYTES_SIZE_TO_BITS (
+ HPAV_MME_HEADER + ETH_GET_VLANTAG_SIZE (mme->peer.eth_type)
+ + 22), mme->length, 16);
/* Store the CRC. */
crc_pos = bitstream_written_bits (&mme->bitstream);
- bitstream_write (&mme->bitstream, 0, 32);
+ bitstream_write (&mme->bitstream, 0,
+ BYTES_SIZE_TO_BITS (CP_MSG_CM_ENC_PLAYLOAD_CRC_SIZE));
/* PID. */
- bitstream_write (&mme->bitstream, mme->prun.pid, 8);
+ bitstream_write (&mme->bitstream, mme->prun.pid,
+ BYTES_SIZE_TO_BITS (CP_SECU_PID_SIZE));
/* PRN. */
- bitstream_write (&mme->bitstream, mme->prun.prn, 16);
+ bitstream_write (&mme->bitstream, mme->prun.prn,
+ BYTES_SIZE_TO_BITS (CP_SECU_PRN_SIZE));
/* PMN. */
- bitstream_write (&mme->bitstream, mme->prun.pmn, 8);
+ bitstream_write (&mme->bitstream, mme->prun.pmn,
+ BYTES_SIZE_TO_BITS (CP_SECU_PMN_SIZE));
/* Padding. crc_value variable used as Padding. */
padding_len = 16 - ((mme->length + mme->rf_len
@@ -1121,7 +1168,9 @@ cp_msg_mme_send (cp_t *ctx, cp_mme_tx_t *mme)
mme->p_mme + mme->payload_offset,
mme->length);
crc_value = crc_compute_end (&crc, crc_value);
- bitstream_direct_write (mme->p_mme, crc_pos, crc_value, 32);
+ bitstream_direct_write (
+ mme->p_mme, crc_pos, crc_value,
+ BYTES_SIZE_TO_BITS (CP_MSG_CM_ENC_PLAYLOAD_CRC_SIZE));
/* Select the key indexed by the PEKS to encrypted the embedded MME. */
@@ -1173,30 +1222,37 @@ cp_msg_mme_send (cp_t *ctx, cp_mme_tx_t *mme)
/** Read the MME header once the bitstream has already been initialised.
* \param mme the MME handler.
* \param fmi the FMI.
- * \param vlantag_present indicate if the vlan tag is present in the header.
*/
bool
-cp_msg_mme_read_header_initialised (cp_mme_rx_t *mme, uint *fmi,
- bool vlantag_present)
+cp_msg_mme_read_header_initialised (cp_mme_rx_t *mme, uint *fmi)
{
uint mtype;
dbg_assert (mme);
dbg_assert (fmi);
bitstream_access (&mme->bitstream, &mme->peer.mac,
- BYTES_SIZE_TO_BITS(ETH_MAC_ADDRESS_SIZE));
- if (vlantag_present)
- bitstream_access (&mme->bitstream, &mme->peer.vlan_tag, 32);
+ BYTES_SIZE_TO_BITS (ETH_MAC_ADDRESS_SIZE));
+ bitstream_access (&mme->bitstream, &mme->peer.eth_type,
+ BYTES_SIZE_TO_BITS (ETH_TYPE_SIZE));
+
+ if (ETH_IS_VLANTAG (mme->peer.eth_type))
+ {
+ bitstream_access (&mme->bitstream, &mme->peer.vlan_tci, 16);
+ bitstream_access (&mme->bitstream, &mtype,
+ BYTES_SIZE_TO_BITS (HPAV_MTYPE_SIZE));
+ }
else
- mme->peer.vlan_tag = 0;
+ {
+ mme->peer.vlan_tci = 0;
+ mtype = mme->peer.eth_type;
+ }
- bitstream_access (&mme->bitstream, &mtype, 16);
bitstream_access (&mme->bitstream, &mme->mmv, 8);
bitstream_access (&mme->bitstream, &mme->mmtype, 16);
bitstream_access (&mme->bitstream, fmi, 16);
// Verify some data.
- if ((mme->mmv != HPAV_MMV1) || (swap16(mtype) != HPAV_MTYPE_MME))
+ if ((mme->mmv != HPAV_MMV1) || (mtype != HPAV_MTYPE_MME))
{
return false;
}
@@ -1209,20 +1265,17 @@ cp_msg_mme_read_header (cp_t *ctx, u8 *mme, uint length, cp_tei_t tei,
uint *fmi)
{
cp_mme_rx_t *mme_rx;
- bool vlantag_present;
+ u16 eth_type;
bool ok;
dbg_assert (ctx);
dbg_assert (mme);
dbg_assert (fmi);
- if (bitstream_direct_read (mme + 12, 0, 16) == swap16 (HPAV_MTYPE_MME))
- vlantag_present = false;
- else
- vlantag_present = true;
+ eth_type = bitstream_direct_read (
+ mme + ETH_TYPE_OFFSET, 0, BYTES_SIZE_TO_BITS (ETH_TYPE_SIZE));
- if (length >= (vlantag_present ? HPAV_MME_HEADER_LEN_WITH_VLAN :
- HPAV_MME_HEADER))
+ if (length >= (HPAV_MME_HEADER + ETH_GET_VLANTAG_SIZE(eth_type)))
{
mme_rx = cp_msg_mme_rx_init (ctx, mme, length, tei);
bitstream_init (&mme_rx->bitstream, mme + ETH_MAC_ADDRESS_SIZE,
@@ -1230,8 +1283,7 @@ cp_msg_mme_read_header (cp_t *ctx, u8 *mme, uint length, cp_tei_t tei,
if (cp_msg_mme_read_error (ctx, mme_rx))
{
- ok = cp_msg_mme_read_header_initialised (mme_rx, fmi,
- vlantag_present);
+ ok = cp_msg_mme_read_header_initialised (mme_rx, fmi);
}
else
ok = false;
@@ -1344,7 +1396,6 @@ cp_msg_mme_read_header_enc (cp_t *ctx, cp_mme_rx_t *mme)
mac_t oda = 0;
mac_t osa = 0;
- uint vlan_tag = 0;
uint mtype = 0;
uint mmv = 0;
cp_secu_aes_t aes;
@@ -1358,12 +1409,17 @@ cp_msg_mme_read_header_enc (cp_t *ctx, cp_mme_rx_t *mme)
if (cp_msg_mme_read_error (ctx, mme))
{
// Continue reading the MME.
- bitstream_access (&mme->bitstream, &mme->peks, 8);
+ bitstream_access (&mme->bitstream, &mme->peks,
+ BYTES_SIZE_TO_BITS (CP_MSG_CM_ENC_PLAYLOAD_PEKS_SIZE));
// AVLN STATUS.
- bitstream_access (&mme->bitstream, &avln_status, 8);
- bitstream_access (&mme->bitstream, &mme->prun.pid, 8);
- bitstream_access (&mme->bitstream, &mme->prun.prn, 16);
- bitstream_access (&mme->bitstream, &mme->prun.pmn, 8);
+ bitstream_access (&mme->bitstream, &avln_status,
+ BYTES_SIZE_TO_BITS (CP_MSG_CM_ENC_PLAYLOAD_AVLN_STATUS_SIZE));
+ bitstream_access (&mme->bitstream, &mme->prun.pid,
+ BYTES_SIZE_TO_BITS (CP_SECU_PID_SIZE));
+ bitstream_access (&mme->bitstream, &mme->prun.prn,
+ BYTES_SIZE_TO_BITS (CP_SECU_PRN_SIZE));
+ bitstream_access (&mme->bitstream, &mme->prun.pmn,
+ BYTES_SIZE_TO_BITS (CP_SECU_PMN_SIZE));
// IV.
for ( i = 0; i < 4; i++)
@@ -1378,8 +1434,8 @@ cp_msg_mme_read_header_enc (cp_t *ctx, cp_mme_rx_t *mme)
/* Compute a first payload offset position. The RF is still in
* contained in this length because the RF length is encrypted. */
payload_offset = CP_MSG_ENCRYPTED_DATA_HEADER_SIZE
- + (mme->peer.vlan_tag ? HPAV_MME_HEADER_LEN_WITH_VLAN :
- HPAV_MME_HEADER);
+ + HPAV_MME_HEADER
+ + ETH_GET_VLANTAG_SIZE (mme->peer.eth_type);
enc_length = full_length - payload_offset;
@@ -1417,26 +1473,40 @@ cp_msg_mme_read_header_enc (cp_t *ctx, cp_mme_rx_t *mme)
if (cp_msg_mme_read_header_enc_check_data (ctx, mme,
payload_offset))
{
+ u16 vlan_tci = 0;
+ u16 eth_type;
+
bitstream_read_init (&mme->bitstream, mme->p_mme +
payload_offset, mme->length);
/* Payload. */
bitstream_access (&mme->bitstream, &oda, 48);
bitstream_access (&mme->bitstream, &osa, 48);
- if (mme->peer.vlan_tag)
- bitstream_access (&mme->bitstream, &vlan_tag, 32);
+ bitstream_access (&mme->bitstream, &eth_type,
+ BYTES_SIZE_TO_BITS (ETH_TYPE_SIZE));
+
+ if (ETH_IS_VLANTAG (eth_type))
+ {
+ bitstream_access (&mme->bitstream, &vlan_tci, 16);
+ bitstream_access (&mme->bitstream, &mtype,
+ BYTES_SIZE_TO_BITS (HPAV_MTYPE_SIZE));
+ }
else
- vlan_tag = mme->peer.vlan_tag;
- bitstream_access (&mme->bitstream, &mtype, 16);
+ {
+ vlan_tci = 0;
+ mtype = eth_type;
+ }
+
bitstream_access (&mme->bitstream, &mmv, 8);
// MMTYPE.
bitstream_access (&mme->bitstream, &mme->mmtype, 16);
// FMI
bitstream_access (&mme->bitstream, &data, 16);
if ((mmv != HPAV_MMV1)
- || (mtype != swap16(HPAV_MTYPE_MME))
+ || (mtype != HPAV_MTYPE_MME)
|| (oda != cp_sta_own_data_get_mac_address (ctx))
|| (osa != mme->peer.mac)
- || (vlan_tag != mme->peer.vlan_tag)
+ || (eth_type != mme->peer.eth_type)
+ || (vlan_tci != mme->peer.vlan_tci)
|| ((avln_status > CP_MSG_AVLN_STATUS_ASSOC_PCO)
&& (avln_status < CP_MSG_AVLN_STATUS_CCO))
|| (avln_status >= CP_MSG_AVLN_STATUS_NB)
@@ -1491,9 +1561,10 @@ void
cp_msg_mme_tx_change_buffer (bitstream_t *bs, cp_mme_tx_t *mme)
{
dbg_assert (mme);
+ uint eth_packet_size = ETH_PACKET_GET_MAX_SIZE (mme->peer.eth_type);
// Compute fragment size.
- mme->length = ETH_PACKET_MAX_SIZE;
+ mme->length = eth_packet_size;
// Finalise the MME.
slab_addref (mme);
@@ -1503,7 +1574,7 @@ cp_msg_mme_tx_change_buffer (bitstream_t *bs, cp_mme_tx_t *mme)
mme->p_mme = cp_cl_interf_get_buffer_tx (mme->cp);
bitstream_t header_bs;
- bitstream_write_init (&header_bs, mme->p_mme, ETH_PACKET_MAX_SIZE);
+ bitstream_write_init (&header_bs, mme->p_mme, eth_packet_size);
mme->fmi_nb++;
cp_msg_mme_write_frag_header (mme->cp, mme, &header_bs,
@@ -1515,7 +1586,7 @@ cp_msg_mme_tx_change_buffer (bitstream_t *bs, cp_mme_tx_t *mme)
// Set new buffer.
bitstream_set_buffer (bs, mme->p_mme + offset,
- ETH_PACKET_MAX_SIZE - offset);
+ eth_packet_size - offset);
/* The last mme must call the bitstream_finalize in cp_msg_mme_send
* function. Fix when we have fragmented messages. */
mme->length = 0;
diff --git a/cesar/cp/msg/src/msg_cc.c b/cesar/cp/msg/src/msg_cc.c
index 0e62e7261e..ca7e16659b 100644
--- a/cesar/cp/msg/src/msg_cc.c
+++ b/cesar/cp/msg/src/msg_cc.c
@@ -712,11 +712,13 @@ cp_msg_cc_relay_ind_send (cp_t *ctx, cp_mme_rx_t *msg, mac_t osa, cp_tei_t
peer.mac = msg->relay.mac_fa;
peer.tei = msg->relay.ftei;
- peer.vlan_tag = msg->peer.vlan_tag;
+ peer.eth_type = msg->peer.eth_type;
+ peer.vlan_tci = msg->peer.vlan_tci;
mme = cp_msg_mme_init_not_frag (ctx, &peer, CC_RELAY_IND);
dbg_assert (mme);
- bitstream_write_large (&mme->bitstream, osa, 48);
+ bitstream_write_large (&mme->bitstream, osa, BYTES_SIZE_TO_BITS
+ (ETH_MAC_ADDRESS_SIZE));
bitstream_access (&mme->bitstream, &stei, 8);
bitstream_access (&mme->bitstream, &length, 16);
@@ -734,18 +736,15 @@ cp_msg_cc_relay_req_send_finalise (cp_t *ctx, cp_mme_tx_t *msg)
dbg_assert (ctx);
dbg_assert (msg);
- if (msg->peer.vlan_tag)
- {
- offset = (HPAV_MME_HEADER_LEN_WITH_VLAN + 7) * 8;
- length = msg->length - HPAV_MME_HEADER_LEN_WITH_VLAN - 9;
- }
- else
- {
- offset = (HPAV_MME_HEADER + 7) * 8;
- length = msg->length - HPAV_MME_HEADER - 9;
- }
+ offset = BYTES_SIZE_TO_BITS (HPAV_MME_HEADER
+ + ETH_GET_VLANTAG_SIZE (msg->peer.eth_type)
+ + CP_MSG_CC_RELAY_LEN_OFFSET);
+ length = msg->length - HPAV_MME_HEADER
+ - ETH_GET_VLANTAG_SIZE (msg->peer.eth_type)
+ - CP_MSG_CC_RELAY_PAYLOAD_OFFSET;
- bitstream_direct_write (msg->p_mme, offset, length, 16);
+ bitstream_direct_write (msg->p_mme, offset, length,
+ BYTES_SIZE_TO_BITS (CP_MSG_CC_RELAY_LEN_SIZE));
}
/**
@@ -771,15 +770,17 @@ cp_msg_cc_relay_req_receive (cp_t *ctx, cp_mme_rx_t *msg, uint *length,
if (cp_msg_mme_read_error (ctx, msg))
{
// Read the FDA.
- bitstream_access (&msg->bitstream, &msg->relay.mac_fa, 48);
+ bitstream_access (&msg->bitstream, &msg->relay.mac_fa,
+ BYTES_SIZE_TO_BITS (ETH_MAC_ADDRESS_SIZE));
bitstream_access (&msg->bitstream, &msg->relay.ftei, 8);
- bitstream_access (&msg->bitstream, length, 16);
+ bitstream_access (&msg->bitstream, length,
+ BYTES_SIZE_TO_BITS (CP_MSG_CC_RELAY_LEN_SIZE));
- mme_header_len = msg->peer.vlan_tag ?
- HPAV_MME_HEADER_LEN_WITH_VLAN
- : HPAV_MME_HEADER;
+ mme_header_len = HPAV_MME_HEADER
+ + ETH_GET_VLANTAG_SIZE (msg->peer.eth_type);
- length_computed = msg->length - mme_header_len - 9;
+ length_computed = msg->length - mme_header_len
+ - CP_MSG_CC_RELAY_PAYLOAD_OFFSET;
*mmtype = bitstream_direct_read (msg->p_mme + 2*mme_header_len + 5,
0, 16);
@@ -805,17 +806,19 @@ cp_msg_cc_relay_ind_receive (cp_t *ctx, cp_mme_rx_t *msg, uint *length)
if (cp_msg_mme_read_error (ctx, msg))
{
// Read the FDA.
- bitstream_access (&msg->bitstream, &msg->peer.mac, 48);
+ bitstream_access (&msg->bitstream, &msg->peer.mac, BYTES_SIZE_TO_BITS
+ (ETH_MAC_ADDRESS_SIZE));
bitstream_access (&msg->bitstream, &msg->peer.tei, 8);
- bitstream_access (&msg->bitstream, length, 16);
+ bitstream_access (&msg->bitstream, length,
+ BYTES_SIZE_TO_BITS (CP_MSG_CC_RELAY_LEN_SIZE));
- mme_header_len = msg->peer.vlan_tag ?
- HPAV_MME_HEADER_LEN_WITH_VLAN
- : HPAV_MME_HEADER;
+ mme_header_len = HPAV_MME_HEADER
+ + ETH_GET_VLANTAG_SIZE (msg->peer.eth_type);
- length_computed = msg->length - mme_header_len - 9;
+ length_computed = msg->length - mme_header_len
+ - CP_MSG_CC_RELAY_PAYLOAD_OFFSET;
- if ((*length > ETH_PACKET_MAX_SIZE)
+ if ((*length > ETH_PACKET_GET_MAX_SIZE (msg->peer.eth_type))
|| (*length != length_computed))
{
return false;
@@ -832,7 +835,7 @@ cp_msg_cc_relay_read_payload_header (cp_t *ctx, cp_mme_rx_t *msg)
dbg_assert (ctx);
dbg_assert (msg);
- return cp_msg_mme_read_header_initialised (msg, &fmi, msg->peer.vlan_tag);
+ return cp_msg_mme_read_header_initialised (msg, &fmi);
}
/**
diff --git a/cesar/cp/msg/src/msg_cm.c b/cesar/cp/msg/src/msg_cm.c
index 5ca190350d..31f7a7b666 100644
--- a/cesar/cp/msg/src/msg_cm.c
+++ b/cesar/cp/msg/src/msg_cm.c
@@ -94,11 +94,8 @@ cp_msg_cm_get_pid (cp_t *ctx, cp_mme_rx_t *mme, u8 offset_pid, u8 *pid)
dbg_assert ((mme->peks == CP_MME_PEKS_NONE)
|| (mme->peks == CP_MME_PEKS_SPC_NOT_EMBEDDED));
- uint offset;
- if (mme->peer.vlan_tag)
- offset = HPAV_MME_HEADER_LEN_WITH_VLAN;
- else
- offset = HPAV_MME_HEADER;
+ uint offset = HPAV_MME_HEADER
+ + ETH_GET_VLANTAG_SIZE (mme->peer.eth_type);
*pid = bitstream_direct_read (mme->p_mme + offset + offset_pid, 0, 8);
diff --git a/cesar/cp/msg/src/msg_drv.c b/cesar/cp/msg/src/msg_drv.c
index 23dd601f98..28873b8204 100644
--- a/cesar/cp/msg/src/msg_drv.c
+++ b/cesar/cp/msg/src/msg_drv.c
@@ -467,7 +467,7 @@ cp_msg_drv_sta_set_key_req_receive (cp_t *ctx, cp_mme_rx_t *mme,
bool
cp_msg_drv_sta_set_config_req_receive (
cp_t *ctx, cp_mme_rx_t *mme,
- char config[HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN])
+ char config[HPAV_MME_PAYLOAD_MAX_SIZE])
{
/* Check parameters. */
dbg_assert (ctx);
@@ -479,9 +479,9 @@ cp_msg_drv_sta_set_config_req_receive (
/* Read configuration string. */
uint config_len =
bitstream_read_str (&mme->bitstream, config,
- HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN);
- /* Message must be lower than HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN. */
- if (config_len != HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN)
+ HPAV_MME_PAYLOAD_MAX_SIZE);
+ /* Message must be lower than HPAV_MME_PAYLOAD_MAX_SIZE. */
+ if (config_len != HPAV_MME_PAYLOAD_MAX_SIZE)
/* No check is done for the last character, bitstream_read_str
* will stop when it found it (or when there is no more space). */
return true;
@@ -491,7 +491,7 @@ cp_msg_drv_sta_set_config_req_receive (
bool
cp_msg_drv_sta_set_slave_req_receive (cp_t *ctx, cp_mme_rx_t *mme,
- char config[HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN])
+ char config[HPAV_MME_PAYLOAD_MAX_SIZE])
{
/* Check parameters. */
dbg_assert (ctx);
@@ -503,9 +503,9 @@ cp_msg_drv_sta_set_slave_req_receive (cp_t *ctx, cp_mme_rx_t *mme,
/* Read configuration string. */
uint config_len =
bitstream_read_str (&mme->bitstream, config,
- HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN);
- /* Message must be lower than HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN. */
- if (config_len != HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN)
+ HPAV_MME_PAYLOAD_MAX_SIZE);
+ /* Message must be lower than HPAV_MME_PAYLOAD_MAX_SIZE. */
+ if (config_len != HPAV_MME_PAYLOAD_MAX_SIZE)
/* No check is done for the last character, bitstream_read_str
* will stop when it found it (or when there is no more space). */
return true;
diff --git a/cesar/cp/msg/stub/src/msg_drv.c b/cesar/cp/msg/stub/src/msg_drv.c
index 106275610f..6f71c42478 100644
--- a/cesar/cp/msg/stub/src/msg_drv.c
+++ b/cesar/cp/msg/stub/src/msg_drv.c
@@ -210,7 +210,7 @@ cp_msg_drv_sta_set_key_ind_send (cp_t *ctx, cp_mme_peer_t *peer,
bool
cp_msg_drv_sta_set_config_req_receive (cp_t *ctx, cp_mme_rx_t *mme,
- char config[HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN])
+ char config[HPAV_MME_PAYLOAD_MAX_SIZE])
{
/* Check parameters. */
dbg_assert (ctx);
@@ -247,7 +247,7 @@ cp_msg_drv_sta_get_key_req_receive (cp_t *ctx, cp_mme_rx_t *mme)
bool
cp_msg_drv_sta_set_slave_req_receive (cp_t *ctx, cp_mme_rx_t *mme,
- char config[HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN])
+ char config[HPAV_MME_PAYLOAD_MAX_SIZE])
{
/* Check parameters. */
dbg_assert (ctx);
diff --git a/cesar/cp/msg/test/src/cc_discover_list.c b/cesar/cp/msg/test/src/cc_discover_list.c
index 2ce3e192bc..892779b44d 100644
--- a/cesar/cp/msg/test/src/cc_discover_list.c
+++ b/cesar/cp/msg/test/src/cc_discover_list.c
@@ -52,16 +52,20 @@ test_cc_discover_list_uninit (test_cc_discover_list_t *ctx)
void
test_check_mme_header (test_t test, bitstream_t *s, u8 *buffer, mac_t dmac,
- mac_t smac, u32 vlantag, cp_mmtype_t mmtype,
- uint fmi_nbfrags, uint fmi_nb, uint fmi_fmsn)
+ mac_t smac, u16 eth_type, u16 vlan_tci,
+ cp_mmtype_t mmtype, uint fmi_nbfrags, uint fmi_nb,
+ uint fmi_fmsn)
{
test_within (test);
- bitstream_read_init (s, buffer, ETH_PACKET_MAX_SIZE);
+ bitstream_read_init (s, buffer, ETH_PACKET_GET_MAX_SIZE (eth_type));
test_fail_unless (bitstream_read_large (s, 48) == dmac);
test_fail_unless (bitstream_read_large (s, 48) == smac);
- if (vlantag)
- test_fail_unless (bitstream_read (s, 32) == vlantag);
- test_fail_unless (bitstream_read (s, 16) == swap16(HPAV_MTYPE_MME));
+ if (ETH_IS_VLANTAG (eth_type))
+ {
+ test_fail_unless (bitstream_read (s, 16) == ETH_TYPE_VLAN);
+ test_fail_unless (bitstream_read (s, 16) == vlan_tci);
+ }
+ test_fail_unless (bitstream_read (s, 16) == HPAV_MTYPE_MME);
test_fail_unless (bitstream_read (s, 8) == HPAV_MMV);
test_fail_unless (bitstream_read (s, 16) == mmtype);
test_fail_unless (bitstream_read (s, 4) == fmi_nbfrags);
@@ -72,9 +76,8 @@ test_check_mme_header (test_t test, bitstream_t *s, u8 *buffer, mac_t dmac,
static void
test_change_buffer (bitstream_t *bs, u8 *buffer)
{
- uint header = 19;
- bitstream_set_buffer (bs, buffer + header,
- ETH_PACKET_MAX_SIZE - header);
+ bitstream_set_buffer (bs, buffer + HPAV_MME_HEADER,
+ HPAV_MME_PAYLOAD_MAX_SIZE);
}
void
@@ -89,13 +92,15 @@ test_case__cc_discover_list_req (test_t test)
cp_mme_peer_t peer;
/* configure the Peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
/* Launch the test. */
cp_msg_cc_discover_list_req_send (&ctx.cp, &peer);
test_check_mme_header (test, &s, buffer[0], peer.mac,
cp_sta_own_data_get_mac_address (&ctx.cp),
- peer.vlan_tag, CC_DISCOVER_LIST_REQ, 0, 0, 0);
+ peer.eth_type, peer.vlan_tci,
+ CC_DISCOVER_LIST_REQ, 0, 0, 0);
test_fail_unless (bitstream_read (&s, 32) == 0);
bitstream_finalise (&s);
/* Read it with the correct function. */
@@ -104,7 +109,8 @@ test_case__cc_discover_list_req (test_t test)
mme.p_mme = buffer[0];
test_check_mme_header (test, &mme.bitstream, buffer[0], peer.mac,
cp_sta_own_data_get_mac_address (&ctx.cp),
- peer.vlan_tag, CC_DISCOVER_LIST_REQ, 0, 0, 0);
+ peer.eth_type, peer.vlan_tci,
+ CC_DISCOVER_LIST_REQ, 0, 0, 0);
test_fail_unless (cp_msg_cc_discover_list_req_receive (&ctx.cp, &mme));
}
test_end;
@@ -138,7 +144,8 @@ test_case__cc_discover_list_cnf_send (test_t test)
/* Configure peer. */
peer.mac = 0x123456789ABCull;
peer.tei = 0xa;
- peer.vlan_tag = false;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
/* Configuring the test. */
for (i = 0; i < nb_sta; i++)
@@ -192,7 +199,8 @@ test_case__cc_discover_list_cnf_send (test_t test)
/* Verify. */
test_check_mme_header (test, &bitstream, buffer[0], peer.mac,
cp_sta_own_data_get_mac_address (&ctx.cp),
- peer.vlan_tag, CC_DISCOVER_LIST_CNF, 0, 0, 0);
+ peer.eth_type, peer.vlan_tci,
+ CC_DISCOVER_LIST_CNF, 0, 0, 0);
test_fail_unless (bitstream_read (&bitstream, 8) == nb_sta);
for ( i = 0; i < nb_sta; i++)
{
@@ -258,7 +266,8 @@ test_case__cc_discover_list_cnf_send (test_t test)
/* Configure peer. */
peer.mac = 0x123456789ABCull;
peer.tei = 0xa;
- peer.vlan_tag = false;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
/* Configuring the test. */
@@ -307,7 +316,8 @@ test_case__cc_discover_list_cnf_send (test_t test)
/* Verify. */
test_check_mme_header (test, &bitstream, buffer[0], peer.mac,
cp_sta_own_data_get_mac_address (&ctx.cp),
- peer.vlan_tag, CC_DISCOVER_LIST_CNF, 1, 0, 1);
+ peer.eth_type, peer.vlan_tci,
+ CC_DISCOVER_LIST_CNF, 1, 0, 1);
test_fail_unless (bitstream_read (&bitstream, 8) == nb_sta);
bitstream_init_buffer_cb (
&bitstream,
@@ -331,7 +341,6 @@ test_case__cc_discover_list_cnf_send (test_t test)
bitstream_access (&bitstream, &sta_read.backup_cco_status, 1);
bitstream_access (&bitstream, &sta_read.signal_level, 8);
bitstream_access (&bitstream, &sta_read.average_ble, 8);
-
test_fail_unless (memcmp (&sta_read, &stas[i],
sizeof (cp_msg_cc_discover_list_sta_t))
== 0);
@@ -355,7 +364,8 @@ test_case__cc_discover_list_cnf_send (test_t test)
/* check the header of the second MME. */
test_check_mme_header (test, &bitstream, buffer[1], peer.mac,
cp_sta_own_data_get_mac_address (&ctx.cp),
- peer.vlan_tag, CC_DISCOVER_LIST_CNF, 1, 1, 1);
+ peer.eth_type, peer.vlan_tci,
+ CC_DISCOVER_LIST_CNF, 1, 1, 1);
test_cc_discover_list_uninit (&ctx);
}
@@ -389,7 +399,8 @@ test_case__cc_discover_list_cnf_recv (test_t test)
/* Configure peer. */
peer.mac = 0x1;
peer.tei = 0x1;
- peer.vlan_tag = false;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
/* Configuring the test. */
for (i = 0; i < nb_sta; i++)
@@ -442,13 +453,13 @@ test_case__cc_discover_list_cnf_recv (test_t test)
cp_msg_cc_discover_list_cnf_send_end (&cp, mme);
/* Verify. */
- test_fail_if (*(buffer_first + 19) != nb_sta);
+ test_fail_if (*(buffer_first + HPAV_MME_HEADER) != nb_sta);
test_fail_if (*(buffer_first + 140) != nb_net);
msg.p_mme = buffer_first;
msg.length = 167;
- bitstream_read_init (&msg.bitstream, buffer_first + 19,
- ETH_PACKET_MAX_SIZE - 19);
+ bitstream_read_init (&msg.bitstream, buffer_first + HPAV_MME_HEADER,
+ HPAV_MME_PAYLOAD_MAX_SIZE);
cp_msg_cc_discover_list_cnf_recv_begin_sta (&cp, &msg, &nb_sta_recv);
test_fail_if (nb_sta_recv != nb_sta);
@@ -513,7 +524,8 @@ test_case__cc_discover_list_cnf_recv (test_t test)
/* Configure peer. */
peer.mac = 0x123456789ABCull;
peer.tei = 0xa;
- peer.vlan_tag = false;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
/* Configuring the test. */
@@ -578,8 +590,8 @@ test_case__cc_discover_list_cnf_recv (test_t test)
tail->next = NULL;
/* Copy the first buffer to the blocks. */
- length = ETH_PACKET_MAX_SIZE;
- for (current = head, offset = 19;
+ length = ETH_PACKET_MAX_NOVLAN_SIZE;
+ for (current = head, offset = HPAV_MME_HEADER;
offset < length && current != NULL;
offset += BLK_SIZE, current = current->next)
{
@@ -592,13 +604,13 @@ test_case__cc_discover_list_cnf_recv (test_t test)
/* Copy the second buffer to the blocks. */
tail->length = 348;
- bitstream_memcpy (tail->data, buffer_second + 19, 348);
+ bitstream_memcpy (tail->data, buffer_second + HPAV_MME_HEADER, 348);
/* Read the Fragmented MME. */
msg.p_mme = NULL;
msg.p_frag = (blk_t *) head;
msg.p_frag_current = (blk_t *) head;
- msg.length = ETH_PACKET_MAX_SIZE;
+ msg.length = ETH_PACKET_MAX_NOVLAN_SIZE;
bitstream_read_init (&msg.bitstream, head->data,
BLK_SIZE);
diff --git a/cesar/cp/msg/test/src/mme_frag.c b/cesar/cp/msg/test/src/mme_frag.c
index 5412e5388c..8e1cdf10a2 100644
--- a/cesar/cp/msg/test/src/mme_frag.c
+++ b/cesar/cp/msg/test/src/mme_frag.c
@@ -46,7 +46,7 @@ test_msg_cc_set_tei_map_frag_buffer_change (bitstream_t *ctx, void *user_data)
dbg_assert (ctx);
dbg_assert (user_data);
- bitstream_set_buffer (ctx, (u8*) user_data + 19, 13*8);
+ bitstream_set_buffer (ctx, (u8*) user_data + HPAV_MME_HEADER, 13*8);
}
void
@@ -90,7 +90,8 @@ test_case_msg_cc_set_tei_map_frag (test_t test)
test_case_begin (test, "CC_SET_TEI_MAP.IND : Send");
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0x0;
mode = CP_MSG_CC_SET_TEI_MAP_IND_MODE_ADD;
@@ -118,8 +119,8 @@ test_case_msg_cc_set_tei_map_frag (test_t test)
tail->next = NULL;
/* Copy the first buffer to the blocks. */
- length = ETH_PACKET_MAX_SIZE;
- for (current = head, offset = 19;
+ length = ETH_PACKET_GET_MAX_SIZE (peer.eth_type);
+ for (current = head, offset = HPAV_MME_HEADER;
offset < length && current != NULL;
offset += BLK_SIZE, current = current->next)
{
@@ -132,13 +133,13 @@ test_case_msg_cc_set_tei_map_frag (test_t test)
/* Copy the second buffer to the blocks. */
tail->length = 348;
- bitstream_memcpy (tail->data, buffer2 + 19, 348);
+ bitstream_memcpy (tail->data, buffer2 + HPAV_MME_HEADER, 348);
/* Read the Fragmented MME. */
msg_rx.p_mme = NULL;
msg_rx.p_frag = (blk_t *) head;
msg_rx.p_frag_current = (blk_t *) head;
- msg_rx.length = ETH_PACKET_MAX_SIZE;
+ msg_rx.length = ETH_PACKET_GET_MAX_SIZE (peer.eth_type);
bitstream_read_init (&msg_rx.bitstream, msg_rx.p_frag->data, BLK_SIZE);
@@ -190,7 +191,6 @@ test_case_msg_cc_handover_info_ind (test_t test)
mac_t mac;
uint status;
cp_tei_t ptei;
- uint buffer2_len;
memset (&cp, 0, sizeof (cp_t));
cp_sta_mgr_init (&cp);
@@ -205,7 +205,8 @@ test_case_msg_cc_handover_info_ind (test_t test)
test_case_begin (test, "CC_HANDOVER_INFO.IND : Send");
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0x0;
nb_sta = 200;
@@ -223,7 +224,6 @@ test_case_msg_cc_handover_info_ind (test_t test)
}
// get the second buffer.
buffer2 = mme_tx->p_mme;
- buffer2_len = mme_tx->length;
cp_msg_cc_handover_info_ind_send_end (&cp, mme_tx);
@@ -236,12 +236,12 @@ test_case_msg_cc_handover_info_ind (test_t test)
head->length = BLK_SIZE;
head->next->length = BLK_SIZE;
- head->next->next->length = (ETH_PACKET_MAX_SIZE
- - HPAV_MME_HEADER - 2 * BLK_SIZE);
- head->next->next->next->length = (nb_sta * 9 + 3 + HPAV_MME_HEADER)
- - ETH_PACKET_MAX_SIZE;
+ head->next->next->length = HPAV_MME_PAYLOAD_MAX_SIZE - (2*BLK_SIZE);
+ head->next->next->next->length = (nb_sta * 9) + 3
+ - HPAV_MME_PAYLOAD_MAX_SIZE;
- for (current = head, offset = 19, length = ETH_PACKET_MAX_SIZE;
+ for (current = head, offset = HPAV_MME_HEADER,
+ length = ETH_PACKET_GET_MAX_SIZE (peer.eth_type);
offset < length && current != NULL;
offset += BLK_SIZE, current = current->next)
{
@@ -250,13 +250,13 @@ test_case_msg_cc_handover_info_ind (test_t test)
}
/* Copy the second buffer to the blocks. */
- bitstream_memcpy (tail->data, buffer2 + 19, tail->length);
+ bitstream_memcpy (tail->data, buffer2 + HPAV_MME_HEADER, tail->length);
/* Read the Fragmented MME. */
msg_rx.p_mme = NULL;
msg_rx.p_frag = (blk_t *) head;
msg_rx.p_frag_current = (blk_t *) head;
- msg_rx.length = ETH_PACKET_MAX_SIZE;
+ msg_rx.length = ETH_PACKET_GET_MAX_SIZE (peer.eth_type);
bitstream_read_init (&msg_rx.bitstream, msg_rx.p_frag->data, BLK_SIZE);
diff --git a/cesar/cp/msg/test/src/msg_cc.c b/cesar/cp/msg/test/src/msg_cc.c
index b4d4ec8a7b..010700eeda 100644
--- a/cesar/cp/msg/test/src/msg_cc.c
+++ b/cesar/cp/msg/test/src/msg_cc.c
@@ -75,7 +75,6 @@ test_read_header (test_t test, bool vlan_present)
if (vlan_present)
bitstream_access (&stream, &header.vlan, 32);
bitstream_access (&stream, &header.mtype, 16);
- header.mtype = swap16 (header.mtype);
bitstream_access (&stream, &header.mmv, 8);
bitstream_access (&stream, &header.mmtype, 16);
bitstream_access (&stream, &header.fmi_inf, 4);
@@ -124,7 +123,8 @@ test_case_msg_cc_who_ru (test_t test)
test_case_begin (test, "CC_WHO_RU.REQ : Send");
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
nid = 0x123456789ABCD2ull;
@@ -327,7 +327,8 @@ test_case_msg_cc_assoc (test_t test)
test_case_begin (test, "CC_ASSOC.REQ : Send");
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0x0;
nid = 0x123456789ABCD3ull;
@@ -628,7 +629,8 @@ test_case_msg_cc_leave (test_t test)
test_case_begin (test, "CC_LEAVE.REQ : Send");
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0x0;
nid = 0x123456789ABCD3ull;
@@ -791,7 +793,8 @@ test_case_msg_cc_set_tei_map (test_t test)
test_case_begin (test, "CC_SET_TEI_MAP.IND : Send");
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0x0;
nid = 0x123456789ABCDull;
@@ -839,7 +842,8 @@ test_case_msg_cc_set_tei_map (test_t test)
test_case_begin (test, "CC_SET_TEI_MAP.IND : Receive");
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0x0;
nid = 0x123456789ABCD3ull;
@@ -1038,7 +1042,8 @@ test_case_msg_cc_handover (test_t test)
/* Send the request. */
peer.mac = 0x123456789ABCull;
peer.tei = 0x2;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
sta = cp_sta_mgr_sta_add (&cp, net, peer.tei, peer.mac);
slab_release (sta);
cp_msg_cc_handover_req_send (&cp, &peer,
@@ -1046,7 +1051,7 @@ test_case_msg_cc_handover (test_t test)
CP_MSG_CC_HANDOVER_REQ_REASON_CCO_SELECTION);
bitstream_read_init (&stream, buffer + HPAV_MME_HEADER,
- HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN);
+ HPAV_MME_PAYLOAD_MAX_SIZE);
data = bitstream_read (&stream, 8);
test_fail_unless (data == 0x1);
test_fail_unless (data == CP_MSG_CC_HANDOVER_REQ_HANDOVER_HARD);
@@ -1142,14 +1147,15 @@ test_case_msg_cc_handover (test_t test)
/* Send the request. */
peer.mac = 0x123456789ABCull;
peer.tei = 0x2;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
sta = cp_sta_mgr_sta_add (&cp, net, peer.tei, peer.mac);
slab_release (sta);
cp_msg_cc_handover_cnf_send (&cp, &peer,
CP_MSG_CC_HANDOVER_CNF_RESULT_ACCEPT);
bitstream_read_init (&stream, buffer + HPAV_MME_HEADER,
- HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN);
+ HPAV_MME_PAYLOAD_MAX_SIZE);
data = bitstream_read (&stream, 8);
test_fail_unless (data == 0x0);
test_fail_unless (data == CP_MSG_CC_HANDOVER_CNF_RESULT_ACCEPT);
@@ -1237,7 +1243,8 @@ test_case_msg_cc_handover (test_t test)
/* Send the request. */
peer.mac = 0x123456789ABCull;
peer.tei = 0x2;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
sta = cp_sta_mgr_sta_add (&cp, net, peer.tei, peer.mac);
slab_release (sta);
@@ -1260,7 +1267,7 @@ test_case_msg_cc_handover (test_t test)
/* Read the MMe. */
bitstream_read_init (&stream, buffer + HPAV_MME_HEADER,
- HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN);
+ HPAV_MME_PAYLOAD_MAX_SIZE);
data = bitstream_read (&stream, 8);
test_fail_unless (data == 0x1);
test_fail_unless (data == CP_MSG_CC_HANDOVER_INFO_IND_RSC_UPDATE_BCCO);
@@ -1428,7 +1435,8 @@ test_case_msg_cc_cco_appoint (test_t test)
peer.mac = 0x123456789ABCull;
peer.tei = 0x2;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
sta = cp_sta_mgr_sta_add (&cp, net, peer.tei, peer.mac);
slab_release (sta);
@@ -1552,7 +1560,8 @@ test_case_msg_cc_cco_appoint (test_t test)
peer.mac = 0x123456789ABCull;
peer.tei = 0x2;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
sta = cp_sta_mgr_sta_add (&cp, net, peer.tei, peer.mac);
slab_release (sta);
diff --git a/cesar/cp/msg/test/src/msg_cm.c b/cesar/cp/msg/test/src/msg_cm.c
index dc937df855..d5e4c0df98 100644
--- a/cesar/cp/msg/test/src/msg_cm.c
+++ b/cesar/cp/msg/test/src/msg_cm.c
@@ -173,7 +173,8 @@ test_case_cm_set_key (test_t test)
test_case_begin (test, "CM_SET_KEY.REQ");
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
nid = 0x123456789ABCDEull;
@@ -249,7 +250,8 @@ test_case_cm_set_key (test_t test)
cp_sta_own_data_set_mac_address (&cp, own_mac_addr);
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
nid = 0x123456789ABCDEull;
@@ -314,7 +316,8 @@ test_case_cm_get_key (test_t test)
test_case_begin (test, "CM_GET_KEY.REQ");
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
nid = 0x123456789ABCDEull;
@@ -361,11 +364,13 @@ test_case_cm_get_key (test_t test)
{
memset (&data, 0, sizeof (cp_msg_cm_get_key_req_t));
- bitstream_direct_write (buffer, 19 * 8, 2, 8);
- msg = cp_msg_mme_read_header (&cp, (u8*)buffer, buffer_len, 0xa, &fmi);
+ bitstream_direct_write (buffer, HPAV_MME_HEADER * 8, 2, 8);
+ msg = cp_msg_mme_read_header (&cp, (u8*)buffer, buffer_len, 0xa,
+ &fmi);
bitstream_finalise (&msg->bitstream);
- bitstream_read_init (&msg->bitstream, buffer + 19, 420 - 19);
+ bitstream_read_init (&msg->bitstream, buffer + HPAV_MME_HEADER,
+ 420 - HPAV_MME_HEADER);
ok = cp_msg_cm_get_key_req_receive (&cp, msg, &data);
test_fail_unless (ok == false);
@@ -377,7 +382,7 @@ test_case_cm_get_key (test_t test)
test_fail_unless (msg->prun.pmn == prun.pmn);
test_fail_unless (msg->prun.your_nonce == prun.my_nonce);
- bitstream_direct_write (buffer, 19 * 8, 0, 8);
+ bitstream_direct_write (buffer, HPAV_MME_HEADER * 8, 0, 8);
slab_release (msg);
}
@@ -429,7 +434,8 @@ test_case_cm_get_key (test_t test)
test_case_begin (test, "CM_GET_KEY.CNF");
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
nid = 0x123456789ABCDEull;
@@ -546,7 +552,8 @@ test_case_cm_get_key (test_t test)
test_begin (test, "Wrong result")
{
memset (&cnf, 0, sizeof (cp_msg_cm_get_key_cnf_t));
- bitstream_direct_write (buffer, 19 * 8, CP_MSG_CM_GET_KEY_CNF_RESULT_NB,
+ bitstream_direct_write (buffer, HPAV_MME_HEADER * 8,
+ CP_MSG_CM_GET_KEY_CNF_RESULT_NB,
8);
msg = cp_msg_mme_read_header (&cp, (u8*)buffer, buffer_len, 0xa, &fmi);
@@ -566,7 +573,7 @@ test_case_cm_get_key (test_t test)
test_fail_unless (msg->prun.pmn == prun.pmn);
test_fail_unless (msg->prun.your_nonce == prun.my_nonce);
- bitstream_direct_write (buffer, 19 * 8,
+ bitstream_direct_write (buffer, HPAV_MME_HEADER * 8,
CP_MSG_CM_GET_KEY_CNF_RESULT_KEY_GRANTED,
8);
slab_release (msg);
@@ -871,7 +878,7 @@ test_case_cm_get_key_get_pid (test_t test)
data = 0x23456789ABCDull;
bitstream_access (&bitstream, &data, 48);
/* Mtype. */
- data = swap16(HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&bitstream, &data, 16);
/* MMV. */
data = HPAV_MMV;
@@ -920,7 +927,7 @@ test_case_cm_get_key_get_pid (test_t test)
data = 0x23456789ABCDull;
bitstream_access (&bitstream, &data, 48);
/* Mtype. */
- data = swap16(HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&bitstream, &data, 16);
/* MMV. */
data = HPAV_MMV;
@@ -977,7 +984,7 @@ test_case_cm_get_key_cnf_get_pid (test_t test)
data = 0x23456789ABCDull;
bitstream_access (&bitstream, &data, 48);
/* Mtype. */
- data = swap16(HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&bitstream, &data, 16);
/* MMV. */
data = HPAV_MMV;
@@ -1014,7 +1021,8 @@ test_case_cm_get_key_cnf_get_pid (test_t test)
mme_rx.p_mme = buffer;
mme_rx.peks = CP_MME_PEKS_SPC_NOT_EMBEDDED;
mme_rx.length = 60;
- mme_rx.peer.vlan_tag = 0;
+ mme_rx.peer.eth_type = HPAV_MTYPE_MME;
+ mme_rx.peer.vlan_tci = 0x0;
test_case_begin (test, "Get PID");
@@ -1034,7 +1042,7 @@ test_case_cm_get_key_cnf_get_pid (test_t test)
data = 0x23456789ABCDull;
bitstream_access (&bitstream, &data, 48);
/* Mtype. */
- data = swap16(HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&bitstream, &data, 16);
/* MMV. */
data = HPAV_MMV;
@@ -1071,7 +1079,8 @@ test_case_cm_get_key_cnf_get_pid (test_t test)
mme_rx.length = 60;
mme_rx.p_mme = buffer;
mme_rx.peks = CP_MME_PEKS_SPC_NOT_EMBEDDED;
- mme_rx.peer.vlan_tag = 0;
+ mme_rx.peer.eth_type = HPAV_MTYPE_MME;
+ mme_rx.peer.vlan_tci = 0x0;
test_begin (test, "PID = 0x3")
{
@@ -1100,7 +1109,7 @@ test_case_cm_set_key_get_pid (test_t test)
data = 0x23456789ABCDull;
bitstream_access (&bitstream, &data, 48);
/* Mtype. */
- data = swap16(HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&bitstream, &data, 16);
/* MMV. */
data = HPAV_MMV;
@@ -1146,7 +1155,7 @@ test_case_cm_set_key_get_pid (test_t test)
data = 0x23456789ABCDull;
bitstream_access (&bitstream, &data, 48);
/* Mtype. */
- data = swap16(HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&bitstream, &data, 16);
/* MMV. */
data = HPAV_MMV;
@@ -1291,7 +1300,8 @@ test_case_cm_mme_error_ind (test_t test)
/* Configuring the peer. */
peer.mac = 0x12345678ABCull;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 12;
/* Configuring the data. */
@@ -1303,7 +1313,7 @@ test_case_cm_mme_error_ind (test_t test)
cp_msg_cm_mme_error_ind_send (&cp, &peer, &data);
/* Verifying data. */
- bitstream_read_init (&stream, buffer + 19, 6);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER, 6);
/* reason */
bitstream_access (&stream, &stream_data, 8);
@@ -1333,7 +1343,9 @@ test_case_cm_mme_error_ind (test_t test)
memset (&data, 0, sizeof (cp_msg_cm_mme_error_ind_t));
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, buffer + 19, 60);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, buffer + HPAV_MME_HEADER,
+ mme.length);
answer = cp_msg_cm_mme_error_ind_receive (&cp, &mme, &data);
test_fail_unless (answer == true);
@@ -1354,11 +1366,13 @@ test_case_cm_mme_error_ind (test_t test)
/* Initialised the data. */
memset (&data, 0, sizeof (cp_msg_cm_mme_error_ind_t));
- bitstream_direct_write (buffer, 19*8, CP_MSG_CM_MME_ERROR_IND_REASON_NB, 8);
+ bitstream_direct_write (buffer, HPAV_MME_HEADER*8,
+ CP_MSG_CM_MME_ERROR_IND_REASON_NB, 8);
mme.p_mme = buffer;
mme.length = 60;
- bitstream_read_init (&mme.bitstream, buffer + 19, 60);
+ bitstream_read_init (&mme.bitstream, buffer + HPAV_MME_HEADER,
+ mme.length);
answer = cp_msg_cm_mme_error_ind_receive (&cp, &mme, &data);
test_fail_unless (answer == false);
@@ -1367,8 +1381,8 @@ test_case_cm_mme_error_ind (test_t test)
test_fail_unless (data.rx_mmtype == CC_ASSOC_REQ);
test_fail_unless (data.offset == 10);
- bitstream_direct_write (buffer, 19*8,
- CP_MSG_CM_MME_ERROR_IND_REASON_MME_NOT_SUPPORTED, 8);
+ bitstream_direct_write (buffer, HPAV_MME_HEADER*8,
+ CP_MSG_CM_MME_ERROR_IND_REASON_MME_NOT_SUPPORTED, 8);
}
test_end;
@@ -1384,7 +1398,8 @@ test_case_cm_mme_error_ind (test_t test)
mme.p_mme = buffer;
mme.length = 60;
- bitstream_read_init (&mme.bitstream, buffer + 19, 60);
+ bitstream_read_init (&mme.bitstream, buffer + HPAV_MME_HEADER,
+ mme.length);
answer = cp_msg_cm_mme_error_ind_receive (&cp, &mme, &data);
test_fail_unless (answer == false);
@@ -1416,7 +1431,8 @@ test_case_cm_mme_error_ind (test_t test)
mme.p_mme = buffer;
mme.length = 60;
- bitstream_read_init (&mme.bitstream, buffer + 19, 60);
+ bitstream_read_init (&mme.bitstream, buffer + HPAV_MME_HEADER,
+ mme.length);
answer = cp_msg_cm_mme_error_ind_receive (&cp, &mme, &data);
test_fail_unless (answer == false);
@@ -1444,7 +1460,8 @@ test_case_cm_mme_error_ind (test_t test)
mme.p_mme = buffer;
mme.length = 60;
- bitstream_read_init (&mme.bitstream, buffer + 19, 60);
+ bitstream_read_init (&mme.bitstream, buffer + HPAV_MME_HEADER,
+ mme.length);
answer = cp_msg_cm_mme_error_ind_receive (&cp, &mme, &data);
test_fail_unless (answer == false);
@@ -1472,13 +1489,14 @@ test_case_cm_sc_join (test_t test)
/* Configuring the peer. */
peer.mac = 0x12345678ABCull;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 12;
cp_msg_cm_sc_join_req_send (&cp, &peer);
/* Verifying data. */
- bitstream_read_init (&stream, buffer + 19, 1);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER, 1);
/* CCo cap. */
bitstream_access (&stream, &stream_data, 2);
@@ -1499,7 +1517,8 @@ test_case_cm_sc_join (test_t test)
/* Configuring the MME context.. */
mme.p_mme = buffer;
mme.length = 60;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sc_join_req_receive (&cp, &mme, &cco_cap);
@@ -1518,8 +1537,10 @@ test_case_cm_sc_join (test_t test)
/* Configuring the MME context.. */
mme.p_mme = buffer;
mme.length = 60;
- bitstream_direct_write (buffer, 19*8, CP_CCO_LEVEL_MAX + 1, 8);
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ bitstream_direct_write (buffer, HPAV_MME_HEADER*8,
+ CP_CCO_LEVEL_MAX + 1, 8);
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sc_join_req_receive (&cp, &mme, &cco_cap);
@@ -1541,7 +1562,8 @@ test_case_cm_sc_join (test_t test)
/* Configuring the peer. */
peer.mac = 0x12345678ABCull;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 12;
/* configure the structure data. */
@@ -1557,7 +1579,7 @@ test_case_cm_sc_join (test_t test)
cp_msg_cm_sc_join_cnf_send (&cp, &peer, &data);
/* Verify the data. */
- bitstream_read_init (&stream, buffer + 19, 60);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER, 60);
/* NID. */
bitstream_access (&stream, &stream_data, 56);
@@ -1607,7 +1629,8 @@ test_case_cm_sc_join (test_t test)
/* Configure the answer comparison. */
memset (&data, 0, sizeof (cp_msg_cm_sc_join_cnf_t));
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sc_join_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == true);
@@ -1633,8 +1656,10 @@ test_case_cm_sc_join (test_t test)
memset (&data, 0, sizeof (cp_msg_cm_sc_join_cnf_t));
- bitstream_direct_write_large (buffer, 19 * 8, nid << 2, 56);
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ bitstream_direct_write_large (buffer, HPAV_MME_HEADER * 8,
+ nid << 2, 56);
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sc_join_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == false);
@@ -1668,7 +1693,8 @@ test_case_cm_amp_map (test_t test)
/* Configuring the peer. */
peer.mac = 0x12345678ABCull;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 12;
/* configure the data. */
@@ -1685,7 +1711,8 @@ test_case_cm_amp_map (test_t test)
cp_msg_cm_amp_map_req_send_end (&cp, mme);
/* Verify data. */
- bitstream_read_init (&stream, buffer + 19, mme->length - 19);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER,
+ mme->length - HPAV_MME_HEADER);
bitstream_access (&stream, &cmp, 16);
test_fail_if (cmp != nb_amp);
@@ -1721,7 +1748,8 @@ test_case_cm_amp_map (test_t test)
mme.p_mme = buffer;
mme.length = 71;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 71 - 19);
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
cp_msg_cm_amp_map_req_receive_begin (&cp, &mme, &nb_amp_recv);
test_fail_if (nb_amp_recv != nb_amp);
@@ -1749,12 +1777,13 @@ test_case_cm_amp_map (test_t test)
/* Configuring the peer. */
peer.mac = 0x12345678ABCull;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 12;
cp_msg_cm_amp_map_cnf_send (&cp, &peer, restype);
- test_fail_if (*(buffer + 19) != restype);
+ test_fail_if (*(buffer + HPAV_MME_HEADER) != restype);
}
test_end;
@@ -1764,11 +1793,13 @@ test_case_cm_amp_map (test_t test)
uint restype = 0;
mme.p_mme = buffer;
+ mme.length = 60;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
cp_msg_cm_amp_map_cnf_receive (&cp, &mme, &restype);
- test_fail_if (*(buffer + 19) != restype);
+ test_fail_if (*(buffer + HPAV_MME_HEADER) != restype);
}
test_end;
}
@@ -1784,13 +1815,14 @@ test_case_cm_brg_info (test_t test)
/* configuring the peer. */
peer.mac = 0x22456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
cp_msg_cm_brg_info_req_send (&cp, &peer);
/* Verifying the data. */
- test_fail_if (*(buffer + 19) != 0);
+ test_fail_if (*(buffer + HPAV_MME_HEADER) != 0);
}
test_end;
@@ -1801,7 +1833,8 @@ test_case_cm_brg_info (test_t test)
mme.p_mme = buffer;
mme.length = 60;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_brg_info_req_receive (&cp, &mme);
test_fail_if (res != true);
@@ -1824,7 +1857,8 @@ test_case_cm_brg_info (test_t test)
/* configuring the peer. */
peer.mac = 0x22456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
/* Configure TEI of the sender. */
@@ -1842,7 +1876,7 @@ test_case_cm_brg_info (test_t test)
/* Verify. */
/* BSF (1) + BTEI (1) + NBDA (1) + NBDA * MAC (6). */
- bitstream_read_init (&stream, buffer + 19,
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER,
1 + 1 + 1 + nbda * 6);
data = 0;
@@ -1889,8 +1923,9 @@ test_case_cm_brg_info (test_t test)
mme.peer.tei = btei;
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19,
- 1 + 1 + 1 + nbda * 6);
+ mme.length = 1 + 1 + 1 + nbda * 6 + HPAV_MME_HEADER;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_brg_info_cnf_receive_begin (&cp, &mme, &bsf_recv,
&nbda_recv);
@@ -1913,7 +1948,7 @@ test_case_cm_brg_info (test_t test)
*(buffer + 20) = 0x0;
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19,
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
1 + 1 + 1 + nbda * 6);
res = cp_msg_cm_brg_info_cnf_receive_begin (&cp, &mme, &bsf_recv,
@@ -1930,8 +1965,9 @@ test_case_cm_brg_info (test_t test)
*(buffer + 27) = 0;
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19,
- 1 + 1 + 1 + nbda * 6);
+ mme.length = 1 + 1 + 1 + nbda * 6 + HPAV_MME_HEADER;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_brg_info_cnf_receive_begin (&cp, &mme, &bsf_recv,
&nbda_recv);
@@ -1955,13 +1991,14 @@ test_case_cm_sta_cap (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
cp_msg_cm_sta_cap_req_send (&cp, &peer);
/* Verifying the data. */
- test_fail_if (*(buffer + 19) != 0);
+ test_fail_if (*(buffer + HPAV_MME_HEADER) != 0);
}
test_end;
@@ -1972,7 +2009,8 @@ test_case_cm_sta_cap (test_t test)
mme.p_mme = buffer;
mme.length = 60;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sta_cap_req_receive (&cp, &mme);
test_fail_if (res != true);
@@ -1988,7 +2026,8 @@ test_case_cm_sta_cap (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
/* configuring the data. */
@@ -2015,7 +2054,8 @@ test_case_cm_sta_cap (test_t test)
/* Verify. */
memset (&data_cmp, 0, sizeof (cp_msg_cm_sta_cap_cnf_t));
- bitstream_read_init (&stream, buffer + 19, 60 - 19);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER,
+ 60 - HPAV_MME_HEADER);
bitstream_access(&stream, &data_cmp.av_version, 8);
bitstream_access(&stream, &data_cmp.mac, 48);
bitstream_access(&stream, &data_cmp.oui, 24);
@@ -2049,13 +2089,15 @@ test_case_cm_sta_cap (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
memset (&data, 0, sizeof (cp_msg_cm_sta_cap_cnf_t));
mme.p_mme = buffer;
- mme.length = 60 - 19;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, mme.length);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sta_cap_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == true);
@@ -2087,9 +2129,12 @@ test_case_cm_sta_cap (test_t test)
bool res;
memset (&data, 0, sizeof (cp_msg_cm_sta_cap_cnf_t));
- bitstream_direct_write (buffer, 19*8, CP_AV_VERSION + 1, 8);
+ bitstream_direct_write (buffer, HPAV_MME_HEADER*8,
+ CP_AV_VERSION + 1, 8);
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sta_cap_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == false);
@@ -2112,12 +2157,14 @@ test_case_cm_sta_cap (test_t test)
test_fail_unless (data.implementation_version == 0x1);
- bitstream_direct_write (buffer, 19*8, CP_AV_VERSION, 8);
+ bitstream_direct_write (buffer, HPAV_MME_HEADER*8, CP_AV_VERSION, 8);
bitstream_direct_write_large (buffer, 20*8, MAC_ZERO, 48);
memset (&data, 0, sizeof (cp_msg_cm_sta_cap_cnf_t));
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sta_cap_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == false);
@@ -2146,7 +2193,9 @@ test_case_cm_sta_cap (test_t test)
memset (&data, 0, sizeof (cp_msg_cm_sta_cap_cnf_t));
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sta_cap_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == false);
@@ -2178,7 +2227,9 @@ test_case_cm_sta_cap (test_t test)
memset (&data, 0, sizeof (cp_msg_cm_sta_cap_cnf_t));
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sta_cap_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == false);
@@ -2206,7 +2257,9 @@ test_case_cm_sta_cap (test_t test)
bitstream_direct_write (buffer, 31*8, CP_CCO_LEVEL_MAX + 1, 8);
memset (&data, 0, sizeof (cp_msg_cm_sta_cap_cnf_t));
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sta_cap_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == false);
@@ -2233,7 +2286,9 @@ test_case_cm_sta_cap (test_t test)
bitstream_direct_write (buffer, 32*8, CP_PCO_CAP_MAX + 1, 8);
memset (&data, 0, sizeof (cp_msg_cm_sta_cap_cnf_t));
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sta_cap_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == false);
@@ -2260,7 +2315,9 @@ test_case_cm_sta_cap (test_t test)
bitstream_direct_write (buffer, 33*8, CP_BACKUP_CCO_CAP_MAX + 1, 8);
memset (&data, 0, sizeof (cp_msg_cm_sta_cap_cnf_t));
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sta_cap_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == false);
@@ -2288,7 +2345,9 @@ test_case_cm_sta_cap (test_t test)
CP_MSG_CM_STA_CAP_CNF_HANDOVER_NB, 8);
memset (&data, 0, sizeof (cp_msg_cm_sta_cap_cnf_t));
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sta_cap_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == false);
@@ -2317,7 +2376,9 @@ test_case_cm_sta_cap (test_t test)
CP_MSG_CM_STA_CAP_CNF_TWO_SYM_FC_NB, 8);
memset (&data, 0, sizeof (cp_msg_cm_sta_cap_cnf_t));
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sta_cap_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == false);
@@ -2345,7 +2406,9 @@ test_case_cm_sta_cap (test_t test)
bitstream_direct_write (buffer, 38*8, CP_HOMEPLUG_AV11_MAX + 1, 8);
memset (&data, 0, sizeof (cp_msg_cm_sta_cap_cnf_t));
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sta_cap_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == false);
@@ -2373,7 +2436,9 @@ test_case_cm_sta_cap (test_t test)
CP_HOMEPLUG_AV101_MAX + 1, 8);
memset (&data, 0, sizeof (cp_msg_cm_sta_cap_cnf_t));
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sta_cap_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == false);
@@ -2402,7 +2467,9 @@ test_case_cm_sta_cap (test_t test)
CP_MSG_CM_STA_CAP_CNF_REGULATORY_NB, 8);
memset (&data, 0, sizeof (cp_msg_cm_sta_cap_cnf_t));
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sta_cap_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == false);
@@ -2431,7 +2498,9 @@ test_case_cm_sta_cap (test_t test)
CP_MSG_CM_STA_CAP_CNF_BIDIR_BURST_NB, 8);
memset (&data, 0, sizeof (cp_msg_cm_sta_cap_cnf_t));
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_sta_cap_cnf_receive (&cp, &mme, &data);
test_fail_unless (res == false);
@@ -2467,13 +2536,14 @@ test_case_cm_nw_info (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
cp_msg_cm_nw_info_req_send (&cp, &peer);
/* Verifying the data. */
- test_fail_if (*(buffer + 19) != 0);
+ test_fail_if (*(buffer + HPAV_MME_HEADER) != 0);
}
test_end;
@@ -2484,7 +2554,8 @@ test_case_cm_nw_info (test_t test)
mme.p_mme = buffer;
mme.length = 60;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_nw_info_req_receive (&cp, &mme);
test_fail_if (res != true);
@@ -2505,7 +2576,8 @@ test_case_cm_nw_info (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
/* configuring the data. */
@@ -2527,7 +2599,8 @@ test_case_cm_nw_info (test_t test)
cp_msg_cm_nw_info_cnf_send_end (&cp, mme);
/* Verify. */
- bitstream_read_init (&stream, buffer + 19, 60 - 19);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER,
+ 60 - HPAV_MME_HEADER);
bitstream_access (&stream, &nb_nw, 8);
test_fail_if (nb_nw != numnw);
@@ -2577,7 +2650,9 @@ test_case_cm_nw_info (test_t test)
}
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 60 - 19);
+ mme.length = 60;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_nw_info_cnf_receive_begin (&cp, &mme, &nb_nw);
@@ -2611,7 +2686,8 @@ test_case_cm_nw_info (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
data.nid = nid;
@@ -2629,7 +2705,8 @@ test_case_cm_nw_info (test_t test)
rx_mme.p_mme = buffer;
rx_mme.length = 60;
bitstream_direct_write_large (buffer, 20*8, nid << 2, 56);
- bitstream_read_init (&rx_mme.bitstream, buffer + 19, 60 - 19);
+ bitstream_read_init (&rx_mme.bitstream, buffer + HPAV_MME_HEADER,
+ rx_mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_nw_info_cnf_receive_begin (&cp, &rx_mme, &nb_nw);
test_fail_unless (res == true);
@@ -2648,7 +2725,8 @@ test_case_cm_nw_info (test_t test)
bitstream_direct_write_large (buffer, 20*8, nid, 56);
bitstream_direct_write (buffer, 28*8, MAC_TEI_UNASSOCIATED, 8);
- bitstream_read_init (&rx_mme.bitstream, buffer + 19, 60 - 19);
+ bitstream_read_init (&rx_mme.bitstream, buffer + HPAV_MME_HEADER,
+ 60 - HPAV_MME_HEADER);
res = cp_msg_cm_nw_info_cnf_receive_begin (&cp, &rx_mme, &nb_nw);
test_fail_unless (res == true);
@@ -2667,7 +2745,8 @@ test_case_cm_nw_info (test_t test)
bitstream_direct_write (buffer, 28*8, 2, 8);
bitstream_direct_write (buffer, 29*8, CM_NW_INFO_CNF_STA_ROLE_NB, 8);
- bitstream_read_init (&rx_mme.bitstream, buffer + 19, 60 - 19);
+ bitstream_read_init (&rx_mme.bitstream, buffer + HPAV_MME_HEADER,
+ 60 - HPAV_MME_HEADER);
res = cp_msg_cm_nw_info_cnf_receive_begin (&cp, &rx_mme, &nb_nw);
test_fail_unless (res == true);
@@ -2686,7 +2765,8 @@ test_case_cm_nw_info (test_t test)
bitstream_direct_write (buffer, 29*8, CM_NW_INFO_CNF_STA_ROLE_STA, 8);
bitstream_direct_write_large (buffer, 30*8, MAC_ZERO, 48);
- bitstream_read_init (&rx_mme.bitstream, buffer + 19, 60 - 19);
+ bitstream_read_init (&rx_mme.bitstream, buffer + HPAV_MME_HEADER,
+ 60 - HPAV_MME_HEADER);
res = cp_msg_cm_nw_info_cnf_receive_begin (&cp, &rx_mme, &nb_nw);
test_fail_unless (res == true);
@@ -2705,7 +2785,8 @@ test_case_cm_nw_info (test_t test)
bitstream_direct_write_large (buffer, 30*8, 0x123456789abcull, 48);
bitstream_direct_write (buffer, 36*8, HPAV_ACCESS_NB, 8);
- bitstream_read_init (&rx_mme.bitstream, buffer + 19, 60 - 19);
+ bitstream_read_init (&rx_mme.bitstream, buffer + HPAV_MME_HEADER,
+ 60 - HPAV_MME_HEADER);
res = cp_msg_cm_nw_info_cnf_receive_begin (&cp, &rx_mme, &nb_nw);
test_fail_unless (res == true);
@@ -2746,7 +2827,8 @@ test_case_cm_hfid (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
/* The MME request shall not have the NID and the HFID because the
@@ -2760,7 +2842,8 @@ test_case_cm_hfid (test_t test)
req_type_cmp = 0;
nid_cmp = 0;
memset (hfid_cmp, 0, CP_HFID_SIZE);
- bitstream_read_init (&stream, buffer + 19, 91 - 19);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER,
+ 91 - HPAV_MME_HEADER);
bitstream_access (&stream, &req_type_cmp, 8);
bitstream_access (&stream, &nid_cmp, 56);
bitstream_read_buf (&stream,(u8 *) hfid_cmp, CP_HFID_SIZE);
@@ -2781,7 +2864,8 @@ test_case_cm_hfid (test_t test)
req_type_cmp = 0;
nid_cmp = 0;
memset (hfid_cmp, 0, CP_HFID_SIZE);
- bitstream_read_init (&stream, buffer + 19, 91 - 19);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER,
+ 91 - HPAV_MME_HEADER);
bitstream_access (&stream, &req_type_cmp, 8);
bitstream_access (&stream, &nid_cmp, 56);
bitstream_read_buf (&stream,(u8 *) hfid_cmp, CP_HFID_SIZE);
@@ -2802,7 +2886,8 @@ test_case_cm_hfid (test_t test)
req_type_cmp = 0;
nid_cmp = 0;
memset (hfid_cmp, 0, CP_HFID_SIZE);
- bitstream_read_init (&stream, buffer + 19, 91 - 19);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER,
+ 91 - HPAV_MME_HEADER);
bitstream_access (&stream, &req_type_cmp, 8);
bitstream_read_buf (&stream,(u8 *) hfid_cmp, CP_HFID_SIZE);
bitstream_finalise (&stream);
@@ -2821,7 +2906,8 @@ test_case_cm_hfid (test_t test)
req_type_cmp = 0;
nid_cmp = 0;
memset (hfid_cmp, 0, CP_HFID_SIZE);
- bitstream_read_init (&stream, buffer + 19, 91 - 19);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER,
+ 91 - HPAV_MME_HEADER);
bitstream_access (&stream, &req_type_cmp, 8);
bitstream_access (&stream, &nid_cmp, 56);
bitstream_read_buf (&stream,(u8 *) hfid_cmp, CP_HFID_SIZE);
@@ -2847,7 +2933,8 @@ test_case_cm_hfid (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
/* The MME request shall not have the NID and the HFID because the
@@ -2863,7 +2950,9 @@ test_case_cm_hfid (test_t test)
memset (hfid_cmp, 0, CP_HFID_SIZE);
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 91 - 19);
+ mme.length = 91;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
cp_msg_cm_hfid_req_receive (&cp, &mme, &req_type_cmp, &nid_cmp,
hfid_cmp);
@@ -2884,7 +2973,9 @@ test_case_cm_hfid (test_t test)
memset (hfid_cmp, 0, CP_HFID_SIZE);
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 91 - 19);
+ mme.length = 91;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
cp_msg_cm_hfid_req_receive (&cp, &mme, &req_type_cmp, &nid_cmp,
hfid_cmp);
@@ -2905,7 +2996,9 @@ test_case_cm_hfid (test_t test)
memset (hfid_cmp, 0, CP_HFID_SIZE);
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 91 - 19);
+ mme.length = 91;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
cp_msg_cm_hfid_req_receive (&cp, &mme, &req_type_cmp, &nid_cmp,
hfid_cmp);
@@ -2926,7 +3019,9 @@ test_case_cm_hfid (test_t test)
memset (hfid_cmp, 0, CP_HFID_SIZE);
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 91 - 19);
+ mme.length = 91;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
cp_msg_cm_hfid_req_receive (&cp, &mme, &req_type_cmp, &nid_cmp,
hfid_cmp);
@@ -2947,12 +3042,14 @@ test_case_cm_hfid (test_t test)
uint req_type;
bool res;
+ mme.length = 60;
for (i = 0; i < COUNT (data); i++)
{
- bitstream_direct_write (buffer, 19*8, data[i][0], 8);
+ bitstream_direct_write (buffer, HPAV_MME_HEADER*8, data[i][0], 8);
bitstream_direct_write_large (buffer, 20*8, data[i][1], 56);
- bitstream_read_init (&mme.bitstream, buffer + 19, 60 - 19);
+ bitstream_read_init (&mme.bitstream, buffer + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_hfid_req_receive (&cp, &mme, &req_type, &nid,
hfid);
@@ -2977,7 +3074,8 @@ test_case_cm_hfid (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
/* Configure the data. */
@@ -2986,7 +3084,8 @@ test_case_cm_hfid (test_t test)
cp_msg_cm_hfid_cnf_send (&cp, &peer, res_type, hfid);
- bitstream_read_init (&stream, buffer + 19, 84 - 19);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER,
+ 84 - HPAV_MME_HEADER);
bitstream_access (&stream, &res_type_cmp, 8);
bitstream_access_str (&stream, hfid_cmp, CP_HFID_SIZE);
bitstream_finalise (&stream);
@@ -3012,7 +3111,9 @@ test_case_cm_hfid (test_t test)
memset (hfid_cmp, 0, CP_HFID_SIZE);
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 84 - 19);
+ mme.length = 84;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_hfid_cnf_receive (&cp, &mme, &res_type_cmp, hfid_cmp);
test_fail_unless (res == true);
@@ -3035,12 +3136,13 @@ test_case_cm_nw_stats (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
cp_msg_cm_nw_stats_req_send (&cp, &peer);
- bitstream_read_init (&stream, buffer + 19, 41);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER, 41);
bitstream_access (&stream, &data, 8);
bitstream_finalise (&stream);
@@ -3055,7 +3157,8 @@ test_case_cm_nw_stats (test_t test)
mme.p_mme = buffer;
mme.length = 60;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 41);
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_nw_stats_req_receive (&cp, &mme);
test_fail_if (res != true);
@@ -3083,7 +3186,8 @@ test_case_cm_nw_stats (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
/* configure the test. */
@@ -3100,7 +3204,8 @@ test_case_cm_nw_stats (test_t test)
cp_msg_cm_nw_stats_cnf_send_end (&cp, mme);
/* verify. */
- bitstream_read_init (&stream, buffer + 19, 8*nb_stats + 1);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER,
+ 8*nb_stats + 1);
bitstream_access (&stream, &nb_stats_cmp, 8);
test_fail_if (nb_stats_cmp != nb_stats);
@@ -3133,7 +3238,9 @@ test_case_cm_nw_stats (test_t test)
/* configure the test. */
mme.p_mme = buffer;
- bitstream_read_init (&mme.bitstream, mme.p_mme + 19, 801);
+ mme.length = 820;
+ bitstream_read_init (&mme.bitstream, mme.p_mme + HPAV_MME_HEADER,
+ mme.length - HPAV_MME_HEADER);
res = cp_msg_cm_nw_stats_cnf_receive_begin (&cp, &mme, &nb_stats_cmp);
test_fail_if (res != true);
@@ -3178,7 +3285,7 @@ test_case_cm_link_stats (test_t test)
mme.p_mme = buffer;
mme.length = 60;
- bitstream_init (&bitstream, buffer, 60, BITSTREAM_WRITE);
+ bitstream_init (&bitstream, buffer, mme.length, BITSTREAM_WRITE);
bitstream_access (&bitstream, &req_type, 8);
bitstream_access (&bitstream, &req_id, 8);
bitstream_access (&bitstream, &nid, 56);
@@ -3190,9 +3297,8 @@ test_case_cm_link_stats (test_t test)
mme.peks = CP_MME_PEKS_SPC_NOT_EMBEDDED;
mme.p_mme = buffer;
- mme.length = 60;
- bitstream_read_init (&mme.bitstream, mme.p_mme, 60);
+ bitstream_read_init (&mme.bitstream, mme.p_mme, mme.length);
res = cp_msg_cm_link_stats_req_receive (&cp, &mme, &data);
test_fail_if (res != true);
@@ -3245,7 +3351,8 @@ test_case_cm_link_stats (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
mme = cp_msg_cm_link_stats_cnf_send_begin (&cp, &peer, req_id,
@@ -3255,7 +3362,7 @@ test_case_cm_link_stats (test_t test)
cp_msg_cm_link_stats_cnf_send_end (&cp, mme);
/* verify. */
- bitstream_read_init (&stream, buffer+19, 60);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER, 60);
bitstream_access (&stream, &req_id, 8);
bitstream_access (&stream, &res_type, 8);
bitstream_access (&stream, &beacon_period_cnt, 16);
@@ -3321,7 +3428,8 @@ test_case_cm_link_stats (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
mme = cp_msg_cm_link_stats_cnf_send_begin (&cp, &peer, req_id,
@@ -3331,7 +3439,7 @@ test_case_cm_link_stats (test_t test)
CM_LINK_STATS_TLFLAG_RECEIVE);
cp_msg_cm_link_stats_cnf_send_end (&cp, mme);
/* verify. */
- bitstream_read_init (&stream, buffer+19, 60);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER, 60);
bitstream_access (&stream, &req_id, 8);
bitstream_access (&stream, &res_type, 8);
bitstream_access (&stream, &beacon_period_cnt, 16);
@@ -3392,7 +3500,8 @@ test_case_cm_link_stats (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
mme = cp_msg_cm_link_stats_cnf_send_begin (&cp, &peer, req_id,
@@ -3402,7 +3511,7 @@ test_case_cm_link_stats (test_t test)
cp_msg_cm_link_stats_cnf_send_end (&cp, mme);
/* verify. */
- bitstream_read_init (&stream, buffer+19, 60);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER, 60);
bitstream_access (&stream, &req_id, 8);
bitstream_access (&stream, &res_type, 8);
bitstream_access (&stream, &beacon_period_cnt, 16);
@@ -3444,7 +3553,8 @@ test_case_cm_link_stats (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
mme = cp_msg_cm_link_stats_cnf_send_begin (&cp, &peer, req_id,
@@ -3454,7 +3564,7 @@ test_case_cm_link_stats (test_t test)
cp_msg_cm_link_stats_cnf_send_end (&cp, mme);
/* verify. */
- bitstream_read_init (&stream, buffer+19, 60);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER, 60);
bitstream_access (&stream, &req_id, 8);
bitstream_access (&stream, &res_type, 8);
bitstream_access (&stream, &beacon_period_cnt, 16);
@@ -3497,7 +3607,8 @@ test_case_cm_link_stats (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
mme = cp_msg_cm_link_stats_cnf_send_begin (&cp, &peer, req_id,
@@ -3507,7 +3618,7 @@ test_case_cm_link_stats (test_t test)
cp_msg_cm_link_stats_cnf_send_end (&cp, mme);
/* verify. */
- bitstream_read_init (&stream, buffer+19, 60);
+ bitstream_read_init (&stream, buffer + HPAV_MME_HEADER, 60);
bitstream_access (&stream, &req_id, 8);
bitstream_access (&stream, &res_type, 8);
bitstream_access (&stream, &beacon_period_cnt, 16);
diff --git a/cesar/cp/msg/test/src/msg_drv.c b/cesar/cp/msg/test/src/msg_drv.c
index 2ec1fc09b4..41920140ba 100644
--- a/cesar/cp/msg/test/src/msg_drv.c
+++ b/cesar/cp/msg/test/src/msg_drv.c
@@ -845,7 +845,7 @@ test_case_drv_sta_set_config (test_t test)
bitstream_read_init (&rx.bitstream, &buffer_ref, rx.length);
- char buffer[HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN];
+ char buffer[HPAV_MME_PAYLOAD_MAX_SIZE];
test_fail_unless (cp_msg_drv_sta_set_config_req_receive (&cp, &rx,
buffer)
== true);
@@ -859,7 +859,7 @@ test_case_drv_sta_set_config (test_t test)
rx.length = 1;
bitstream_read_init (&rx.bitstream, &buffer_ref, rx.length);
- char buffer[HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN];
+ char buffer[HPAV_MME_PAYLOAD_MAX_SIZE];
test_fail_unless (cp_msg_drv_sta_set_config_req_receive (&cp, &rx,
buffer)
== true);
diff --git a/cesar/cp/msg/test/src/msg_vs.c b/cesar/cp/msg/test/src/msg_vs.c
index 2231272931..82aecfd977 100644
--- a/cesar/cp/msg/test/src/msg_vs.c
+++ b/cesar/cp/msg/test/src/msg_vs.c
@@ -63,9 +63,8 @@ cp_mme_peer_t peer;
void
test_change_buffer (bitstream_t *ctx, void *user_data)
{
- const uint header_size = (OUI_SIZE + (peer.vlan_tag ?
- HPAV_MME_HEADER_LEN_WITH_VLAN :
- HPAV_MME_HEADER));
+ const uint header_size = (OUI_SIZE + HPAV_MME_HEADER
+ + ETH_GET_VLANTAG_SIZE (peer.eth_type));
u8* ptr;
/* Check parameters. */
@@ -74,7 +73,7 @@ test_change_buffer (bitstream_t *ctx, void *user_data)
/* Set new buffer. */
buffer_idx ++;
ptr = GET_BUFFER(buffer_idx) + header_size;
- bitstream_set_buffer (ctx, ptr, ETH_PACKET_MAX_SIZE - header_size);
+ bitstream_set_buffer (ctx, ptr, HPAV_VS_MME_PAYLOAD_MAX);
/* No more block available. */
if (buffer_idx >= LAST_FRAGMENT)
@@ -85,12 +84,13 @@ static void
test_write_header (bool vlan_present, mme_header_t *pheader,
bitstream_t *pstream, int header_idx)
{
- bitstream_init (pstream, GET_BUFFER(header_idx), ETH_PACKET_MAX_SIZE,
+ bitstream_init (pstream, GET_BUFFER(header_idx),
+ ETH_PACKET_MAX_NOVLAN_SIZE,
BITSTREAM_WRITE);
bitstream_write_large (pstream, pheader->oda, 48);
bitstream_write_large (pstream, pheader->osa, 48);
- bitstream_write (pstream, swap16 (HPAV_MTYPE_MME), 16);
+ bitstream_write (pstream, HPAV_MTYPE_MME, 16);
bitstream_write (pstream, HPAV_MMV, 8);
bitstream_write (pstream, pheader->mmtype, 16);
bitstream_write (pstream, pheader->fmi_inf, 4);
@@ -105,7 +105,8 @@ test_read_header (test_t test, bool vlan_present, mme_header_t *pheader,
mme_header_t *pexpected, bitstream_t *pstream,
int header_idx)
{
- bitstream_init (pstream, GET_BUFFER(header_idx), ETH_PACKET_MAX_SIZE,
+ bitstream_init (pstream, GET_BUFFER(header_idx),
+ ETH_PACKET_MAX_NOVLAN_SIZE,
BITSTREAM_READ);
pheader->oda = bitstream_read_large (pstream, 48);
@@ -113,7 +114,6 @@ test_read_header (test_t test, bool vlan_present, mme_header_t *pheader,
if (vlan_present)
pheader->vlan = bitstream_read (pstream, 32);
pheader->mtype = bitstream_read (pstream, 16);
- pheader->mtype = swap16 (pheader->mtype);
pheader->mmv = bitstream_read (pstream, 8);
pheader->mmtype = bitstream_read (pstream, 16);
pheader->fmi_inf = bitstream_read (pstream, 4);
@@ -211,8 +211,8 @@ test_case_msg_vs_get_tonemap (test_t test)
cp_msg_vs_get_tonemap_cnf_send (&cp, &peer, result,
beacon_delta, int_id,
tms, tmi);
- test_fail_if (mme_length !=
- 19+3+8+tmi_length+1+3*tms->intervals->intervals_nb+3+768);
+ test_fail_if (mme_length != HPAV_MME_HEADER + 3 + 8 + tmi_length + 1
+ + 3*tms->intervals->intervals_nb + 3 + 768);
/* Expected header */
expected.oda = peer.mac;
@@ -509,7 +509,8 @@ test_case_msg_vs_get_tonemap (test_t test)
bitstream_finalise (&stream);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (bitstream_read (&rx_mme->bitstream, OUI_SIZE_BITS)
== SPC_OUI);
@@ -530,7 +531,8 @@ test_case_msg_vs_get_tonemap (test_t test)
/*********************************/
bitstream_direct_write_large (first_mme, 152, MAC_ZERO, 48);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_TONEMAP_REQ);
data = cp_msg_vs_get_tonemap_req_receive (&cp, rx_mme, &mac_addr, &tmi,
@@ -544,7 +546,8 @@ test_case_msg_vs_get_tonemap (test_t test)
/*********************************/
bitstream_direct_write_large (first_mme, 152, MAC_BROADCAST, 48);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_TONEMAP_REQ);
data = cp_msg_vs_get_tonemap_req_receive (&cp, rx_mme, &mac_addr, &tmi,
@@ -560,7 +563,8 @@ test_case_msg_vs_get_tonemap (test_t test)
bitstream_direct_write (first_mme, 200,
CP_MSG_VS_GET_TONEMAP_TMI_RSVD_MAX, 8);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_TONEMAP_REQ);
data = cp_msg_vs_get_tonemap_req_receive (&cp, rx_mme, &mac_addr,
@@ -577,7 +581,8 @@ test_case_msg_vs_get_tonemap (test_t test)
bitstream_direct_write (first_mme, 216,
CP_MSG_VS_GET_TONEMAP_REQ_DIRECTION_NB, 8);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_TONEMAP_REQ);
data = cp_msg_vs_get_tonemap_req_receive (&cp, rx_mme, &mac_addr,
@@ -843,7 +848,8 @@ test_case_msg_vs_get_snr (test_t test)
bitstream_finalise (&stream);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_SNR_REQ);
test_fail_unless (bitstream_read (&rx_mme->bitstream, OUI_SIZE_BITS)
@@ -864,7 +870,8 @@ test_case_msg_vs_get_snr (test_t test)
/*********************************/
bitstream_direct_write_large (first_mme, 152, MAC_ZERO, 48);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_SNR_REQ);
data = cp_msg_vs_get_snr_req_receive (&cp, rx_mme, &mac_addr,
@@ -879,7 +886,8 @@ test_case_msg_vs_get_snr (test_t test)
/*********************************/
bitstream_direct_write_large (first_mme, 152, MAC_BROADCAST, 48);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_SNR_REQ);
data = cp_msg_vs_get_snr_req_receive (&cp, rx_mme, &mac_addr,
@@ -896,7 +904,8 @@ test_case_msg_vs_get_snr (test_t test)
bitstream_direct_write (first_mme, 200,
CP_MSG_VS_GET_SNR_REQ_INT_RSVD_MAX , 8);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_SNR_REQ);
data = cp_msg_vs_get_snr_req_receive (&cp, rx_mme, &mac_addr,
@@ -914,7 +923,8 @@ test_case_msg_vs_get_snr (test_t test)
bitstream_direct_write (first_mme, 216,
CP_MSG_VS_GET_SNR_REQ_CARRIER_GR_NB, 8);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_SNR_REQ);
data = cp_msg_vs_get_snr_req_receive (&cp, rx_mme, &mac_addr,
@@ -1059,7 +1069,8 @@ test_case_msg_vs_get_spectrum (test_t test)
bitstream_finalise (&stream);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_SPECTRUM_REQ);
test_fail_unless (bitstream_read (&rx_mme->bitstream, OUI_SIZE_BITS)
@@ -1078,7 +1089,8 @@ test_case_msg_vs_get_spectrum (test_t test)
/*********************************/
bitstream_direct_write_large (first_mme, 152, MAC_ZERO, 48);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_SPECTRUM_REQ);
data = cp_msg_vs_get_spectrum_req_receive (&cp, rx_mme, &mac_addr,
@@ -1092,7 +1104,8 @@ test_case_msg_vs_get_spectrum (test_t test)
/*********************************/
bitstream_direct_write_large (first_mme, 152, MAC_BROADCAST, 48);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_SPECTRUM_REQ);
data = cp_msg_vs_get_spectrum_req_receive (&cp, rx_mme, &mac_addr,
@@ -1108,7 +1121,8 @@ test_case_msg_vs_get_spectrum (test_t test)
bitstream_direct_write (first_mme, 200,
CP_MSG_VS_GET_SPECTRUM_REQ_CARRIER_GR_RSVD_MAX, 8);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_SPECTRUM_REQ);
data = cp_msg_vs_get_spectrum_req_receive (&cp, rx_mme, &mac_addr,
@@ -1241,7 +1255,8 @@ test_case_msg_vs_get_link_stats (test_t test)
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_LINK_STATS_REQ);
test_fail_unless (bitstream_read (&rx_mme->bitstream, OUI_SIZE_BITS)
@@ -1268,7 +1283,8 @@ test_case_msg_vs_get_link_stats (test_t test)
bitstream_direct_write(first_mme, 152,
CP_MSG_VS_GET_LINK_STATS_REQ_REQTYPE_NB, 8);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_LINK_STATS_REQ);
data = cp_msg_vs_get_link_stats_req_receive (&cp, rx_mme, &rx_data);
@@ -1287,7 +1303,8 @@ test_case_msg_vs_get_link_stats (test_t test)
CP_MSG_VS_GET_LINK_STATS_REQ_TLFLAG_NB, 8);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_LINK_STATS_REQ);
data = cp_msg_vs_get_link_stats_req_receive (&cp, rx_mme, &rx_data);
@@ -1305,7 +1322,8 @@ test_case_msg_vs_get_link_stats (test_t test)
bitstream_direct_write (first_mme, 240,
CP_MSG_VS_GET_LINK_STATS_REQ_MGMTFLAG_NB, 8);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_LINK_STATS_REQ);
data = cp_msg_vs_get_link_stats_req_receive (&cp, rx_mme, &rx_data);
@@ -1322,7 +1340,8 @@ test_case_msg_vs_get_link_stats (test_t test)
8);
bitstream_direct_write_large (first_mme, 248, MAC_ZERO, 48);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_LINK_STATS_REQ);
data = cp_msg_vs_get_link_stats_req_receive (&cp, rx_mme, &rx_data);
@@ -1336,7 +1355,8 @@ test_case_msg_vs_get_link_stats (test_t test)
/*********************************/
bitstream_direct_write_large (first_mme, 248, MAC_BROADCAST, 48);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_LINK_STATS_REQ);
data = cp_msg_vs_get_link_stats_req_receive (&cp, rx_mme, &rx_data);
@@ -1481,7 +1501,8 @@ test_case_msg_vs_get_stats (test_t test)
bitstream_finalise (&stream);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, first_mme, ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, first_mme,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
test_fail_unless (rx_mme->mmtype == VS_GET_STATS_REQ);
test_fail_unless (bitstream_read (&rx_mme->bitstream, OUI_SIZE_BITS)
@@ -1508,7 +1529,8 @@ test_case_msg_vs_get_stats (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
/* configure the test. */
@@ -1519,7 +1541,7 @@ test_case_msg_vs_get_stats (test_t test)
CP_MSG_VS_GET_STATS_CNF_RESULT_FAILURE);
cp_msg_vs_get_stats_cnf_send_end (&cp, mme);
/* verify. */
- bitstream_read_init (&stream, first_mme + 19, 1024);
+ bitstream_read_init (&stream, first_mme + HPAV_MME_HEADER, 1024);
bitstream_access (&stream, &oui, 24);
bitstream_access (&stream, &result, 8);
bitstream_access (&stream, &nb_pages, 8);
@@ -1560,7 +1582,8 @@ test_case_msg_vs_get_stats (test_t test)
/* configuring the peer. */
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = 0xA;
/* configure the test. */
@@ -1573,7 +1596,7 @@ test_case_msg_vs_get_stats (test_t test)
/* verify. */
char buf_str[1024];
- bitstream_read_init (&stream, first_mme+19, 1024);
+ bitstream_read_init (&stream, first_mme + HPAV_MME_HEADER, 1024);
bitstream_access (&stream, &oui, 24);
bitstream_access (&stream, &result, 8);
bitstream_access (&stream, &nb_pages, 8);
@@ -1623,7 +1646,8 @@ test_case_msg_vs_get_ce_stats_req_receive_test_case (test_t test,
bitstream_finalise (&stream);
/* Receive MME. */
- rx_mme = cp_msg_mme_read_header (&cp, GET_BUFFER(0), ETH_PACKET_MAX_SIZE,
+ rx_mme = cp_msg_mme_read_header (&cp, GET_BUFFER(0),
+ ETH_PACKET_MAX_NOVLAN_SIZE,
peer.tei, &fmi);
dbg_assert (rx_mme->mmtype == VS_GET_CE_STATS_REQ);
test_fail_unless (bitstream_read (&rx_mme->bitstream, OUI_SIZE_BITS)
@@ -1855,8 +1879,8 @@ test_case_msg_vs_get_pb_stats (test_t test)
bitstream_t stream;
mme_header_t header;
mme_header_t expected;
- const int payload_capacity = ETH_PACKET_MAX_SIZE - (OUI_SIZE +
- (peer.vlan_tag ? HPAV_MME_HEADER_LEN_WITH_VLAN : HPAV_MME_HEADER));
+ const int header_size = HPAV_MME_HEADER + OUI_SIZE;
+ const int payload_capacity = ETH_PACKET_MAX_NOVLAN_SIZE - header_size;
test_case_begin (test, "VS_GET_PB_STATS");
@@ -1884,7 +1908,7 @@ test_case_msg_vs_get_pb_stats (test_t test)
/* Receive MME. */
rx_mme = cp_msg_mme_read_header (&cp, GET_BUFFER(0),
- ETH_PACKET_MAX_SIZE, peer.tei,
+ ETH_PACKET_MAX_NOVLAN_SIZE, peer.tei,
&fmi);
dbg_assert (rx_mme->mmtype == VS_GET_PB_STATS_REQ);
test_fail_unless (bitstream_read (&rx_mme->bitstream, OUI_SIZE_BITS)
@@ -1910,12 +1934,22 @@ test_case_msg_vs_get_pb_stats (test_t test)
uint mme_idx;
static u8 ssn = 0;
const int payload_requested = PB_STATS_SIZE_WITH_DATA(i);
+ unsigned int size_last_mme;
INIT_BUFFER();
tx_mme = cp_msg_vs_get_pb_stats_cnf_send_begin (&cp, &peer, i);
cp_msg_vs_get_pb_stats_cnf_send_measure (&cp, tx_mme, 0, i);
cp_msg_vs_get_pb_stats_cnf_send_end (&cp, tx_mme);
+ size_last_mme = payload_requested % payload_capacity;
+ size_last_mme += header_size;
+
+ if (size_last_mme < ETH_PACKET_MIN_SIZE)
+ size_last_mme = ETH_PACKET_MIN_SIZE;
+
+ test_fail_unless (size_last_mme == tx_mme->length,
+ "Wrong length on last mme");
+
/* Expected header */
expected.oda = peer.mac;
expected.osa = own_mac_addr;
@@ -1931,8 +1965,8 @@ test_case_msg_vs_get_pb_stats (test_t test)
{
expected.fmi_mi = mme_idx;
- test_read_header (test, peer.vlan_tag, &header, &expected,
- &stream, mme_idx);
+ test_read_header (test, ETH_IS_VLANTAG (peer.eth_type),
+ &header, &expected, &stream, mme_idx);
}
/* Check Payload */
@@ -1942,16 +1976,16 @@ test_case_msg_vs_get_pb_stats (test_t test)
sar_pb_stats_entry_t *expected = NULL;
buffer_idx = 0;
- bitstream_init (&stream, GET_BUFFER(0), ETH_PACKET_MAX_SIZE,
+ bitstream_init (&stream, GET_BUFFER(0),
+ ETH_PACKET_MAX_NOVLAN_SIZE,
BITSTREAM_READ);
bitstream_init_buffer_cb (
&stream,
(bitstream_buffer_cb_t) test_change_buffer,
NULL);
- bitstream_skip (&stream, 8 * (OUI_SIZE +
- (peer.vlan_tag ?
- HPAV_MME_HEADER_LEN_WITH_VLAN :
- HPAV_MME_HEADER)));
+ bitstream_skip (&stream, BYTES_SIZE_TO_BITS (OUI_SIZE
+ + HPAV_MME_HEADER
+ + ETH_GET_VLANTAG_SIZE (peer.eth_type)));
test_fail_unless (bitstream_read (&stream, 8) == 0,
"Wrong Result");
@@ -2140,16 +2174,16 @@ test_case_msg_vs_get_mactotei (test_t test)
/* Test itself */
buffer_idx = 0;
bitstream_t stream;
- bitstream_init (&stream, GET_BUFFER(0), ETH_PACKET_MAX_SIZE,
+ bitstream_init (&stream, GET_BUFFER(0),
+ ETH_PACKET_MAX_NOVLAN_SIZE,
BITSTREAM_READ);
bitstream_init_buffer_cb (
&stream,
(bitstream_buffer_cb_t) test_change_buffer,
NULL);
- bitstream_skip (&stream, 8 * (OUI_SIZE +
- (peer.vlan_tag ?
- HPAV_MME_HEADER_LEN_WITH_VLAN :
- HPAV_MME_HEADER)));
+ bitstream_skip (&stream, BYTES_SIZE_TO_BITS (OUI_SIZE
+ + HPAV_MME_HEADER
+ + ETH_GET_VLANTAG_SIZE (peer.eth_type)));
test_fail_unless (bitstream_read (&stream, 16) == nb_entry,
"Wrong number of entry");
uint j;
@@ -2185,7 +2219,8 @@ main (int argc, char **argv)
cp_sta_own_data_set_mac_address (&cp, own_mac_addr);
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
peer.tei = MAC_TEI_FOREIGN;
test_case_msg_vs_get_tonemap (test);
diff --git a/cesar/cp/msg/test/src/relay.c b/cesar/cp/msg/test/src/relay.c
index 59217e958f..c74184bff8 100644
--- a/cesar/cp/msg/test/src/relay.c
+++ b/cesar/cp/msg/test/src/relay.c
@@ -46,7 +46,7 @@ struct mme_header_t
{
mac_t oda;
mac_t osa;
- uint vlan;
+ u32 vlan;
cp_mmtype_t mmtype;
uint fmi_nbfrag;
uint fmi_nb;
@@ -54,7 +54,7 @@ struct mme_header_t
};
typedef struct mme_header_t mme_header_t;
-u8 buffer[1518];
+u8 buffer[ETH_PACKET_MAX_SIZE];
cp_t cp;
mac_config_t mac_config;
@@ -84,7 +84,9 @@ test_read_header (test_t test, bitstream_t *stream, mme_header_t *expected,
{
test_fail_if (header_read.oda != expected->oda);
test_fail_if (header_read.osa != expected->osa);
- test_fail_if (mtype != swap16(HPAV_MTYPE_MME));
+ if (vlan_present)
+ test_fail_if (header_read.vlan != expected->vlan);
+ test_fail_if (mtype != HPAV_MTYPE_MME);
test_fail_if (mmv != HPAV_MMV);
test_fail_if (header_read.mmtype != expected->mmtype);
test_fail_if (header_read.fmi_nbfrag != expected->fmi_nbfrag);
@@ -158,11 +160,13 @@ test_this_mme_tx_init (cp_mme_tx_t *mme, cp_mme_peer_t peer,
memset (mme, 0, sizeof (cp_mme_tx_t));
mme->cp = &cp;
mme->p_mme = buffer;
- bitstream_write_init (&mme->bitstream, mme->p_mme, 1518);
+ bitstream_write_init (&mme->bitstream, mme->p_mme,
+ ETH_PACKET_GET_MAX_SIZE (peer.eth_type));
mme->peer.mac = peer.mac;
mme->peer.tei = peer.tei;
- mme->peer.vlan_tag = peer.vlan_tag;
+ mme->peer.eth_type = peer.eth_type;
+ mme->peer.vlan_tci = peer.vlan_tci;
mme->mmtype = mmtype;
}
@@ -183,11 +187,13 @@ test_case_write_relay_header (test_t test)
peer.mac = STA_MAC;
peer.tei = STA_TEI;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0x0;
pco_peer.mac = PCO_MAC;
pco_peer.tei = PCO_TEI;
- pco_peer.vlan_tag = 0;
+ pco_peer.eth_type = HPAV_MTYPE_MME;
+ pco_peer.vlan_tci = 0x0;
test_this_test_init ();
@@ -202,7 +208,7 @@ test_case_write_relay_header (test_t test)
expected.osa = OWN_MAC;
expected.mmtype = CC_RELAY_REQ;
- bitstream_read_init (&bs, buffer, 1518);
+ bitstream_read_init (&bs, buffer, ETH_PACKET_MAX_NOVLAN_SIZE);
test_read_header (test, &bs, &expected, false);
test_fail_unless (bitstream_read_large (&bs, 48) == STA_MAC);
test_fail_unless (bitstream_read (&bs, 8) == STA_TEI);
@@ -223,12 +229,13 @@ test_case_write_relay_header (test_t test)
peer.mac = STA_MAC;
peer.tei = STA_TEI;
- peer.vlan_tag = 1;
+ peer.eth_type = ETH_TYPE_VLAN;
+ peer.vlan_tci = 0x1234;
pco_peer.mac = PCO_MAC;
pco_peer.tei = PCO_TEI;
- pco_peer.vlan_tag = 1;
-
+ pco_peer.eth_type = ETH_TYPE_VLAN;
+ pco_peer.vlan_tci = 0x1234;
test_this_test_init ();
test_this_mme_tx_init (&mme, peer, CC_SET_TEI_MAP_REQ);
@@ -241,9 +248,10 @@ test_case_write_relay_header (test_t test)
expected.oda = PCO_MAC;
expected.osa = OWN_MAC;
expected.mmtype = CC_RELAY_REQ;
- expected.vlan = 1;
+ /* Vlan tag in little endian. */
+ expected.vlan = (0x1234 << 16) + ETH_TYPE_VLAN;
- bitstream_read_init (&bs, buffer, 1518);
+ bitstream_read_init (&bs, buffer, ETH_PACKET_MAX_VLAN_SIZE);
test_read_header (test, &bs, &expected, true);
test_fail_unless (bitstream_read_large (&bs, 48) == STA_MAC);
test_fail_unless (bitstream_read (&bs, 8) == STA_TEI);
@@ -269,7 +277,8 @@ test_case_write_relay (test_t test)
peer.mac = STA_MAC;
peer.tei = STA_TEI;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0;
test_this_test_init ();
test_this_mme_tx_init (&mme, peer, CC_SET_TEI_MAP_REQ);
@@ -288,7 +297,7 @@ test_case_write_relay (test_t test)
test_fail_unless (mme.final_peer.mac == STA_MAC);
test_fail_unless (mme.final_peer.tei == STA_TEI);
- bitstream_read_init (&bs, buffer, 1518);
+ bitstream_read_init (&bs, buffer, ETH_PACKET_MAX_NOVLAN_SIZE);
test_read_header (test, &bs, &expected, false);
test_fail_unless (bitstream_read_large (&bs, 48) == STA_MAC);
test_fail_unless (bitstream_read (&bs, 8) == STA_TEI);
@@ -308,7 +317,8 @@ test_case_write_relay (test_t test)
peer.mac = STA_MAC;
peer.tei = STA_TEI;
- peer.vlan_tag = 1;
+ peer.eth_type = ETH_TYPE_VLAN;
+ peer.vlan_tci = 0x1234;
test_this_test_init ();
test_this_mme_tx_init (&mme, peer, CC_SET_TEI_MAP_REQ);
@@ -320,16 +330,18 @@ test_case_write_relay (test_t test)
expected.oda = PCO_MAC;
expected.osa = OWN_MAC;
expected.mmtype = CC_RELAY_REQ;
- expected.vlan = 1;
test_fail_unless (mme.relay == true);
test_fail_unless (mme.peer.mac == PCO_MAC);
test_fail_unless (mme.peer.tei == PCO_TEI);
+ test_fail_unless (mme.peer.eth_type == HPAV_MTYPE_MME);
+ test_fail_unless (mme.peer.vlan_tci == 0);
test_fail_unless (mme.final_peer.mac == STA_MAC);
test_fail_unless (mme.final_peer.tei == STA_TEI);
- test_fail_unless (mme.final_peer.vlan_tag == 1);
+ test_fail_unless (mme.final_peer.eth_type == ETH_TYPE_VLAN);
+ test_fail_unless (mme.final_peer.vlan_tci == 0x1234);
- bitstream_read_init (&bs, buffer, 1518);
+ bitstream_read_init (&bs, buffer, ETH_PACKET_MAX_NOVLAN_SIZE);
test_read_header (test, &bs, &expected, false);
test_fail_unless (bitstream_read_large (&bs, 48) == STA_MAC);
test_fail_unless (bitstream_read (&bs, 8) == STA_TEI);
@@ -350,7 +362,8 @@ test_case_write_relay (test_t test)
peer.mac = STA_MAC;
peer.tei = STA_TEI;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0;
test_this_test_init ();
test_this_mme_tx_init (&mme, peer, CC_SET_TEI_MAP_REQ);
@@ -391,7 +404,8 @@ test_case_write_frag_header (test_t test)
peer.mac = STA_MAC;
peer.tei = STA_TEI;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0;
test_this_test_init ();
test_this_mme_tx_init (&mme, peer, CC_SET_TEI_MAP_REQ);
@@ -410,7 +424,7 @@ test_case_write_frag_header (test_t test)
test_fail_unless (mme.final_peer.mac == STA_MAC);
test_fail_unless (mme.final_peer.tei == STA_TEI);
- bitstream_read_init (&bs, buffer, 1518);
+ bitstream_read_init (&bs, buffer, ETH_PACKET_MAX_NOVLAN_SIZE);
test_read_header (test, &bs, &expected, false);
test_fail_unless (bitstream_read_large (&bs, 48) == STA_MAC);
test_fail_unless (bitstream_read (&bs, 8) == STA_TEI);
@@ -436,7 +450,8 @@ test_case_write_frag_header (test_t test)
peer.mac = STA_MAC;
peer.tei = STA_TEI;
- peer.vlan_tag = 1;
+ peer.eth_type = ETH_TYPE_VLAN;
+ peer.vlan_tci = 0x2345;
test_this_test_init ();
test_this_mme_tx_init (&mme, peer, CC_SET_TEI_MAP_REQ);
@@ -452,12 +467,12 @@ test_case_write_frag_header (test_t test)
test_fail_unless (mme.relay == true);
test_fail_unless (mme.peer.mac == PCO_MAC);
test_fail_unless (mme.peer.tei == PCO_TEI);
- test_fail_unless (mme.peer.vlan_tag == 0);
test_fail_unless (mme.final_peer.mac == STA_MAC);
test_fail_unless (mme.final_peer.tei == STA_TEI);
- test_fail_unless (mme.final_peer.vlan_tag == 1);
+ test_fail_unless (mme.final_peer.eth_type == ETH_TYPE_VLAN);
+ test_fail_unless (mme.final_peer.vlan_tci == 0x2345);
- bitstream_read_init (&bs, buffer, 1518);
+ bitstream_read_init (&bs, buffer, ETH_PACKET_MAX_NOVLAN_SIZE);
test_read_header (test, &bs, &expected, false);
test_fail_unless (bitstream_read_large (&bs, 48) == STA_MAC);
test_fail_unless (bitstream_read (&bs, 8) == STA_TEI);
@@ -467,7 +482,8 @@ test_case_write_frag_header (test_t test)
expected.oda = STA_MAC;
expected.osa = OWN_MAC;
expected.mmtype = mme.mmtype;
- expected.vlan = 1;
+ /* Vlan tag in little endian. */
+ expected.vlan = (0x2345 << 16) + ETH_TYPE_VLAN;
test_read_header (test, &bs, &expected, true);
test_fail_unless (bitstream_read (&bs, 32) == 0);
bitstream_finalise (&bs);
@@ -487,7 +503,8 @@ test_case_write_frag_header (test_t test)
peer.mac = STA_MAC;
peer.tei = STA_TEI;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0;
test_this_test_init ();
test_this_mme_tx_init (&mme, peer, CC_SET_TEI_MAP_REQ);
@@ -510,7 +527,7 @@ test_case_write_frag_header (test_t test)
test_fail_unless (mme.final_peer.mac == STA_MAC);
test_fail_unless (mme.final_peer.tei == STA_TEI);
- bitstream_read_init (&bs, buffer, 1518);
+ bitstream_read_init (&bs, buffer, ETH_PACKET_MAX_NOVLAN_SIZE);
test_read_header (test, &bs, &expected, false);
test_fail_unless (bitstream_read_large (&bs, 48) == 0);
bitstream_finalise (&bs);
@@ -529,7 +546,8 @@ test_case_write_frag_header (test_t test)
peer.mac = STA_MAC;
peer.tei = STA_TEI;
- peer.vlan_tag = 1;
+ peer.eth_type = ETH_TYPE_VLAN;
+ peer.vlan_tci = 0x3456;
test_this_test_init ();
test_this_mme_tx_init (&mme, peer, CC_SET_TEI_MAP_REQ);
@@ -545,16 +563,20 @@ test_case_write_frag_header (test_t test)
expected.oda = STA_MAC;
expected.osa = OWN_MAC;
expected.mmtype = CC_SET_TEI_MAP_REQ;
+ /* Vlan tag in little endian. */
+ expected.vlan = (0x3456 << 16) + ETH_TYPE_VLAN;
test_fail_unless (mme.relay == false);
test_fail_unless (mme.peer.mac == STA_MAC);
test_fail_unless (mme.peer.tei == STA_TEI);
- test_fail_unless (mme.peer.vlan_tag == 1);
+ test_fail_unless (mme.peer.eth_type == ETH_TYPE_VLAN);
+ test_fail_unless (mme.peer.vlan_tci == 0x3456);
test_fail_unless (mme.final_peer.mac == STA_MAC);
test_fail_unless (mme.final_peer.tei == STA_TEI);
- test_fail_unless (mme.final_peer.vlan_tag == 1);
+ test_fail_unless (mme.final_peer.eth_type == ETH_TYPE_VLAN);
+ test_fail_unless (mme.final_peer.vlan_tci == 0x3456);
- bitstream_read_init (&bs, buffer, 1518);
+ bitstream_read_init (&bs, buffer, ETH_PACKET_MAX_VLAN_SIZE);
test_read_header (test, &bs, &expected, true);
test_fail_unless (bitstream_read_large (&bs, 48) == 0);
bitstream_finalise (&bs);
@@ -579,7 +601,8 @@ test_case_msg_mme_init (test_t test)
peer.mac = STA_MAC;
peer.tei = STA_TEI;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0;
test_this_test_init ();
@@ -597,7 +620,7 @@ test_case_msg_mme_init (test_t test)
test_fail_unless (mme->final_peer.mac == STA_MAC);
test_fail_unless (mme->final_peer.tei == STA_TEI);
- bitstream_read_init (&bs, buffer, 1518);
+ bitstream_read_init (&bs, buffer, ETH_PACKET_MAX_NOVLAN_SIZE);
test_read_header (test, &bs, &expected, false);
test_fail_unless (bitstream_read_large (&bs, 48) == STA_MAC);
test_fail_unless (bitstream_read (&bs, 8) == STA_TEI);
@@ -628,7 +651,8 @@ test_case_msg_mme_init (test_t test)
peer.mac = STA_MAC;
peer.tei = STA_TEI;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0;
test_this_test_init ();
@@ -650,7 +674,7 @@ test_case_msg_mme_init (test_t test)
test_fail_unless (mme->final_peer.mac == STA_MAC);
test_fail_unless (mme->final_peer.tei == STA_TEI);
- bitstream_read_init (&bs, buffer, 1518);
+ bitstream_read_init (&bs, buffer, ETH_PACKET_MAX_NOVLAN_SIZE);
test_read_header (test, &bs, &expected, false);
test_fail_unless (bitstream_read (&bs, 32) == 0);
bitstream_finalise (&bs);
@@ -676,7 +700,8 @@ test_case_msg_mme_init_encrypt (test_t test)
peer.mac = STA_MAC;
peer.tei = STA_TEI;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0;
test_this_test_init ();
@@ -694,7 +719,7 @@ test_case_msg_mme_init_encrypt (test_t test)
test_fail_unless (mme->final_peer.mac == STA_MAC);
test_fail_unless (mme->final_peer.tei == STA_TEI);
- bitstream_read_init (&bs, buffer, 1518);
+ bitstream_read_init (&bs, buffer, ETH_PACKET_MAX_NOVLAN_SIZE);
test_read_header (test, &bs, &expected, false);
test_fail_unless (bitstream_read_large (&bs, 48) == STA_MAC);
test_fail_unless (bitstream_read (&bs, 8) == STA_TEI);
@@ -722,7 +747,8 @@ test_case_msg_mme_init_encrypt (test_t test)
peer.mac = STA_MAC;
peer.tei = STA_TEI;
- peer.vlan_tag = 1;
+ peer.eth_type = ETH_TYPE_VLAN;
+ peer.vlan_tci = 0x4567;
test_this_test_init ();
@@ -732,18 +758,17 @@ test_case_msg_mme_init_encrypt (test_t test)
memset (&expected, 0, sizeof (mme_header_t));
expected.oda = PCO_MAC;
expected.osa = OWN_MAC;
- expected.vlan = 1;
expected.mmtype = CC_RELAY_REQ;
test_fail_unless (mme->relay == true);
test_fail_unless (mme->peer.mac == PCO_MAC);
test_fail_unless (mme->peer.tei == PCO_TEI);
- test_fail_unless (mme->peer.vlan_tag == 0);
test_fail_unless (mme->final_peer.mac == STA_MAC);
test_fail_unless (mme->final_peer.tei == STA_TEI);
- test_fail_unless (mme->final_peer.vlan_tag == 1);
+ test_fail_unless (mme->final_peer.eth_type == ETH_TYPE_VLAN);
+ test_fail_unless (mme->final_peer.vlan_tci == 0x4567);
- bitstream_read_init (&bs, buffer, 1518);
+ bitstream_read_init (&bs, buffer, ETH_PACKET_MAX_NOVLAN_SIZE);
test_read_header (test, &bs, &expected, false);
test_fail_unless (bitstream_read_large (&bs, 48) == STA_MAC);
test_fail_unless (bitstream_read (&bs, 8) == STA_TEI);
@@ -753,6 +778,8 @@ test_case_msg_mme_init_encrypt (test_t test)
expected.oda = STA_MAC;
expected.osa = OWN_MAC;
expected.mmtype = mme->mmtype;
+ /* Vlan tag in little endian. */
+ expected.vlan = (0x4567 << 16) + ETH_TYPE_VLAN;
test_read_header (test, &bs, &expected, true);
test_fail_unless (bitstream_read (&bs, 32) == 0);
bitstream_finalise (&bs);
@@ -773,7 +800,8 @@ test_case_msg_mme_init_encrypt (test_t test)
peer.mac = PCO_MAC;
peer.tei = PCO_TEI;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0;
test_this_test_init ();
@@ -791,7 +819,7 @@ test_case_msg_mme_init_encrypt (test_t test)
test_fail_unless (mme->final_peer.mac == PCO_MAC);
test_fail_unless (mme->final_peer.tei == PCO_TEI);
- bitstream_read_init (&bs, buffer, 1518);
+ bitstream_read_init (&bs, buffer, ETH_PACKET_MAX_NOVLAN_SIZE);
test_read_header (test, &bs, &expected, false);
test_fail_unless (bitstream_read (&bs, 32) == 0);
bitstream_finalise (&bs);
@@ -817,7 +845,8 @@ test_case_msg_mme_change_buffer_tx (test_t test)
peer.mac = STA_MAC;
peer.tei = STA_TEI;
- peer.vlan_tag = 0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0;
test_this_test_init ();
@@ -844,7 +873,7 @@ test_case_msg_mme_change_buffer_tx (test_t test)
test_fail_unless (mme->final_peer.mac == STA_MAC);
test_fail_unless (mme->final_peer.tei == STA_TEI);
- bitstream_read_init (&bs, buffer, 1518);
+ bitstream_read_init (&bs, buffer, ETH_PACKET_MAX_NOVLAN_SIZE);
test_read_header (test, &bs, &expected, false);
test_fail_unless (bitstream_read_large (&bs, 48) == STA_MAC);
test_fail_unless (bitstream_read (&bs, 8) == STA_TEI);
diff --git a/cesar/cp/msg/test/src/test-msg-read-header.c b/cesar/cp/msg/test/src/test-msg-read-header.c
index 2d0728ae64..efbaddc09c 100644
--- a/cesar/cp/msg/test/src/test-msg-read-header.c
+++ b/cesar/cp/msg/test/src/test-msg-read-header.c
@@ -137,9 +137,9 @@ test_case_msg_read_header_mme_without_vlan (test_t test)
bitstream_access (&bitstream, &data, 48);
data = 0x3456789ABCDEull;
bitstream_access (&bitstream, &data, 48);
- data = 0x12;
+ data = (0x9876 << 16) + ETH_TYPE_VLAN;
bitstream_access (&bitstream, &data, 32);
- data = swap16(HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&bitstream, &data, 16);
data = 1;
bitstream_access (&bitstream, &data, 8);
@@ -158,7 +158,9 @@ test_case_msg_read_header_mme_without_vlan (test_t test)
test_fail_if (mme->peer.mac != 0x3456789ABCDEull,
"Wrong mac address");
test_fail_if (mme->peer.tei != 1, "wrong TEI");
- test_fail_if (mme->peer.vlan_tag != 0x12, "Wrong VLAN tag");
+ test_fail_if (mme->peer.eth_type != ETH_TYPE_VLAN,
+ "Wrong Ether type");
+ test_fail_if (mme->peer.vlan_tci != 0x9876, "Wrong VLAN TCI");
test_fail_if (fmi != 0x432, "wrong FMI value");
}
test_end;
@@ -173,7 +175,7 @@ test_case_msg_read_header_mme_without_vlan (test_t test)
bitstream_access (&bitstream, &data, 48);
data = 0x3456789ABCDEull;
bitstream_access (&bitstream, &data, 48);
- data = swap16(HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&bitstream, &data, 16);
data = 1;
bitstream_access (&bitstream, &data, 8);
@@ -191,7 +193,9 @@ test_case_msg_read_header_mme_without_vlan (test_t test)
test_fail_if (mme->peer.mac != 0x3456789ABCDEull,
"Wrong mac address");
test_fail_if (mme->peer.tei != 1, "wrong TEI");
- test_fail_if (mme->peer.vlan_tag != 0, "Wrong VLAN tag");
+ test_fail_if (mme->peer.eth_type != HPAV_MTYPE_MME,
+ "Wrong eth type");
+ test_fail_if (mme->peer.vlan_tci != 0, "Wrong VLAN tci");
test_fail_if (fmi != 0x432, "wrong FMI value");
}
test_end;
@@ -204,7 +208,7 @@ test_case_msg_read_header_mme_without_vlan (test_t test)
bitstream_access (&bitstream, &data, 48);
data = 0x3456789ABCDEull;
bitstream_access (&bitstream, &data, 48);
- data = swap16(HPAV_MTYPE_MME);
+ data = HPAV_MTYPE_MME;
bitstream_access (&bitstream, &data, 16);
data = 0;
bitstream_access (&bitstream, &data, 8);
@@ -229,7 +233,7 @@ test_case_msg_read_header_mme_without_vlan (test_t test)
bitstream_access (&bitstream, &data, 48);
data = 0x3456789ABCDEull;
bitstream_access (&bitstream, &data, 48);
- data = swap16(HPAV_MTYPE_MME + 1);
+ data = HPAV_MTYPE_MME + 1;
bitstream_access (&bitstream, &data, 16);
data = 1;
bitstream_access (&bitstream, &data, 8);
@@ -539,7 +543,7 @@ test_case_msg_relayed_enc_payload (test_t test)
bitstream_write_init (&stream, buffer, sizeof (buffer));
bitstream_write_large (&stream, 0x1, 48);
bitstream_write_large (&stream, 0x2, 48);
- bitstream_write (&stream, swap16(HPAV_MTYPE_MME), 16);
+ bitstream_write (&stream, HPAV_MTYPE_MME, 16);
bitstream_write (&stream, HPAV_MMV, 8);
bitstream_write (&stream, CC_RELAY_IND, 16);
bitstream_write (&stream, 0, 16);
@@ -549,7 +553,7 @@ test_case_msg_relayed_enc_payload (test_t test)
/* HEADER of the encrypted payload. */
bitstream_write_large (&stream, 0x1, 48);
bitstream_write_large (&stream, 0x3, 48);
- bitstream_write (&stream, swap16(HPAV_MTYPE_MME), 16);
+ bitstream_write (&stream, HPAV_MTYPE_MME, 16);
bitstream_write (&stream, HPAV_MMV, 8);
bitstream_write (&stream, CM_ENCRYPTED_PAYLOAD_IND, 16);
bitstream_write (&stream, 0, 16);
@@ -604,7 +608,6 @@ test_case_msg_cm_get_key_req(test_t test)
bool result;
uint length;
uint mft;
- uint confounder;
cp_msg_cm_get_key_req_t request;
mac_config_t mac_config;
uint cl;
@@ -623,7 +626,6 @@ test_case_msg_cm_get_key_req(test_t test)
* 1 byte. The MME in embedded in the PB with a confounder of 4 bytes.
* So the length is length + 1 - 4 -> length - 3. */
length = bitstream_direct_read (cm_get_key_req_intellon, 2, 14) - 3;
- confounder = bitstream_direct_read (cm_get_key_req_intellon, 16, 32);
test_fail_unless (mft == 3);
test_fail_unless (length < ETH_PACKET_MAX_SIZE);
@@ -657,7 +659,6 @@ test_case_msg_cm_get_key_req(test_t test)
bool result;
uint length;
uint mft;
- uint confounder;
cp_msg_cm_get_key_req_t request;
mac_config_t mac_config;
uint cl;
@@ -676,7 +677,6 @@ test_case_msg_cm_get_key_req(test_t test)
* 1 byte. The MME in embedded in the PB with a confounder of 4 bytes.
* So the length is length + 1 - 4 -> length - 3. */
length = bitstream_direct_read (cm_get_key_req_spc300, 2, 14) - 3;
- confounder = bitstream_direct_read (cm_get_key_req_spc300, 16, 32);
test_fail_unless (mft == 3);
test_fail_unless (length < ETH_PACKET_MAX_SIZE);
@@ -723,7 +723,7 @@ test_case_mme_too_short (test_t test)
bitstream_write_init (&stream, buffer, 15);
bitstream_write_large (&stream, 0x123456789abcull, 48);
bitstream_write_large (&stream, 0x123456789abcull, 48);
- bitstream_write (&stream, swap16(HPAV_MTYPE_MME), 16);
+ bitstream_write (&stream, HPAV_MTYPE_MME, 16);
bitstream_write (&stream, HPAV_MMV, 8);
bitstream_finalise (&stream);
@@ -748,7 +748,7 @@ test_case_mme_too_short (test_t test)
bitstream_write_init (&stream, buffer, HPAV_MME_HEADER);
bitstream_write_large (&stream, 0x123456789abcull, 48);
bitstream_write_large (&stream, 0x123456789abcull, 48);
- bitstream_write (&stream, swap16(HPAV_MTYPE_MME), 16);
+ bitstream_write (&stream, HPAV_MTYPE_MME, 16);
bitstream_write (&stream, HPAV_MMV, 8);
bitstream_write (&stream, CC_ASSOC_REQ, 16);
bitstream_write (&stream, 0, 16);
@@ -764,7 +764,7 @@ test_case_mme_too_short (test_t test)
}
test_end;
- test_begin (test, "length == HPAV_MME_HEADER_LEN_WITH_VLAN")
+ test_begin (test, "length == HPAV_MME_HEADER + ETH_VLANTAG_SIZE")
{
u8 buffer[25];
bitstream_t stream;
@@ -773,11 +773,12 @@ test_case_mme_too_short (test_t test)
uint fmi;
/* Create the short MME. */
- bitstream_write_init (&stream, buffer, HPAV_MME_HEADER_LEN_WITH_VLAN);
+ bitstream_write_init (&stream, buffer, HPAV_MME_HEADER
+ + ETH_VLANTAG_SIZE);
bitstream_write_large (&stream, 0x123456789abcull, 48);
bitstream_write_large (&stream, 0x123456789abcull, 48);
- bitstream_write (&stream, 0x12345678, 32);
- bitstream_write (&stream, swap16(HPAV_MTYPE_MME), 16);
+ bitstream_write (&stream, (0x1234 << 16) + ETH_TYPE_VLAN, 32);
+ bitstream_write (&stream, HPAV_MTYPE_MME, 16);
bitstream_write (&stream, HPAV_MMV, 8);
bitstream_write (&stream, CC_ASSOC_REQ, 16);
bitstream_write (&stream, 0, 16);
@@ -786,7 +787,7 @@ test_case_mme_too_short (test_t test)
cp_msg_init (&cp);
mme = cp_msg_mme_read_header (
- &cp, buffer, HPAV_MME_HEADER_LEN_WITH_VLAN, 1, &fmi);
+ &cp, buffer, HPAV_MME_HEADER + ETH_VLANTAG_SIZE, 1, &fmi);
test_fail_unless (mme != NULL);
slab_release (mme);
diff --git a/cesar/cp/msg/test_eoc/src/msg_cc_eoc.c b/cesar/cp/msg/test_eoc/src/msg_cc_eoc.c
index 23a8d8eb2a..6346fb6746 100644
--- a/cesar/cp/msg/test_eoc/src/msg_cc_eoc.c
+++ b/cesar/cp/msg/test_eoc/src/msg_cc_eoc.c
@@ -69,7 +69,8 @@ test_case_msg_dispatch (void)
mme_rx = cp_msg_mme_rx_init (&cp, buffer, 60, MAC_TEI_UNASSOCIATED);
mme_rx->peer.mac = 2;
- mme_rx->peer.vlan_tag = 0;
+ mme_rx->peer.eth_type = HPAV_MTYPE_MME;
+ mme_rx->peer.vlan_tci = 0;
mme_rx->peer.tei = 0;
mme_rx->mmtype = CC_ASSOC_REQ;
diff --git a/cesar/cp/msg/test_eoc/src/msg_vs_eoc.c b/cesar/cp/msg/test_eoc/src/msg_vs_eoc.c
index 5e32b90d61..4807f2b7eb 100644
--- a/cesar/cp/msg/test_eoc/src/msg_vs_eoc.c
+++ b/cesar/cp/msg/test_eoc/src/msg_vs_eoc.c
@@ -52,11 +52,12 @@ static void
test_write_header (bool vlan_present, mme_header_t *pheader,
bitstream_t *pstream)
{
- bitstream_init (pstream, buffer, 1518, BITSTREAM_WRITE);
+ bitstream_init (pstream, buffer, ETH_PACKET_MAX_NOVLAN_SIZE,
+ BITSTREAM_WRITE);
bitstream_write_large (pstream, pheader->oda, 48);
bitstream_write_large (pstream, pheader->osa, 48);
- bitstream_write (pstream, swap16 (HPAV_MTYPE_MME), 16);
+ bitstream_write (pstream, HPAV_MTYPE_MME, 16);
bitstream_write (pstream, HPAV_MMV, 8);
bitstream_write (pstream, pheader->mmtype, 16);
bitstream_write (pstream, pheader->fmi_inf, 4);
@@ -68,14 +69,14 @@ static void
test_read_header (bool vlan_present, mme_header_t *pheader,
mme_header_t *pexpected, bitstream_t *pstream)
{
- bitstream_init (pstream, buffer, 1518, BITSTREAM_READ);
+ bitstream_init (pstream, buffer, ETH_PACKET_MAX_NOVLAN_SIZE,
+ BITSTREAM_READ);
pheader->oda = bitstream_read_large (pstream, 48);
pheader->osa = bitstream_read_large (pstream, 48);
if (vlan_present)
pheader->vlan = bitstream_read (pstream, 32);
pheader->mtype = bitstream_read (pstream, 16);
- pheader->mtype = swap16 (pheader->mtype);
pheader->mmv = bitstream_read (pstream, 8);
pheader->mmtype = bitstream_read (pstream, 16);
pheader->fmi_inf = bitstream_read (pstream, 4);
@@ -229,7 +230,9 @@ test_case_msg_vs_eoc_get_topo (void)
bitstream_finalise (&stream);
/* Receive MME */
- rx_mme = cp_msg_mme_read_header (&cp, buffer, 1518, peer.tei, &fmi);
+ rx_mme = cp_msg_mme_read_header (&cp, buffer,
+ ETH_PACKET_MAX_NOVLAN_SIZE,
+ peer.tei, &fmi);
test_fail_unless (rx_mme != NULL);
test_fail_unless (rx_mme->mmtype == VS_EOC_GET_TOPO_REQ);
@@ -253,7 +256,8 @@ main (void)
cp_sta_own_data_set_mac_address (&cp, own_mac_addr);
peer.mac = 0x23456789ABCDull;
- peer.vlan_tag = 0x0;
+ peer.eth_type = HPAV_MTYPE_MME;
+ peer.vlan_tci = 0;
peer.tei = MAC_TEI_FOREIGN;
test_case_msg_vs_eoc_get_topo ();
diff --git a/cesar/cp/secu/defs.h b/cesar/cp/secu/defs.h
index d3adcfef3e..67c52ba7c4 100644
--- a/cesar/cp/secu/defs.h
+++ b/cesar/cp/secu/defs.h
@@ -49,6 +49,15 @@
* function. */
#define CP_SECU_CHECKPOINT_ITERATION 10
+/* Protocol ID size. */
+#define CP_SECU_PID_SIZE 1
+
+/* Protocol Run Number size. */
+#define CP_SECU_PRN_SIZE 2
+
+/* Protocol Message Number size. */
+#define CP_SECU_PMN_SIZE 1
+
/** Enumerate the PIDs. */
enum cp_secu_pid_t
{
diff --git a/cesar/cp/sta/action/src/drv.c b/cesar/cp/sta/action/src/drv.c
index bd8d11acd2..6f4f452dec 100644
--- a/cesar/cp/sta/action/src/drv.c
+++ b/cesar/cp/sta/action/src/drv.c
@@ -530,7 +530,7 @@ cp_sta_action_drv__drv_sta_set_config_req (cp_t *ctx, cp_mme_rx_t *mme)
/* Check parameter. */
dbg_assert (mme);
- char config[HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN];
+ char config[HPAV_MME_PAYLOAD_MAX_SIZE];
cp_msg_drv_result_t result = CP_MSG_DRV_RESULT_FAILURE;
if (cp_msg_drv_sta_set_config_req_receive (ctx, mme, config))
diff --git a/cesar/cp/sta/action/test/utest/src/misc.c b/cesar/cp/sta/action/test/utest/src/misc.c
index b40b1f516b..b53899f338 100644
--- a/cesar/cp/sta/action/test/utest/src/misc.c
+++ b/cesar/cp/sta/action/test/utest/src/misc.c
@@ -878,11 +878,13 @@ misc_hfid_test_case (test_t t)
cco_peer.mac = cco_mac;
cco_peer.tei = cco_tei;
- cco_peer.vlan_tag = 0;
+ cco_peer.eth_type = HPAV_MTYPE_MME;
+ cco_peer.vlan_tci = 0;
wrong_peer.mac = cco_mac + 1;
wrong_peer.tei = cco_tei + 1;
- wrong_peer.vlan_tag = 0;
+ wrong_peer.eth_type = HPAV_MTYPE_MME;
+ wrong_peer.vlan_tci = 0;
slab_release (cco);
diff --git a/cesar/cp/sta/action/test/utest/src/msg_stub.c b/cesar/cp/sta/action/test/utest/src/msg_stub.c
index ff3fa0a99c..fb877baec5 100644
--- a/cesar/cp/sta/action/test/utest/src/msg_stub.c
+++ b/cesar/cp/sta/action/test/utest/src/msg_stub.c
@@ -99,7 +99,8 @@ EVENT (cp_t *ctx, cp_mme_tx_t *mme, const DATA *data) \
test_fail_unless (strcmp (PARAM, param->PARAM) == 0);
#define __ms_test_peer \
test_fail_unless (peer->mac == param->peer.mac); \
- test_fail_unless (peer->vlan_tag == param->peer.vlan_tag); \
+ test_fail_unless (peer->eth_type == param->peer.eth_type); \
+ test_fail_unless (peer->vlan_tci == param->peer.vlan_tci); \
test_fail_unless (peer->tei == param->peer.tei); \
/* Code for MME transmission with a data structure. */
diff --git a/cesar/cp/test/mme/src/test_mme.c b/cesar/cp/test/mme/src/test_mme.c
index a79c112926..979d3dfdb3 100644
--- a/cesar/cp/test/mme/src/test_mme.c
+++ b/cesar/cp/test/mme/src/test_mme.c
@@ -13,6 +13,7 @@
#include "common/std.h"
#include "cp/mme.h"
+#include "common/defs/homeplugAV.h"
#include "lib/test.h"
@@ -46,7 +47,7 @@ void
test_code_1 (void)
{
mem_barrier ();
- cp_mme_peer_t peer = { 0x112233445566ull, 0, 0x12 };
+ cp_mme_peer_t peer = { 0x112233445566ull, HPAV_MTYPE_MME, 0, 0x12 };
mem_barrier ();
(void) peer;
}
@@ -136,16 +137,18 @@ mme_peer_test_suite (test_t t)
cp_mme_peer_t peer1 = CP_MME_PEER (0x0123456789abull, 0xab);
test_fail_unless (peer1.mac == 0x0123456789abull);
test_fail_unless (peer1.tei == 0xab);
- test_fail_unless (peer1.vlan_tag == 0);
+ test_fail_unless (peer1.eth_type == HPAV_MTYPE_MME);
+ test_fail_unless (peer1.vlan_tci == 0);
cp_mme_peer_t peer2 = CP_MME_PEER_ALL_STA;
test_fail_unless (peer2.mac == MAC_BROADCAST);
test_fail_unless (peer2.tei == MAC_TEI_MULTI_UNICAST);
- test_fail_unless (peer2.vlan_tag == 0);
+ test_fail_unless (peer2.eth_type == HPAV_MTYPE_MME);
+ test_fail_unless (peer2.vlan_tci == 0);
} test_end;
test_begin (t, "cmp")
{
cp_mme_peer_t peer1 = { .mac = 0x0123456789abull, .tei = 0xab,
- .vlan_tag = 0x89abcdef };
+ .eth_type = ETH_TYPE_VLAN, .vlan_tci=0x1234 };
cp_mme_peer_t peer2 = CP_MME_PEER (0x0123456789abull, 0xab);
cp_mme_peer_t peer3 = CP_MME_PEER (0x111111111111ull, 0xab);
cp_mme_peer_t peer4 = CP_MME_PEER (0x0123456789abull, 0x22);
diff --git a/cesar/interface/fcall/src/interface_fcall.c b/cesar/interface/fcall/src/interface_fcall.c
index 18663dce32..ee8da28ba3 100644
--- a/cesar/interface/fcall/src/interface_fcall.c
+++ b/cesar/interface/fcall/src/interface_fcall.c
@@ -230,7 +230,7 @@ interface_fcall_mme_send (void *data, sci_msg_t *msg)
bitstream_access (&ctx->bitstream_ctx, &ctx->mac_config->sta_mac_address, 48);
/* Inserting the MTYPE (BIG-ENDIAN). */
- field = swap16(HPAV_MTYPE_MME);
+ field = HPAV_MTYPE_MME;
bitstream_access (&ctx->bitstream_ctx, &field, 16);
/* Inserting the MMV (LITTLE-ENDIAN). */
diff --git a/cesar/interface/sniffer/src/sniffer.c b/cesar/interface/sniffer/src/sniffer.c
index 1d4c96d29b..392b5d53f3 100644
--- a/cesar/interface/sniffer/src/sniffer.c
+++ b/cesar/interface/sniffer/src/sniffer.c
@@ -82,13 +82,12 @@ interface_sniffer_copy_mme (interface_sniffer_t *ctx, u8 *mme, uint length,
if (!buffer)
return;
+ header_length = HPAV_MME_HEADER + OUI_SIZE +
+ INTERFACE_SNIFFER_IDENTIFY_LENGTH;
+
/* Compute the header size. */
- if (ctx->vlan_tag == 0)
- header_length = HPAV_MME_HEADER + OUI_SIZE +
- INTERFACE_SNIFFER_IDENTIFY_LENGTH;
- else
- header_length = HPAV_MME_HEADER_LEN_WITH_VLAN + OUI_SIZE
- + INTERFACE_SNIFFER_IDENTIFY_LENGTH;
+ if (ctx->vlan_tag != 0)
+ header_length += ETH_VLANTAG_SIZE;
if (length + header_length > ETH_PACKET_MAX_SIZE)
embedded_length = ETH_PACKET_MAX_SIZE - header_length;
@@ -100,7 +99,7 @@ interface_sniffer_copy_mme (interface_sniffer_t *ctx, u8 *mme, uint length,
bitstream_write_large (&bitstream, ctx->mac_config->sta_mac_address, 48);
if (ctx->vlan_tag)
bitstream_write (&bitstream, ctx->vlan_tag, 32);
- bitstream_write (&bitstream, swap16(HPAV_MTYPE_MME), 16);
+ bitstream_write (&bitstream, HPAV_MTYPE_MME, 16);
bitstream_write (&bitstream, HPAV_MMV, 8);
bitstream_write (&bitstream, VS_SNIFFER_IND, 16);
bitstream_write (&bitstream, 0, 16);
@@ -139,7 +138,7 @@ interface_sniffer_copy_beacon (
bitstream_write_large (&bitstream, ctx->mac_config->sta_mac_address, 48);
if (ctx->vlan_tag)
bitstream_write (&bitstream, ctx->vlan_tag, 32);
- bitstream_write (&bitstream, swap16(HPAV_MTYPE_MME), 16);
+ bitstream_write (&bitstream, HPAV_MTYPE_MME, 16);
bitstream_write (&bitstream, HPAV_MMV, 8);
bitstream_write (&bitstream, VS_SNIFFER_IND, 16);
bitstream_write (&bitstream, 0, 16);
@@ -216,6 +215,7 @@ interface_sniffer_configure_and_respond (interface_sniffer_t *ctx, u8 *buffer,
bool ok = false;
uint oui;
bitstream_t stream;
+ u16 eth_type;
dbg_assert (ctx);
dbg_assert (ctx->mac_config);
@@ -224,23 +224,21 @@ interface_sniffer_configure_and_respond (interface_sniffer_t *ctx, u8 *buffer,
dbg_assert (buffer != resp);
osa = bitstream_direct_read_large (buffer, 48, 48);
- if (bitstream_direct_read (buffer, 96, 16) == swap16(HPAV_MTYPE_MME))
- {
- oui = bitstream_direct_read (buffer, HPAV_MME_HEADER * 8,
- OUI_SIZE_BITS);
- data = bitstream_direct_read (buffer, HPAV_MME_HEADER * 8 +
- OUI_SIZE_BITS, 8);
- }
- else
+ eth_type = bitstream_direct_read (buffer, 96, 16);
+
+ if (eth_type == ETH_TYPE_VLAN)
{
vlan_value = bitstream_direct_read (buffer, 96, 32);
- oui = bitstream_direct_read (buffer, HPAV_MME_HEADER_LEN_WITH_VLAN * 8,
- OUI_SIZE_BITS);
- data = bitstream_direct_read (buffer,
- HPAV_MME_HEADER_LEN_WITH_VLAN * 8 +
- OUI_SIZE_BITS,
- 8);
}
+ oui = bitstream_direct_read (buffer,
+ BYTES_SIZE_TO_BITS (HPAV_MME_HEADER +
+ ETH_GET_VLANTAG_SIZE (eth_type)),
+ OUI_SIZE_BITS);
+ data = bitstream_direct_read (buffer,
+ BYTES_SIZE_TO_BITS (HPAV_MME_HEADER +
+ ETH_GET_VLANTAG_SIZE (eth_type)) +
+ OUI_SIZE_BITS,
+ 8);
/* If the sniffer is activated, only the computer which had activated it
* can change the sniffer mode, the others should only stop the sniffer. */
@@ -263,7 +261,7 @@ interface_sniffer_configure_and_respond (interface_sniffer_t *ctx, u8 *buffer,
if (vlan_value)
bitstream_write (&stream, vlan_value, 32);
- bitstream_write (&stream, swap16(HPAV_MTYPE_MME), 16);
+ bitstream_write (&stream, HPAV_MTYPE_MME, 16);
bitstream_write (&stream, HPAV_MMV, 8);
bitstream_write (&stream, VS_SNIFFER_CNF, 16);
bitstream_write (&stream, 0, 16);
diff --git a/cesar/interface/sniffer/test/src/test-sniffer.c b/cesar/interface/sniffer/test/src/test-sniffer.c
index 0ca5ba446f..60206e4989 100644
--- a/cesar/interface/sniffer/test/src/test-sniffer.c
+++ b/cesar/interface/sniffer/test/src/test-sniffer.c
@@ -41,8 +41,11 @@ test_sniffer_prepare_request (mac_t osa, uint req, uint vlan)
bitstream_write_large (&stream, STA_MAC_ADDR, 48);
bitstream_write_large (&stream, osa, 48);
if (vlan)
+ {
+ vlan = (vlan << 16) + ETH_TYPE_VLAN;
bitstream_write (&stream, vlan, 32);
- bitstream_write (&stream, swap16(HPAV_MTYPE_MME), 16);
+ }
+ bitstream_write (&stream, HPAV_MTYPE_MME, 16);
bitstream_write (&stream, HPAV_MMV, 8);
bitstream_write (&stream, VS_SNIFFER_REQ, 16);
bitstream_write (&stream, 0, 16);
@@ -63,7 +66,7 @@ test_sniffer_read_answer (mac_t *oda, uint *res, uint *status,
u8 *answer = bufmgr_get (INVALID_PTR);
*oda = bitstream_direct_read_large (answer, 0, 48);
- if (swap16(bitstream_direct_read (answer, 96, 16)) == HPAV_MTYPE_MME)
+ if (bitstream_direct_read (answer, 96, 16) == HPAV_MTYPE_MME)
{
mmtype = bitstream_direct_read (answer, 120, 16);
*res = bitstream_direct_read (answer, 176, 8);
@@ -321,7 +324,7 @@ test_sniffer_configure (test_t test)
test_fail_unless (da == OSA2);
test_fail_unless (sniffer.da == OSA2);
- test_fail_unless (sniffer.vlan_tag == 1);
+ test_fail_unless (sniffer.vlan_tag == ((1 << 16 ) + ETH_TYPE_VLAN));
test_sniffer_prepare_request (OSA2, 0xF, 1);
@@ -341,7 +344,7 @@ test_sniffer_configure (test_t test)
test_fail_unless (da == OSA2);
test_fail_unless (sniffer.da == OSA2);
- test_fail_unless (sniffer.vlan_tag == 1);
+ test_fail_unless (sniffer.vlan_tag == ((1 << 16 ) + ETH_TYPE_VLAN));
}
test_end;
@@ -370,7 +373,7 @@ test_sniffer_mme (test_t test)
bitstream_write_init (&stream, request, 1518);
bitstream_write_large (&stream, OSA2, 48);
bitstream_write_large (&stream, OSA1, 48);
- bitstream_write (&stream, swap16(HPAV_MTYPE_MME), 16);
+ bitstream_write (&stream, HPAV_MTYPE_MME, 16);
bitstream_write (&stream, HPAV_MMV, 8);
/* WHO are you request. */
bitstream_write (&stream, 0x2c, 16);
@@ -385,8 +388,7 @@ test_sniffer_mme (test_t test)
bitstream_read_init (&stream, answer, ETH_PACKET_MAX_SIZE);
test_fail_unless (bitstream_read_large (&stream, 48) == sniffer->da);
test_fail_unless (bitstream_read_large (&stream, 48) == STA_MAC_ADDR);
- test_fail_unless (bitstream_read (&stream, 16) ==
- swap16(HPAV_MTYPE_MME));
+ test_fail_unless (bitstream_read (&stream, 16) == HPAV_MTYPE_MME);
test_fail_unless (bitstream_read (&stream, 8) == HPAV_MMV);
test_fail_unless (bitstream_read (&stream, 16) == VS_SNIFFER_IND);
test_fail_unless (bitstream_read (&stream, 16) == 0);
@@ -403,8 +405,7 @@ test_sniffer_mme (test_t test)
bitstream_read_init (&stream, answer, ETH_PACKET_MAX_SIZE);
test_fail_unless (bitstream_read_large (&stream, 48) == sniffer->da);
test_fail_unless (bitstream_read_large (&stream, 48) == STA_MAC_ADDR);
- test_fail_unless (bitstream_read (&stream, 16) ==
- swap16(HPAV_MTYPE_MME));
+ test_fail_unless (bitstream_read (&stream, 16) == HPAV_MTYPE_MME);
test_fail_unless (bitstream_read (&stream, 8) == HPAV_MMV);
test_fail_unless (bitstream_read (&stream, 16) == VS_SNIFFER_IND);
test_fail_unless (bitstream_read (&stream, 16) == 0);
@@ -543,8 +544,7 @@ test_sniffer_beacon_tx_rx (test_t test, bool tx)
bitstream_read_init (&stream, answer, 175);
test_fail_unless (OSA1 == bitstream_read_large (&stream, 48));
test_fail_unless (STA_MAC_ADDR == bitstream_read_large (&stream, 48));
- test_fail_unless (
- swap16 (HPAV_MTYPE_MME) == bitstream_read (&stream, 16));
+ test_fail_unless (HPAV_MTYPE_MME == bitstream_read (&stream, 16));
test_fail_unless (HPAV_MMV == bitstream_read (&stream, 8));
test_fail_unless (VS_SNIFFER_IND == bitstream_read (&stream, 16));
test_fail_unless (0 == bitstream_read (&stream, 16));
diff --git a/cesar/interface/src/interface.c b/cesar/interface/src/interface.c
index 7df70dbc3e..56ec0687ea 100644
--- a/cesar/interface/src/interface.c
+++ b/cesar/interface/src/interface.c
@@ -12,7 +12,7 @@
*
*/
#include "common/std.h"
-#include "common/defs/ethernet.h"
+#include "common/defs/homeplugAV.h"
#include "common/defs/priority.h"
#include "lib/swap.h"
@@ -148,18 +148,16 @@ interface_mme_recv (interface_t *ctx, uint tei, u8 *buffer, uint length,
}
#endif /* CONFIG_INTERFACE_SNIFFER */
/* Filter Interface MMType. */
- uint ether_type, mmtype_bits_offset, mmtype_base;
+ uint ether_type, mmtype_base;
/* Get the Ethernet type first to detect the VLAN. */
ether_type = bitstream_direct_read (
- buffer, BYTES_SIZE_TO_BITS (HPAV_MTYPE_OFFSET),
- BYTES_SIZE_TO_BITS (HPAV_MTYPE_SIZE));
- mmtype_bits_offset = BYTES_SIZE_TO_BITS (HPAV_MMTYPE_OFFSET);
- /* If the Ether type is an HPAV MME, there is no VLAN tag. */
- if (swap16 (ether_type) != HPAV_MTYPE_MME)
- mmtype_bits_offset = BYTES_SIZE_TO_BITS (HPAV_VLANTAG_SIZE);
+ buffer, BYTES_SIZE_TO_BITS (ETH_TYPE_OFFSET),
+ BYTES_SIZE_TO_BITS (ETH_TYPE_SIZE));
/* Get the MME Type and convert it into the MME Type base. */
mmtype_base = bitstream_direct_read (
- buffer, mmtype_bits_offset, BYTES_SIZE_TO_BITS (HPAV_MMTYPE_SIZE))
+ buffer,
+ HPAV_GET_MMTYPE_OFFSET (ether_type),
+ BYTES_SIZE_TO_BITS (HPAV_MMTYPE_SIZE))
& ~0x3;
/* If MMTYPE is interface FCALL or Sniffer. */
if (mmtype_base == INTERFACE_FCALL_MMTYPE
@@ -228,10 +226,10 @@ interface_read_mme (interface_t *ctx, u8 *mme, uint *mmtype)
bitstream_skip (&stream, 48);
bitstream_skip (&stream, 48);
- if (bitstream_direct_read (mme, 96, 16) != swap16(HPAV_MTYPE_MME))
+ if (bitstream_direct_read (mme, 96, 16) != HPAV_MTYPE_MME)
bitstream_skip (&stream, 32);
- mtype = swap16(bitstream_read (&stream, 16));
+ mtype = bitstream_read (&stream, 16);
mmv = bitstream_read (&stream, 8);
*mmtype = bitstream_read (&stream, 16);
fmi = bitstream_read (&stream, 16);
diff --git a/cesar/interface/test/src/test-interface.c b/cesar/interface/test/src/test-interface.c
index b8d43fdf43..c00152db7d 100644
--- a/cesar/interface/test/src/test-interface.c
+++ b/cesar/interface/test/src/test-interface.c
@@ -144,7 +144,7 @@ test_sniffer_prepare_request (mac_t osa, uint req)
bitstream_write_large (&stream, STA_MAC_ADDR, 48);
bitstream_write_large (&stream, osa, 48);
- bitstream_write (&stream, swap16(HPAV_MTYPE_MME), 16);
+ bitstream_write (&stream, HPAV_MTYPE_MME, 16);
bitstream_write (&stream, HPAV_MMV, 8);
bitstream_write (&stream, VS_SNIFFER_REQ, 16);
bitstream_write (&stream, 0, 16);
@@ -299,7 +299,7 @@ test_copy_mme (test_t test)
bitstream_write_init (&stream, request, 1518);
bitstream_write_large (&stream, STA_MAC_ADDR, 48);
bitstream_write_large (&stream, OSA1, 48);
- bitstream_write (&stream, HPAV_MTYPE_MME, 16);
+ bitstream_write (&stream, swap16(HPAV_MTYPE_MME), 16);
bitstream_write (&stream, HPAV_MMV, 8);
/* WHO are you request. */
bitstream_write (&stream, 0x2c, 16);
@@ -349,7 +349,7 @@ test_copy_beacon (test_t test)
bitstream_read_init (&stream, answer, 175);
test_fail_unless (OSA1 == bitstream_read_large (&stream, 48));
test_fail_unless (STA_MAC_ADDR == bitstream_read_large (&stream, 48));
- test_fail_unless (swap16 (HPAV_MTYPE_MME) == bitstream_read (&stream, 16));
+ test_fail_unless (HPAV_MTYPE_MME == bitstream_read (&stream, 16));
test_fail_unless (HPAV_MMV == bitstream_read (&stream, 8));
test_fail_unless (VS_SNIFFER_IND == bitstream_read (&stream, 16));
test_fail_unless (0 == bitstream_read (&stream, 16));
@@ -381,7 +381,7 @@ test_copy_beacon (test_t test)
bitstream_read_init (&stream, answer, 175);
test_fail_unless (OSA1 == bitstream_read_large (&stream, 48));
test_fail_unless (STA_MAC_ADDR == bitstream_read_large (&stream, 48));
- test_fail_unless (swap16 (HPAV_MTYPE_MME) == bitstream_read (&stream, 16));
+ test_fail_unless (HPAV_MTYPE_MME == bitstream_read (&stream, 16));
test_fail_unless (HPAV_MMV == bitstream_read (&stream, 8));
test_fail_unless (VS_SNIFFER_IND == bitstream_read (&stream, 16));
test_fail_unless (0 == bitstream_read (&stream, 16));
diff --git a/cesar/lib/src/stats.c b/cesar/lib/src/stats.c
index 953f64a678..26fbb0985a 100644
--- a/cesar/lib/src/stats.c
+++ b/cesar/lib/src/stats.c
@@ -560,7 +560,7 @@ lib_stats_write_stats (const char *stats)
{
/* Check parameter. */
dbg_assert (stats);
- dbg_assert (strlen (stats) < HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN);
+ dbg_assert (strlen (stats) < HPAV_MME_PAYLOAD_MAX_SIZE);
/* Empty string is tolerated. */
if (stats[0] == '\0')
@@ -568,7 +568,7 @@ lib_stats_write_stats (const char *stats)
const char delim[] = " ";
char *stat;
- char copy_stats[HPAV_MME_PAYLOAD_MAX_SIZE_WITHOUT_VLAN];
+ char copy_stats[HPAV_MME_PAYLOAD_MAX_SIZE];
/* Copy stats. */
strcpy (copy_stats, stats);
diff --git a/cesar/mac/sar/test/functional/Makefile.mk b/cesar/mac/sar/test/functional/Makefile.mk
index 827134c6b5..7042b71a44 100644
--- a/cesar/mac/sar/test/functional/Makefile.mk
+++ b/cesar/mac/sar/test/functional/Makefile.mk
@@ -1,5 +1,5 @@
TARGET_PROGRAMS = sar_rx_perf sar_rx_perf_huge_mpdu \
- sar_rx_perf_huge_mpdu_1518 sar_tx_perf \
+ sar_rx_perf_huge_mpdu_max_eth sar_tx_perf \
sar_tx_rx sar_rx_tx sar_tx_out_in_rx
sar_rx_perf_SOURCES = sar_rx_perf.c pbproc_stub.c ca_stub.c test_functions.c \
@@ -13,10 +13,10 @@ sar_rx_perf_huge_mpdu_MODULES = hal/arch lib mac/common mac/sar \
mac/pbproc \
$(HOST_MODULES) $(SPARC_MODULES)
-sar_rx_perf_huge_mpdu_1518_SOURCES = sar_rx_perf_huge_mpdu_1518.c \
+sar_rx_perf_huge_mpdu_max_eth_SOURCES = sar_rx_perf_huge_mpdu_max_eth.c \
pbproc_stub.c ca_stub.c test_functions.c \
bufmgr_stub.c
-sar_rx_perf_huge_mpdu_1518_MODULES = hal/arch lib mac/common mac/sar \
+sar_rx_perf_huge_mpdu_max_eth_MODULES = hal/arch lib mac/common mac/sar \
mac/pbproc \
$(HOST_MODULES) $(SPARC_MODULES)
diff --git a/cesar/mac/sar/test/functional/src/sar_rx_perf_huge_mpdu_1518.c b/cesar/mac/sar/test/functional/src/sar_rx_perf_huge_mpdu_max_eth.c
index c14d9c68dd..c14d9c68dd 100644
--- a/cesar/mac/sar/test/functional/src/sar_rx_perf_huge_mpdu_1518.c
+++ b/cesar/mac/sar/test/functional/src/sar_rx_perf_huge_mpdu_max_eth.c
diff --git a/cesar/mac/sar/test/functional/src/sar_rx_tx.c b/cesar/mac/sar/test/functional/src/sar_rx_tx.c
index da545c9d0f..a2e979b2f2 100644
--- a/cesar/mac/sar/test/functional/src/sar_rx_tx.c
+++ b/cesar/mac/sar/test/functional/src/sar_rx_tx.c
@@ -32,7 +32,7 @@ u8 my_test_thread_stack [CYGNUM_HAL_STACK_SIZE_TYPICAL];
void
test_thread_process (cyg_addrword_t data)
{
- sar_test_rx_tx_multiple_frames (2, 1518);
+ sar_test_rx_tx_multiple_frames (2, ETH_PACKET_MAX_SIZE);
}
int
diff --git a/cesar/mac/sar/test/functional/src/sar_tx_rx.c b/cesar/mac/sar/test/functional/src/sar_tx_rx.c
index 98f67cd951..c15a5a5980 100644
--- a/cesar/mac/sar/test/functional/src/sar_tx_rx.c
+++ b/cesar/mac/sar/test/functional/src/sar_tx_rx.c
@@ -32,7 +32,7 @@ u8 my_test_thread_stack [CYGNUM_HAL_STACK_SIZE_TYPICAL];
void
test_thread_process (cyg_addrword_t data)
{
- sar_test_tx_rx_multiple_frames (2, 1518);
+ sar_test_tx_rx_multiple_frames (2, ETH_PACKET_MAX_SIZE);
}
int
diff --git a/cesar/mac/sar/test/functional/src/test_functions.c b/cesar/mac/sar/test/functional/src/test_functions.c
index 74ccbc2916..1ab3ea978d 100644
--- a/cesar/mac/sar/test/functional/src/test_functions.c
+++ b/cesar/mac/sar/test/functional/src/test_functions.c
@@ -235,6 +235,14 @@ test_simulate_mpdu_reception (sar_test_ctx_t *ctx, uint eth_frame_nb,
for (j = 0; j < eth_frame_len; j++)
bitstream_write (&stream, 0xff, 8);
bitstream_write (&stream, crc, 32);
+ if ((bitstream_written_bits (&stream) / 8) % BLK_SIZE == 0
+ && i < eth_frame_nb - 1)
+ {
+ bitstream_write_finalise (&stream);
+ pb_current = pb_current->next;
+ dbg_assert (pb_current);
+ bitstream_write_init (&stream, pb_current->data, BLK_SIZE);
+ }
}
bitstream_write_finalise (&stream);
diff --git a/cesar/mac/sar/test/unit_test/ecos/src/misc.c b/cesar/mac/sar/test/unit_test/ecos/src/misc.c
index 2b17996de1..b36d6bdb58 100644
--- a/cesar/mac/sar/test/unit_test/ecos/src/misc.c
+++ b/cesar/mac/sar/test/unit_test/ecos/src/misc.c
@@ -84,7 +84,7 @@ test_case_misc__cleanup_pending_jobs_add_rx_simulate_missing_pb (
data ? 1 : MAC_LID_NONE, 1, &added);
if (added)
sar_mfs_add (t->sar, PARENT_OF (mfs_t, rx, mfs));
- /* Create 6 PBs with Ethernet Frames inside of 1518 bytes. Last PB
+ /* Create 6 PBs with Ethernet Frames inside of ETH_PACKET_MAX_SIZE bytes. Last PB
* contains a boundary with the MF header set to SAR_MF_TYPE_NONE. */
sar_test_data_create (&pb_first, &pb_last, 6, 0, 0, false);
/* Remove PB with SSN 3. */
@@ -111,7 +111,7 @@ test_case_misc__add_pending_jobs_add_one_rx (sar_test_t *t, bool data)
data ? 1 : MAC_LID_NONE, 1, &added);
if (added)
sar_mfs_add (t->sar, PARENT_OF (mfs_t, rx, mfs));
- /* Create 3 PBs with Ethernet Frames inside of 1518 bytes. Last PB
+ /* Create 3 PBs with Ethernet Frames inside of ETH_PACKET_MAX_SIZE bytes. Last PB
* contains a boundary with the MF header set to SAR_MF_TYPE_NONE. */
sar_test_data_create (&pb_first, &pb_last, 3, 0, 0, false);
mfs->head = pb_first;
diff --git a/cesar/mac/sar/test/unit_test/ecos/src/reassembly.c b/cesar/mac/sar/test/unit_test/ecos/src/reassembly.c
index 3640c8663e..dc24d445a4 100644
--- a/cesar/mac/sar/test/unit_test/ecos/src/reassembly.c
+++ b/cesar/mac/sar/test/unit_test/ecos/src/reassembly.c
@@ -789,7 +789,7 @@ test_case_reassembly_one_pb_opsf (test_t test)
/* Verify... */
job = slist_pop_front (t.sar->reassembly.jobs_pending_list., bare);
test_fail_unless (job);
- test_fail_unless (job->job.data_len == 1518);
+ test_fail_unless (job->job.data_len == ETH_PACKET_MAX_SIZE);
blk_release_desc_range_nb (job->job.first_pb_desc, job->pb_quantity);
blk_release (job->mfs);
blk_release (job);
@@ -1068,12 +1068,12 @@ test_case_reassembly (test_t test)
test_fail_unless (t.rea_done.encrypted == false);
/* Fake that there is one buffer available. */
t.bufmgr.free_buffer_nb = 1;
- for (i = 0; i < (pb_nb * BLK_SIZE) / 1518; i++)
+ for (i = 0; i < (pb_nb * BLK_SIZE) / ETH_PACKET_MAX_SIZE; i++)
{
/* Process the following frames. */
sar_buffer_available (t.sar);
/* Add the MPDU to the SAR. */
- test_fail_unless (t.rea_done.length == 1518);
+ test_fail_unless (t.rea_done.length == ETH_PACKET_MAX_SIZE);
test_fail_unless (t.rea_done.mfs == &mpdu.rx.mfs->rx);
test_fail_unless (t.rea_done.encrypted == true);
tmp = bitstream_direct_read (t.bufmgr.buffer[0], 0, 32);
diff --git a/cesar/mac/sar/test/unit_test/ecos/src/sar_pb_stats.c b/cesar/mac/sar/test/unit_test/ecos/src/sar_pb_stats.c
index 54a40fce11..37d3f566d5 100644
--- a/cesar/mac/sar/test/unit_test/ecos/src/sar_pb_stats.c
+++ b/cesar/mac/sar/test/unit_test/ecos/src/sar_pb_stats.c
@@ -18,8 +18,7 @@
#include "mac/sar/inc/sar.h"
#define NB_ENTRY_TO_READ 10
-#define NB_BUFFER_WRITE 7
-#define NB_MPDU_WITH_RANDOM_CRC 10
+#define NB_BUFFER_WRITE 200
#define MAX_PB_PER_MPDU (MAC_MAX_PB_PER_MPDU-1)
struct pb_stats_check_t
@@ -33,8 +32,9 @@ struct pb_stats_check_t
typedef struct pb_stats_check_t pb_stats_check_t;
void
-generate_a_mpdu_with_random_errors (sar_mpdu_t *mpdu, u32 *check)
+generate_a_mpdu_with_random_errors (sar_mpdu_t *mpdu, int nb_pb, u32 *check)
{
+ static unsigned long seed = 0x12345678;
u8 tei = 0x1;
u8 lid = 0x2;
pb_t *pb;
@@ -46,13 +46,12 @@ generate_a_mpdu_with_random_errors (sar_mpdu_t *mpdu, u32 *check)
check[i] = 0;
sar_test_mpdu_default_fill (mpdu, tei, lid);
- mpdu->rx.pb_nb = MAX_PB_PER_MPDU;
+ mpdu->rx.pb_nb = nb_pb;
+
+ seed++;
sar_test_create_pb_list_crc_error_rand (&mpdu->rx.pb_first,
&mpdu->rx.pb_last,
- MAX_PB_PER_MPDU, /* nb_pb */
- 0, /* ssn */
- mme, /* mme */
- 0x12345678); /* Seed */
+ nb_pb, 0, mme, seed);
/* record the test table */
for (pb = mpdu->rx.pb_first, i=0; pb; pb = pb->next, i++)
{
@@ -63,16 +62,22 @@ generate_a_mpdu_with_random_errors (sar_mpdu_t *mpdu, u32 *check)
if (pb->phy_pb.pb_rx.pb_measurement.crc_error)
check[word_index] |= mask;
}
-
}
void
run_pb_stats_capture (sar_test_t *t, sar_mpdu_t *mpdu)
{
sar_rx_mpdu_process (t->sar, mpdu);
- sar_mfs_free_rx (t->sar, &mpdu->rx.mfs->rx);
- dbg_check (mac_store_sta_remove (t->mac_store, mpdu->rx.params.tei));
- blk_release (mpdu->rx.mfs);
+
+ /* We will free resource, if it's exist.
+ * There is nothing to free when the mpdu was fill with pb false only.
+ * It's because sar_rx_mpdu_process have already done this free. */
+ if (mpdu->rx.mfs)
+ {
+ sar_mfs_free_rx (t->sar, &mpdu->rx.mfs->rx);
+ dbg_check (mac_store_sta_remove (t->mac_store, mpdu->rx.params.tei));
+ blk_release (mpdu->rx.mfs);
+ }
}
void
@@ -88,12 +93,12 @@ check_pb_stats_context (test_t test, sar_test_t *t, pb_stats_check_t *check)
}
void
-check_bitmap (test_t test, u32 *check, sar_pb_stats_entry_t *entry)
+check_bitmap (test_t test, int nb_pb, u32 *check, sar_pb_stats_entry_t *entry)
{
test_within(test);
int i;
- test_fail_unless (entry->pb_nb == MAX_PB_PER_MPDU);
+ test_fail_unless (entry->pb_nb == nb_pb);
for (i=0; i<entry->pb_nb; i++)
{
@@ -144,38 +149,6 @@ test_case_recording_stats (test_t test)
{
test_case_begin (test, "writing");
- test_begin (test, "Write many times the buffer")
- {
- pb_stats_check_t ctx_test = { 0, 0, 0, 0, 0};
- sar_mpdu_t mpdu;
- sar_test_t t;
- uint i;
-
- sar_test_init (&t, INVALID_PTR, INVALID_PTR);
- sar_pb_stats_load_write_cb (1);
-
- for (i=0; i<(PB_STATS_NB_ENTRY*NB_BUFFER_WRITE); i++)
- {
- u8 nb_pb = (i % (MAX_PB_PER_MPDU -1)) + 1;
-
- sar_test_create_mpdu (&mpdu,
- nb_pb,
- 0, /* ssn */
- 0x1, /* tei */
- 2, /* lid */
- false /* crc_error */
- );
-
- run_pb_stats_capture (&t, &mpdu);
-
- next_capture_context (&ctx_test, nb_pb);
- check_pb_stats_context (test, &t, &ctx_test);
- }
- sar_cleanup (t.sar);
- sar_test_uninit (&t);
- }
- test_end;
-
test_begin (test, "Write mpdu with random errors")
{
pb_stats_check_t ctx_test = { 0, 0, 0, 0, 0};
@@ -185,21 +158,22 @@ test_case_recording_stats (test_t test)
sar_test_init (&t, INVALID_PTR, INVALID_PTR);
sar_pb_stats_load_write_cb (1);
- for (j=0; j<NB_MPDU_WITH_RANDOM_CRC; j++)
+ for (j=0; j<(PB_STATS_NB_ENTRY*NB_BUFFER_WRITE); j++)
{
sar_mpdu_t mpdu;
u32 check[PB_STATS_BITMAP_SIZE] = {0,0,0,0,0,0,0,0};
sar_pb_stats_entry_t *entry = NULL;
+ int nb_pb = (j % (MAX_PB_PER_MPDU -1)) + 1;
- generate_a_mpdu_with_random_errors (&mpdu, &check[0]);
+ generate_a_mpdu_with_random_errors (&mpdu, nb_pb, &check[0]);
run_pb_stats_capture (&t, &mpdu);
/* Check context */
- next_capture_context (&ctx_test, MAX_PB_PER_MPDU);
+ next_capture_context (&ctx_test, nb_pb);
check_pb_stats_context (test, &t, &ctx_test);
/* Check the entry recorded */
entry = (sar_pb_stats_entry_t*) blk_table_get (
- t.sar->pb_stats.table, j);
- check_bitmap (test, &check[0], entry);
+ t.sar->pb_stats.table, j%PB_STATS_NB_ENTRY);
+ check_bitmap (test, nb_pb, &check[0], entry);
}
sar_cleanup (t.sar);
@@ -297,7 +271,7 @@ test_case_reading_stats (test_t test)
for (i=0; i<NB_ENTRY_TO_READ; i++)
{
- generate_a_mpdu_with_random_errors (&mpdu, &check[i][0]);
+ generate_a_mpdu_with_random_errors (&mpdu, MAX_PB_PER_MPDU, &check[i][0]);
run_pb_stats_capture (&t, &mpdu);
}
@@ -336,7 +310,7 @@ test_case_reading_stats (test_t test)
/* Check the entry recorded */
check_pb_stats_context (test, &t, &ctx_test);
- check_bitmap (test, &check[i][0], entry);
+ check_bitmap (test, MAX_PB_PER_MPDU, &check[i][0], entry);
/* Try to write */
sar_test_create_mpdu (&mpdu, MAX_PB_PER_MPDU, /* nb_pb */
0, /* ssn */ 0x1, /* tei */
diff --git a/cesar/mac/sar/test/unit_test/ecos/src/tests.c b/cesar/mac/sar/test/unit_test/ecos/src/tests.c
index 2186f60df2..825a87514e 100644
--- a/cesar/mac/sar/test/unit_test/ecos/src/tests.c
+++ b/cesar/mac/sar/test/unit_test/ecos/src/tests.c
@@ -312,7 +312,7 @@ sar_test_data_create (pb_t **first, pb_t **last, uint pb_nb, u16 ssn,
lib_rnd_t rnd;
bitstream_t stream;
pb_t *pb;
- uint nb_frames_1518 = (pb_nb * BLK_SIZE) / 1518;
+ uint nb_frames_max_size = (pb_nb * BLK_SIZE) / ETH_PACKET_MAX_SIZE;
uint i, j;
u8 buffer [1522];
lib_rnd_init (&rnd, seed);
@@ -339,8 +339,8 @@ sar_test_data_create (pb_t **first, pb_t **last, uint pb_nb, u16 ssn,
bitstream_write_init (&stream, pb->data, BLK_SIZE);
bitstream_init_buffer_cb (&stream, sar_test_bitstream_change_pb,
&pb_list);
- memset (buffer, 0xff, 1518);
- for (i = 0; i < nb_frames_1518; i++)
+ memset (buffer, 0xff, ETH_PACKET_MAX_SIZE);
+ for (i = 0; i < nb_frames_max_size; i++)
{
pb_list.pb_prev->header.mfbf = true;
pb_list.pb_prev->header.mfbo = BLK_SIZE
@@ -352,7 +352,7 @@ sar_test_data_create (pb_t **first, pb_t **last, uint pb_nb, u16 ssn,
for (j = 0; j < 1514; j++)
bitstream_write (&stream, 0xff, 8);
/* CRC. */
- bitstream_write (&stream, sar_test_compute_crc (buffer, 1518), 32);
+ bitstream_write (&stream, sar_test_compute_crc (buffer, ETH_PACKET_MAX_SIZE), 32);
}
if (bitstream_available_bits (&stream) >= 2)
bitstream_write (&stream, SAR_MF_TYPE_NONE, 2);
diff --git a/cesar/maximus/stationtest/src/test_ether.c b/cesar/maximus/stationtest/src/test_ether.c
index 40330a592e..5608038029 100644
--- a/cesar/maximus/stationtest/src/test_ether.c
+++ b/cesar/maximus/stationtest/src/test_ether.c
@@ -73,13 +73,15 @@ rx_cb_mbx (void *user_data, u32 *first_msg, uint length)
/* CNF data. */
char *cnf_data = (char *) buffer_addr;
/* REQ => CNF */
- *(cnf_data + HPAV_MMTYPE_OFFSET) = *(cnf_data + HPAV_MMTYPE_OFFSET) + 1;
+ *(cnf_data + HPAV_GET_MMTYPE_OFFSET (HPAV_MTYPE_MME)) =
+ *(cnf_data + HPAV_GET_MMTYPE_OFFSET (HPAV_MTYPE_MME)) + 1;
*(cnf_data + HPAV_MME_HEADER) = RESULT_SUCCESS;
/* CNF data length. */
uint cnf_data_length = 0;
- u16 mmtype = (u16) (*(cnf_data + HPAV_MMTYPE_OFFSET + 1) << 8) \
- | (u16) (*(cnf_data + HPAV_MMTYPE_OFFSET));
+ u16 mmtype = (
+ (u16) (*(cnf_data + HPAV_GET_MMTYPE_OFFSET (HPAV_MTYPE_MME) + 1) << 8)
+ | (u16) (*(cnf_data + HPAV_GET_MMTYPE_OFFSET (HPAV_MTYPE_MME))));
if (CM_SET_KEY_REQ_MMTYPE == mmtype)
{
cnf_data_length = CM_SET_KEY_CNF_LEN;
diff --git a/cesar/maximus/stationtest/src/test_lib_cesar.c b/cesar/maximus/stationtest/src/test_lib_cesar.c
index d3c6ab626f..e5a63eda91 100644
--- a/cesar/maximus/stationtest/src/test_lib_cesar.c
+++ b/cesar/maximus/stationtest/src/test_lib_cesar.c
@@ -8,7 +8,7 @@
/**
* \file test_lib_cesar.c
* \brief Station executable used for the test lib cesar program.
- * \ingroup
+ * \ingroup
*/
#include "common/std.h"
@@ -72,13 +72,15 @@ rx_cb_mbx (void *user_data, u32 *first_msg, uint length)
/* CNF data. */
char *cnf_data = (char *) buffer_addr;
/* REQ => CNF */
- *(cnf_data + HPAV_MMTYPE_OFFSET) = *(cnf_data + HPAV_MMTYPE_OFFSET) + 1;
+ *(cnf_data + HPAV_GET_MMTYPE_OFFSET (HPAV_MTYPE_MME)) =
+ *(cnf_data + HPAV_GET_MMTYPE_OFFSET (HPAV_MTYPE_MME)) + 1;
*(cnf_data + HPAV_MME_HEADER) = RESULT_SUCCESS;
/* CNF data length. */
uint cnf_data_length = 0;
- u16 mmtype = (u16) (*(cnf_data + HPAV_MMTYPE_OFFSET + 1) << 8) \
- | (u16) (*(cnf_data + HPAV_MMTYPE_OFFSET));
+ u16 mmtype = (
+ (u16) (*(cnf_data + HPAV_GET_MMTYPE_OFFSET (HPAV_MTYPE_MME) + 1) << 8)
+ | (u16) (*(cnf_data + HPAV_GET_MMTYPE_OFFSET (HPAV_MTYPE_MME))));
if (CM_SET_KEY_REQ_MMTYPE == mmtype)
{
cnf_data_length = CM_SET_KEY_CNF_LEN;
diff --git a/cesar/maximus/stationtest/src/test_station.c b/cesar/maximus/stationtest/src/test_station.c
index 265674f329..4222991b1d 100644
--- a/cesar/maximus/stationtest/src/test_station.c
+++ b/cesar/maximus/stationtest/src/test_station.c
@@ -8,7 +8,7 @@
/**
* \file test_station.c
* \brief Station executable used for the test station program.
- * \ingroup
+ * \ingroup
*/
#include "common/std.h"
@@ -72,13 +72,15 @@ rx_cb_mbx (void *user_data, u32 *first_msg, uint length)
/* CNF data. */
char *cnf_data = (char *) buffer_addr;
/* REQ => CNF */
- *(cnf_data + HPAV_MMTYPE_OFFSET) = *(cnf_data + HPAV_MMTYPE_OFFSET) + 1;
+ *(cnf_data + HPAV_GET_MMTYPE_OFFSET (HPAV_MTYPE_MME)) =
+ *(cnf_data + HPAV_GET_MMTYPE_OFFSET (HPAV_MTYPE_MME)) + 1;
*(cnf_data + HPAV_MME_HEADER) = RESULT_SUCCESS;
/* CNF data length. */
uint cnf_data_length = 0;
- u16 mmtype = (u16) (*(cnf_data + HPAV_MMTYPE_OFFSET + 1) << 8)\
- | (u16) (*(cnf_data + HPAV_MMTYPE_OFFSET));
+ u16 mmtype = (
+ (u16) (*(cnf_data + HPAV_GET_MMTYPE_OFFSET (HPAV_MTYPE_MME) + 1) << 8)
+ | (u16) (*(cnf_data + HPAV_GET_MMTYPE_OFFSET (HPAV_MTYPE_MME))));
if (CM_SET_KEY_REQ_MMTYPE == mmtype)
{
cnf_data_length = CM_SET_KEY_CNF_LEN;
diff --git a/cesar/projects/eoc/master-Config b/cesar/projects/eoc/master-Config
index f8f8bf3c01..fe9c3044a0 100644
--- a/cesar/projects/eoc/master-Config
+++ b/cesar/projects/eoc/master-Config
@@ -1,3 +1,4 @@
+CONFIG_COMMON_DEFS_TWICEVLAN = y
CONFIG_TRACE_ON_FATAL = y
CONFIG_TRACE = n
CONFIG_DEBUG_CLAIM = n
diff --git a/cesar/projects/eoc/slave-Config b/cesar/projects/eoc/slave-Config
index a9e2e67022..1e79201a88 100644
--- a/cesar/projects/eoc/slave-Config
+++ b/cesar/projects/eoc/slave-Config
@@ -1,3 +1,4 @@
+CONFIG_COMMON_DEFS_TWICEVLAN = y
CONFIG_TRACE_ON_FATAL = y
CONFIG_TRACE = n
CONFIG_DEBUG_CLAIM = n
diff --git a/cesar/tools/sniffer_phy/src/mme.c b/cesar/tools/sniffer_phy/src/mme.c
index 2ab60a7ff6..aa1f469759 100644
--- a/cesar/tools/sniffer_phy/src/mme.c
+++ b/cesar/tools/sniffer_phy/src/mme.c
@@ -90,7 +90,7 @@ mme_send_prepare (sniffer_phy_t *ctx, mme_buffer_t *mme, mac_t da,
ETH_PACKET_MAX_SIZE);
bitstream_write_large (&mme->bitstream, mme->da, 48);
bitstream_write_large (&mme->bitstream, mme->sa, 48);
- bitstream_write (&mme->bitstream, swap16 (HPAV_MTYPE_MME), 16);
+ bitstream_write (&mme->bitstream, HPAV_MTYPE_MME, 16);
bitstream_write (&mme->bitstream, HPAV_MMV1, 8);
bitstream_write (&mme->bitstream, mmtype, 16);
bitstream_write (&mme->bitstream, 0, 16);
@@ -297,7 +297,7 @@ mme_handle_decode (sniffer_phy_t *ctx, mme_buffer_t *mme)
mme->da = bitstream_read_large (&mme->bitstream, 48);
mme->sa = bitstream_read_large (&mme->bitstream, 48);
u16 ethertype = bitstream_read (&mme->bitstream, 16);
- if (ethertype != swap16 (HPAV_MTYPE_MME))
+ if (ethertype != HPAV_MTYPE_MME)
return;
/* Decode MME header. */
u8 mmv = bitstream_read (&mme->bitstream, 8);
diff --git a/common/tests/tests b/common/tests/tests
index 1bd824b852..184392d4e1 100644
--- a/common/tests/tests
+++ b/common/tests/tests
@@ -311,7 +311,7 @@ make host
sar_rx_perf: obj/host/sar_rx_perf.elf
sar_rx_perf_huge_mpdu: obj/host/sar_rx_perf_huge_mpdu.elf
sar_tx_perf: obj/host/sar_tx_perf.elf
-sar_rx_perf_huge_mpdu_1518: obj/host/sar_rx_perf_huge_mpdu_1518.elf
+sar_rx_perf_huge_mpdu_max_eth: obj/host/sar_rx_perf_huge_mpdu_max_eth.elf
sar_rx_tx: obj/host/sar_rx_tx.elf
sar_tx_rx: obj/host/sar_tx_rx.elf