Commit 79565848 authored by berge's avatar berge
Browse files

Changed payload handling

parent 3bda0648
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -158,6 +158,14 @@ module LibItsGeoNetworking_Pixits {
            modulepar integer PX_POS_DELTA := 1;
        }

        group upperLayer {
        
            /**
             * @desc The IUT's upper layer 
             */
            modulepar NextHeader PX_GN_UPPER_LAYER := e_any;	
        }

    } // end geoNetworkingPixits
    
} // end LibItsGeoNetworking_Pixits
+71 −13
Original line number Diff line number Diff line
@@ -14,7 +14,9 @@ module LibItsGeoNetworking_Templates {
    // LibIts
    import from LibIts_Interface all;
    import from LibItsGeoNetworking_TypesAndValues all;
    import from LibItsIpv6OverGeoNetworking_TypesAndValues {type MacAddress}
    import from LibItsIpv6OverGeoNetworking_TypesAndValues all;
    import from LibItsIpv6OverGeoNetworking_Templates all;
    import from LibItsBtp_Templates all;
    import from LibItsGeoNetworking_Pixits all;
    import from LibItsCommon_TypesAndValues all;
    
@@ -115,11 +117,11 @@ module LibItsGeoNetworking_Templates {
             */
            template UtEvent m_generateGeoUnicastMessageWithPayload(
                GN_Address p_destinationGnAddr,
                Payload p_payload
                octetstring p_payload
            ) modifies m_generateGeoUnicastMessage := {
                utGnEvent := {
                    geoUnicast := {
                        payload := p_payload
                        payload := f_adaptPayload_m(p_payload)
                    }
                }
            }
@@ -147,11 +149,11 @@ module LibItsGeoNetworking_Templates {
             */
            template UtEvent m_generateGeoBroadcastMessageWithPayload(
                GeoArea p_area,
                Payload p_payload
                octetstring p_payload
            ) modifies m_generateGeoBroadcastMessage := {
                utGnEvent := {
                    geoBroadcast := {
                        payload := p_payload
                        payload := f_adaptPayload_m(p_payload)
                    }
                }
            }
@@ -179,11 +181,11 @@ module LibItsGeoNetworking_Templates {
             */
            template UtEvent m_generateGeoAnycastMessageWithPayload(
                GeoArea p_area,
                Payload p_payload
                octetstring p_payload
            ) modifies m_generateGeoAnycastMessage := {
                utGnEvent := {
                    geoAnycast := {
                        payload := p_payload
                        payload := f_adaptPayload_m(p_payload)
                    }
                }
            }
@@ -205,11 +207,11 @@ module LibItsGeoNetworking_Templates {
             * @see     m_generateShbMessage
             */
            template UtEvent m_generateShbMessageWithPayload(
                Payload p_payload
                octetstring p_payload
            ) modifies m_generateShbMessage := {
                utGnEvent := {
                    shb := {
                        payload := p_payload
                        payload := f_adaptPayload_m(p_payload)
                    }
                }
            }
@@ -358,9 +360,9 @@ module LibItsGeoNetworking_Templates {
         */
        template (value) GeoNetworkingPacket m_geoNwPduWithPayload(
            in template (value) Header p_header, 
            in template (value) Payload p_payload
            in template (value) octetstring p_payload
        ) modifies m_geoNwPdu := {
            payload := p_payload
            payload := f_adaptPayload_m(p_payload)
        }
        
        /**
@@ -394,9 +396,9 @@ module LibItsGeoNetworking_Templates {
         */
        template GeoNetworkingPacket mw_geoNwPduWithPayload(
            in template (present) Header p_header, 
            in template (present) Payload p_payload
            in template (present) octetstring p_payload
        ) modifies mw_geoNwPdu := {
            payload := p_payload
            payload := f_adaptPayload_mw(p_payload)
        }     
                
    } // end geoNwPduTemplates
@@ -1755,4 +1757,60 @@ module LibItsGeoNetworking_Templates {
        
    } // end geoMiscTemplates
    
    group geoTemplateFunctions {
    
        function f_adaptPayload_m(in octetstring p_finalPayload) return template (value) Payload {
        	var template (value) Payload v_payload;
        	
        	if(PX_GN_UPPER_LAYER == e_any) {
        	   v_payload := { otherPayload := p_finalPayload};
        	   return v_payload;	
        	}
        	
        	if(PX_GN_UPPER_LAYER == e_ipv6) {
               v_payload := { ipv6Packet := m_ipv6Packet(c_unspecified, c_allNodesMca, c_noNextHdr, m_octetstringPayload(p_finalPayload))};
               return v_payload;    
            }
            
            if(PX_GN_UPPER_LAYER == e_btpA) {
               v_payload := { btpPacket := m_btpA(3751 /*FIXME*/, 3751/*FIXME*/, p_finalPayload)};
               return v_payload;    
            }
            
            if(PX_GN_UPPER_LAYER == e_btpB) {
               v_payload := { btpPacket := m_btpB(3751 /*FIXME*/, 0, p_finalPayload)};
               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 := { otherPayload := p_finalPayload};
               return v_payload;    
            }
            
            if(PX_GN_UPPER_LAYER == e_ipv6) {
               v_payload := { ipv6Packet := mw_ipv6Packet(?, ?, ?, mw_octetstringPayload(p_finalPayload))};
               return v_payload;    
            }
            
            if(PX_GN_UPPER_LAYER == e_btpA) {
               v_payload := { btpPacket := mw_btpA(?, ?, p_finalPayload)};
               return v_payload;    
            }
            
            if(PX_GN_UPPER_LAYER == e_btpB) {
               v_payload := { btpPacket := mw_btpB(?, ?, p_finalPayload)};
               return v_payload;    
            }
            
            return v_payload;
        }   
                
    } // end geoTemplateFunctions
    
} // end ItsGeoNetworking_Templates
 No newline at end of file
+2 −0
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ module LibItsGeoNetworking_TypesAndValues {

    //LibIts
    import from LibItsIpv6OverGeoNetworking_TypesAndValues {type Ipv6Packet; type MacAddress}
    import from LibItsBtp_TypesAndValues {type BtpPacket}
    
    group linkLayerConstants {
    	
@@ -901,6 +902,7 @@ module LibItsGeoNetworking_TypesAndValues {
         */
        type union Payload {
            Ipv6Packet ipv6Packet,
            BtpPacket btpPacket,
            octetstring otherPayload
        }
        
+60 −1
Original line number Diff line number Diff line
@@ -94,13 +94,31 @@ module LibItsIpv6OverGeoNetworking_Templates {
            ipv6Payload := p_payload
        }

        /**
         * @desc    Reception template for IPv6 packet
         * @param   p_srcAddr   IPv6 source address
         * @param   p_dstAddr   IPv6 destination address
         * @param   p_nextHdr   IPv6's next header
         * @param   p_payload   IPv6 payload
         */
        template Ipv6Packet mw_ipv6Packet(
            in template Ipv6Address p_srcAddr,
            in template Ipv6Address p_dstAddr,
            in template UInt8 p_nextHdr,
            in template Ipv6Payload p_payload
        ) := {
            ipv6Hdr := mw_ipv6Header(p_srcAddr, p_dstAddr, p_nextHdr),
            extHdrList := omit,
            ipv6Payload := p_payload
        }
        
        /**
         * @desc    Send template for IPv6 header
         * @param   p_srcAddr   IPv6 source address
         * @param   p_dstAddr   IPv6 destination address
         * @param   p_nextHdr   IPv6's next header
         */
        template Ipv6Header m_ipv6Header(
        template (value) Ipv6Header m_ipv6Header(
            in template (value) Ipv6Address p_srcAddr,
            in template (value) Ipv6Address p_dstAddr,
            in template (value) UInt8 p_nextHdr
@@ -115,6 +133,27 @@ module LibItsIpv6OverGeoNetworking_Templates {
            destinationAddress := p_dstAddr
        }
        
        /**
         * @desc    Receive template for IPv6 header
         * @param   p_srcAddr   IPv6 source address
         * @param   p_dstAddr   IPv6 destination address
         * @param   p_nextHdr   IPv6's next header
         */
        template Ipv6Header mw_ipv6Header(
            in template Ipv6Address p_srcAddr,
            in template Ipv6Address p_dstAddr,
            in template UInt8 p_nextHdr
        ) := {
            version := 6,
            trafficClass := ?,
            flowLabel := ?, 
            payloadLength := ?,
            nextHeader := p_nextHdr,
            hopLimit := ?,
            sourceAddress := p_srcAddr,
            destinationAddress := p_dstAddr
        }
        
        /**
         * @desc    Send template for IPv6 payload containing Router Advertisement
         * @param   p_rtAdvOptions  Router Advertisement options
@@ -138,6 +177,26 @@ module LibItsIpv6OverGeoNetworking_Templates {
            }
        }
        
        /**
         * @desc    Send template for IPv6 payload containing Router Advertisement
         * @param   p_rtAdvOptions  Router Advertisement options
         */
        template (value) Ipv6Payload m_octetstringPayload(
            in template (value) octetstring p_payload
        ) := {
        	octetstringMsg := p_payload
        }
        
        /**
         * @desc    Receive template for IPv6 payload containing Router Advertisement
         * @param   p_rtAdvOptions  Router Advertisement options
         */
        template Ipv6Payload mw_octetstringPayload(
            in template (present) octetstring p_payload
        ) := {
            octetstringMsg := p_payload
        }
        
        /**
         * @desc    Send template for IPv6 Prefix option
         * @param   p_prefixLength      Length of the prefix.
+2 −0
Original line number Diff line number Diff line
@@ -159,6 +159,8 @@ module LibItsIpv6OverGeoNetworking_TypesAndValues {
            //Wellknown Multicast Address
            const Ipv6Address c_allNodesMca := c_llaMcaPrefix & c_12ZeroBytes & c_allNodesMcaPostfix ;
            const Ipv6Address c_allRoutersMca := c_llaMcaPrefix & c_12ZeroBytes & c_allRoutersMcaPostfix ;
            //Unspecified
            const Ipv6Address c_unspecified := '00000000000000000000000000000000'O;
        }//end group ipv6Address
        
        /**