Commit 3d752de8 authored by garciay's avatar garciay
Browse files

Simplify Payload for GeoNetworking & BTP

==> Check TODO in Security ATS
parent 57568362
......@@ -4,9 +4,6 @@ module LibItsBtp_EncdecDeclarations {
import from LibItsBtp_TypesAndValues all;
import from LibItsBtp_TestSystem all;
external function fx_enc_BtpPayload (BtpPayload p) return bitstring
with {extension "prototype(convert) encode(LibItsBtp_BtpPayload)"}
/* TODO RGy function not implemented! (decvalue() not used by test suite @29-06-2016)
external function fx_dec_BtpPayload (inout bitstring b, out BtpPayload p) return integer
with {extension "prototype(sliding) decode(LibItsBtp)"}
......
......@@ -234,7 +234,7 @@
* @desc Gets the BTP payload to use.
* @return BTP payload
*/
function f_getBtpPayload() return BtpPayload {
function f_getBtpPayload() return BtpRawPayload {
return PX_PAYLOAD;
}
......
......@@ -43,10 +43,7 @@ module LibItsBtp_Pixits {
* @desc Payload to be sent to the IUT for testing matter
*
*/
modulepar BtpPayload PX_PAYLOAD := {
decodedPayload := omit,
rawPayload := '0102030405'O
};
modulepar BtpRawPayload PX_PAYLOAD := '0102030405'O ;
} // end LibItsBtp_Pixits
\ No newline at end of file
......@@ -89,7 +89,7 @@ module LibItsBtp_Templates {
* @param p_payload Payload
*/
template (value) BtpPacket m_btpA (
template (value) BtpPayload p_payload
template (value) BtpRawPayload p_payload
):= {
header := {
btpAHeader := {
......@@ -107,7 +107,7 @@ module LibItsBtp_Templates {
* @param p_payload Payload
*/
template( value) BtpPacket m_btpB (
template (value) BtpPayload p_payload
template (value) BtpRawPayload p_payload
) := {
header := {
btpBHeader := {
......@@ -125,9 +125,9 @@ module LibItsBtp_Templates {
* @param p_payload Payload
*/
template (value) BtpPacket m_btpAWithPorts (
template (value) BtpPortId p_destPort,
template (value) BtpPortId p_srcPort,
template (value) BtpPayload p_payload
template (value) BtpPortId p_destPort,
template (value) BtpPortId p_srcPort,
template (value) BtpRawPayload p_payload
):= {
header := {
btpAHeader := {
......@@ -145,9 +145,9 @@ module LibItsBtp_Templates {
* @param p_payload Payload
*/
template( value) BtpPacket m_btpBWithPorts (
template (value) BtpPortId p_destPort,
template (value) BtpPortInfo p_destPortInfo,
template (value) BtpPayload p_payload
template (value) BtpPortId p_destPort,
template (value) BtpPortInfo p_destPortInfo,
template (value) BtpRawPayload p_payload
) := {
header := {
btpBHeader := {
......@@ -165,9 +165,9 @@ module LibItsBtp_Templates {
* @param p_payload Payload
*/
template BtpPacket mw_btpA (
template (present) BtpPortId p_destPort,
template (present) BtpPortId p_srcPort,
template BtpPayload p_payload
template (present) BtpPortId p_destPort,
template (present) BtpPortId p_srcPort,
template BtpRawPayload p_payload
) := {
header := {
btpAHeader := {
......@@ -185,9 +185,9 @@ module LibItsBtp_Templates {
* @param p_payload Payload
*/
template BtpPacket mw_btpB (
template (present) BtpPortId p_destPort,
template (present) BtpPortInfo p_destPortInfo,
template BtpPayload p_payload
template (present) BtpPortId p_destPort,
template (present) BtpPortInfo p_destPortInfo,
template BtpRawPayload p_payload
) := {
header := {
btpBHeader := {
......
......@@ -14,14 +14,7 @@ module LibItsBtp_TypesAndValues {
// LibCommon
import from LibCommon_BasicTypesAndValues all;
// LibIts
import from CAM_PDU_Descriptions language "ASN.1:1997" all;
import from DENM_PDU_Descriptions language "ASN.1:1997" all;
import from MAPEM_PDU_Descriptions language "ASN.1:1997" all;
import from SPATEM_PDU_Descriptions language "ASN.1:1997" all;
import from IVIM_PDU_Descriptions language "ASN.1:1997" all;
import from SREM_PDU_Descriptions language "ASN.1:1997" all;
import from SSEM_PDU_Descriptions language "ASN.1:1997" all;
type octetstring BtpRawPayload;
group btpPdus {
......@@ -33,9 +26,10 @@ module LibItsBtp_TypesAndValues {
*/
type record BtpPacket {
BtpHeader header,
BtpPayload payload optional
BtpRawPayload payload optional
}
with {
variant "FIELDORDER(msb)"
encode "LibIts_Interface"
}
......@@ -52,7 +46,10 @@ module LibItsBtp_TypesAndValues {
type union BtpHeader {
BtpAHeader btpAHeader,
BtpBHeader btpBHeader
}
} with {
variant "FIELDORDER(msb)"
}
/**
* @desc BTP-A Header
......@@ -63,7 +60,10 @@ module LibItsBtp_TypesAndValues {
type record BtpAHeader {
BtpPortId destinationPort,
BtpPortId sourcePort
}
} with {
variant "FIELDORDER(msb)"
}
/**
* @desc BTP-B Header
......@@ -74,7 +74,10 @@ module LibItsBtp_TypesAndValues {
type record BtpBHeader {
BtpPortId destinationPort,
BtpPortInfo destinationPortInfo
}
} with {
variant "FIELDORDER(msb)"
}
/**
* @desc BTP Port ID
......@@ -90,53 +93,6 @@ module LibItsBtp_TypesAndValues {
} // end btpHeaders
group btpPayload {
type octetstring BtpRawPayload;
/**
* @desc The payload of the BTP packet
* @member decodedPayload The decoded payload
* @member rawPayload Raw payload as it is received
*/
type record BtpPayload {
DecodedBtpPayload decodedPayload optional,
BtpRawPayload rawPayload
}
with {
encode "LibItsBtp_BtpPayload"
}
/**
* @desc The decoded payload of the BTP packet
* @member camPacket The CAM packet
* @member denmPacket The DENM packet
* @member mapemPacket
* @member spatemPacket
* @member ivimPacket
* @member sremPacket
* @member seemPacket
*/
type union DecodedBtpPayload {
CAM camPacket,
DENM denmPacket,
MAPEM mapemPacket,
SPATEM spatemPacket,
IVIM ivimPacket,
SREM sremPacket,
SSEM ssemPacket
} with {
encode (camPacket) "PER";
encode (denmPacket) "PER";
encode (mapemPacket) "PER";
encode (spatemPacket) "PER";
encode (ivimPacket) "PER";
encode (sremPacket) "PER";
encode (ssemPacket) "PER"
}
} //end btpPayload
group utPrimitives {
group utCommonPrimitives {
......@@ -194,4 +150,8 @@ module LibItsBtp_TypesAndValues {
encode "UpperTester"
}
} with {
variant ""
encode "LibItsGeoNetworking"
}
......@@ -21,12 +21,6 @@ module LibItsGeoNetworking_EncdecDeclarations {
external function fx_dec_GeoNetworkingPdu (inout bitstring b, out GeoNetworkingPdu p) return integer
with {extension "prototype(sliding) decode(LibItsGeoNetworking)"}
external function fx_enc_Payload (Payload p) return bitstring
with {extension "prototype(convert) encode(LibItsGeoNetworking)"}
external function fx_dec_Payload (inout bitstring b, out Payload p) return integer
with {extension "prototype(sliding) decode(LibItsGeoNetworking)"}
external function fx_enc_GnNonSecuredPacket (GnNonSecuredPacket p) return bitstring
with {extension "prototype(convert) encode(LibItsGeoNetworking)"}
......
......@@ -2052,7 +2052,7 @@ module LibItsGeoNetworking_Functions {
*/
function f_sendGeoNetMessageWithPayload(
in template (value) GeoNetworkingReq p_geoNetReq,
in template (value) Payload p_payload
in template (value) GnRawPayload p_payload
) runs on ItsGeoNetworking {
p_geoNetReq.msgOut.gnPacket.packet.payload := p_payload;
geoNetworkingPort.send(p_geoNetReq);
......@@ -2070,7 +2070,7 @@ module LibItsGeoNetworking_Functions {
*/
function f_receiveGeoNetMessageWithPayload(
in template (present) GeoNetworkingInd p_geoNetInd,
in template (present) Payload p_payload
in template (present) GnRawPayload p_payload
) return template (present) GeoNetworkingInd {
var template (present) GeoNetworkingInd v_geoNetInd := p_geoNetInd;
......@@ -2796,7 +2796,7 @@ module LibItsGeoNetworking_Functions {
f_getPosition(c_compNodeC) // FIXME To be verified YANN
));
// Add CAM payload
v_gnNonSecuredPacket.payload := valueof(f_adaptPayload_m(p_payload));
v_gnNonSecuredPacket.payload := valueof(p_payload);
f_buildGnSecuredCam(
v_securedMessage,
......@@ -2846,7 +2846,7 @@ module LibItsGeoNetworking_Functions {
f_getPosition(c_compNodeC) // FIXME To be verified YANN
));
// Add CAM payload
v_gnNonSecuredPacket.payload := valueof(f_adaptPayload_m(p_payload));
v_gnNonSecuredPacket.payload := valueof(p_payload);
f_buildGnSecuredCam(
v_securedMessage,
......
......@@ -110,7 +110,7 @@ module LibItsGeoNetworking_Templates {
gnAddress := p_destinationGnAddr,
lifetime := c_lifetime,
trafficClass := valueof(m_trafficClass),
payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here
payload := ''O
}
}
......@@ -155,7 +155,7 @@ module LibItsGeoNetworking_Templates {
octetstring p_payload
) modifies m_generateGeoUnicastMessage := {
geoUnicast := {
payload := { decodedPayload := omit, rawPayload := p_payload} // do not use f_adaptPayload_m here
payload := p_payload
}
}
......@@ -172,7 +172,7 @@ module LibItsGeoNetworking_Templates {
octetstring p_payload
) modifies m_generateGeoUnicastMessageWithLifetime := {
geoUnicast := {
payload := { decodedPayload := omit, rawPayload := p_payload} // do not use f_adaptPayload_m here
payload := p_payload
}
}
......@@ -189,7 +189,7 @@ module LibItsGeoNetworking_Templates {
trafficClass := valueof(m_trafficClass),
reserved := c_uInt24Zero,
area := p_geoArea.area,
payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here
payload := ''O
}
}
......@@ -232,7 +232,7 @@ module LibItsGeoNetworking_Templates {
octetstring p_payload
) modifies m_generateGeoBroadcastMessage := {
geoBroadcast := {
payload := { decodedPayload := omit, rawPayload := p_payload} // do not use f_adaptPayload_m here
payload := p_payload
}
}
......@@ -249,7 +249,7 @@ module LibItsGeoNetworking_Templates {
trafficClass := valueof(m_trafficClass),
reserved := c_uInt24Zero,
area := p_geoArea.area,
payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here
payload := ''O
}
}
......@@ -279,7 +279,7 @@ module LibItsGeoNetworking_Templates {
octetstring p_payload
) modifies m_generateGeoAnycastMessage := {
geoAnycast := {
payload := { decodedPayload := omit, rawPayload := p_payload} // do not use f_adaptPayload_m here
payload := p_payload
}
}
......@@ -289,7 +289,7 @@ module LibItsGeoNetworking_Templates {
template (value) UtGnTrigger m_generateShbMessage := {
shb := {
trafficClass := valueof(m_trafficClass),
payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here
payload := ''O
}
}
......@@ -315,7 +315,7 @@ module LibItsGeoNetworking_Templates {
octetstring p_payload
) modifies m_generateShbMessage := {
shb := {
payload := { decodedPayload := omit, rawPayload := p_payload} // do not use f_adaptPayload_m here
payload := p_payload
}
}
......@@ -327,7 +327,7 @@ module LibItsGeoNetworking_Templates {
nbHops := 10,
lifetime := c_lifetime,
trafficClass := valueof(m_trafficClass),
payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here
payload := ''O
}
}
......@@ -542,7 +542,7 @@ module LibItsGeoNetworking_Templates {
packet := valueof({
commonHeader := p_commonHeader,
extendedHeader := p_extHeader,
payload := f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD"))
payload := char2oct("DEFAULT_PAYLOAD")
}),
securedMsg := omit
}
......@@ -563,24 +563,6 @@ module LibItsGeoNetworking_Templates {
}
}
/**
* @desc Send template for GeoNetworking Packet with octetstring payload
* @param p_basicHeader Common header of GeoNetworking packet
* @param p_extHeader Extended header of GeoNetworking packet
* @param p_payload Octetstring payload
*
* @see m_geoNwPacket
*/
template (value) GeoNetworkingPacket m_geoNwPacketWithOctetstringPayload(
in template (value) CommonHeader p_commonHeader,
in template (value) ExtendedHeader p_extHeader,
in template (value) octetstring p_payload
) modifies m_geoNwPacket := {
packet := {
payload := valueof(f_adaptPayload_m(p_payload))
}
}
/**
* @desc Send template for GeoNetworking Packet with payload
* @param p_basicHeader Common header of GeoNetworking packet
......@@ -592,7 +574,7 @@ module LibItsGeoNetworking_Templates {
template (value) GeoNetworkingPacket m_geoNwPacketWithPayload(
in template (value) CommonHeader p_commonHeader,
in template (value) ExtendedHeader p_extHeader,
in template (value) Payload p_payload
in template (value) GnRawPayload p_payload
) modifies m_geoNwPacket := {
packet := {
payload := p_payload
......@@ -650,7 +632,7 @@ module LibItsGeoNetworking_Templates {
in template (present) octetstring p_payload
) modifies mw_geoNwPacket := {
packet := {
payload := f_adaptPayload_mw(p_payload)
payload := p_payload
}
}
......@@ -667,7 +649,7 @@ module LibItsGeoNetworking_Templates {
template(present) GeoNetworkingPacket mw_geoNwPduWithPayload(
in template (present) CommonHeader p_commonHeader,
in template (present) ExtendedHeader p_extHeader,
in template (present) Payload p_payload
in template (present) GnRawPayload p_payload
) modifies mw_geoNwPacket := {
packet := {
payload := p_payload
......@@ -693,7 +675,7 @@ module LibItsGeoNetworking_Templates {
* @param payload Expected GN payload
*/
template (present) GnNonSecuredPacket mw_geoNwAnyPacket_withPayload(
template (present) Payload p_payload
template (present) GnRawPayload p_payload
) := {
commonHeader := mw_commonHeader(
?,
......@@ -733,7 +715,7 @@ module LibItsGeoNetworking_Templates {
p_destinationShortPosVec,
p_seqNumber
)),
payload := valueof(f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")))
payload := valueof(char2oct("DEFAULT_PAYLOAD"))
}
/**
......@@ -844,7 +826,7 @@ module LibItsGeoNetworking_Templates {
p_seqNumber,
p_anycastArea
)),
payload := valueof(f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")))
payload := valueof(char2oct("DEFAULT_PAYLOAD"))
}
/**
......@@ -958,7 +940,7 @@ module LibItsGeoNetworking_Templates {
p_seqNumber,
p_broadcastArea
)),
payload := valueof(f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")))
payload := valueof(char2oct("DEFAULT_PAYLOAD"))
}
/**
......@@ -1009,7 +991,7 @@ module LibItsGeoNetworking_Templates {
in template (present) LongPosVector p_sourceLongPosVec,
in template (present) UInt16 p_seqNumber,
in template (present) NextHeader p_nextHeader,
in template (present) Payload p_payload
in template (present) GnRawPayload p_payload
) modifies mw_geoNwBroadcastPacketWithNextHeader := {
payload := p_payload
}
......@@ -1138,10 +1120,7 @@ module LibItsGeoNetworking_Templates {
p_seqNumber,
p_mid
),
payload := {
decodedPayload := omit,
rawPayload := ''O
}
payload := omit
}
/**
......@@ -1183,10 +1162,7 @@ module LibItsGeoNetworking_Templates {
extendedHeader := mw_lsReplyHeader(
p_sourceLongPosVec, p_destinationLongPosVec
),
payload := {
decodedPayload := omit,
rawPayload := ''O
}
payload := omit
}
} // end group geoNwPacketLsTemplates
......@@ -1227,16 +1203,7 @@ module LibItsGeoNetworking_Templates {
m_beaconHeaderType
),
extendedHeader := mw_beaconHeader(p_sourceLongPosVec),
payload := (
{
decodedPayload := omit,
rawPayload := ''O
},
{ // Ethernet testing requires minimum packet size of 60 bytes
decodedPayload := *,
rawPayload := '00000000000000000000'O
}
)
payload := (*, '00000000000000000000'O)
}
} // end group geoNwPacketBeaconTemplates
......@@ -1259,7 +1226,7 @@ module LibItsGeoNetworking_Templates {
extendedHeader := valueof(m_shbHeader(
p_sourceLongPosVec
)),
payload := valueof(f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")))
payload := valueof(char2oct("DEFAULT_PAYLOAD"))
}
/**
......@@ -1306,7 +1273,7 @@ module LibItsGeoNetworking_Templates {
p_seqNumber,
p_sourceLongPosVec
)),
payload := valueof(f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")))
payload := valueof(char2oct("DEFAULT_PAYLOAD"))
}
/**
......@@ -2316,77 +2283,4 @@ module LibItsGeoNetworking_Templates {
} // end geoMiscTemplates
group geoTemplateFunctions {
function f_adaptPayloadForUtInd_m(in template (omit) Payload p_gnPayload) return octetstring {
if(not isvalue(p_gnPayload)) {
testcase.stop(__SCOPE__ & " can handle payload values only");
}
if(PX_BTP_IN_UT_IND == false) {
if(PX_GN_UPPER_LAYER == e_btpA or PX_GN_UPPER_LAYER == e_btpB) {
if( ispresent(p_gnPayload.decodedPayload) ){
return bit2oct(encvalue(p_gnPayload.decodedPayload.btpPacket.payload));
}
return valueof(p_gnPayload.rawPayload);
}
}
return bit2oct(encvalue(valueof(p_gnPayload)));
}
function f_adaptPayload_m(in template (value) octetstring p_finalPayload) return template (value) Payload {
var template (value) Payload v_payload;
if(PX_GN_UPPER_LAYER == e_any) {
v_payload := { decodedPayload := omit, rawPayload := p_finalPayload};
return v_payload;
}
if(PX_GN_UPPER_LAYER == e_ipv6) {
v_payload := { decodedPayload := { ipv6Packet := m_ipv6Packet(c_unspecified, c_allNodesMca, c_noNextHdr, m_octetstringPayload(p_finalPayload))}, rawPayload := ''O};
return v_payload;
}
if(PX_GN_UPPER_LAYER == e_btpA) {
v_payload := { decodedPayload := { btpPacket := m_btpA({ decodedPayload := omit, rawPayload := p_finalPayload })}, rawPayload := ''O};
return v_payload;
}
if(PX_GN_UPPER_LAYER == e_btpB) {
v_payload := { decodedPayload := { btpPacket := m_btpB({ decodedPayload := omit, rawPayload := p_finalPayload })}, rawPayload := ''O};
return v_payload;
}
return v_payload;
}
function f_adaptPayload_mw(in template (present) octetstring p_finalPayload) return template (present) Payload {
var template (present) Payload v_payload;
if(PX_GN_UPPER_LAYER == e_any) {
v_payload := { decodedPayload := *, rawPayload := p_finalPayload};
return v_payload;
}
if(PX_GN_UPPER_LAYER == e_ipv6) {
v_payload := { decodedPayload := { ipv6Packet := mw_ipv6Packet(?, ?, ?, mw_octetstringPayload(p_finalPayload))}, rawPayload := ?};
return v_payload;
}
if(PX_GN_UPPER_LAYER == e_btpA) {
v_payload := { decodedPayload := { btpPacket := mw_btpA(?, ?, { decodedPayload := *, rawPayload := p_finalPayload } )}, rawPayload := ?};
return v_payload;
}
if(PX_GN_UPPER_LAYER == e_btpB) {
v_payload := { decodedPayload := { btpPacket := mw_btpB(?, ?, { decodedPayload := *, rawPayload := p_finalPayload })}, rawPayload := ?};
return v_payload;
}
return v_payload;
}
} // end geoTemplateFunctions
} // end ItsGeoNetworking_Templates
\ No newline at end of file
......@@ -195,10 +195,12 @@ module LibItsGeoNetworking_TypesAndValues {
encode (securedMsg) "LibItsSecurity"
}
type octetstring GnRawPayload;