Loading ttcn/AtsCommon/AtsCommon_Interfaces.ttcn3 +3 −3 Original line number Diff line number Diff line Loading @@ -88,9 +88,9 @@ module AtsCommon_Interfaces { /** * @desc Message description for inter-component data exchanges * @member vc_aftrIPv6Address The AFTR IPv6 address * @member vc_aftrNameOption The AFTR-name option * @member vc_dnsIPv6AddressThe DNS IPv6 address * @member ipv6Address The AFTR IPv6 address * @member aftrName The AFTR-name option * @member domainSearchList DNS IPv6 address */ type record InterCompDataMsg { Ipv6Address ipv6Address, Loading ttcn/AtsCommon/AtsCommon_Templates.ttcn3 +1 −1 Original line number Diff line number Diff line Loading @@ -116,7 +116,7 @@ module AtsCommon_Templates { windowSize := ?, checksum := ?, urgentPointer := ?, options := ?, options := *, pad := *, payload := ? } // End of template mw_tcp_packet Loading ttcn/AtsDSlite/AtsDSLite_Functions.ttcn3 +37 −39 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ module AtsDSLite_Functions { InterCompDataMsg; }; import from AtsCommon_Functions all; import from AtsCommon_DNS_CommonRfcs_TypesAndValues all; // DSLite import from AtsDSLite_Interfaces { Loading @@ -46,7 +47,6 @@ module AtsDSLite_Functions { DSLiteComponent, AFTRComponent, HostComponent; }; import from AtsCommon_DNS_CommonRfcs_TypesAndValues all; group initialiseFunctions { Loading @@ -67,6 +67,7 @@ module AtsDSLite_Functions { for (v_host:=0; v_host<v_hosts; v_host:=v_host + 1) { connect(vc_hostComponents[v_host]:ipv6Port, self:ipv6HostPort); connect(vc_hostComponents[v_host]:ipv4Port, self:ipv4HostPort); connect(vc_hostComponents[v_host]:dataPort, vc_aftrComponent:dataPort); } } if (vc_dhcpv6Component != null) { Loading Loading @@ -160,44 +161,6 @@ module AtsDSLite_Functions { } // End of group postambleFunctions group helpers { /** * @desc This sends an Tcp packet from an dual stack IPv4/IPv6 node to * any NUT. Prior it modifies * @remark The template passed in must NOT contain any matching expressions! * @param p_ipv4Packet Ipv4 packet value or template with echo request to be sent * @return execution status */ function f_sendIpv4Packet (in template Ipv4Packet p_ipv4Packet) runs on HostComponent return FncRetCode { var Ipv4Packet v_ipPkt := valueof(p_ipv4Packet); if(ischosen(v_ipPkt.ipv4Payload.ipv4EchoReplyMsg)) { v_ipPkt.ipv4Payload.ipv4EchoReplyMsg.checksum := fx_calcIpv4PayloadChecksum ( v_ipPkt.ipv4Payload ); } //Build IPv4 Packet //IHL is set in templates // Update the total length v_ipPkt.ipv4Hdr.totalLength := fx_ipv4PacketTotalLength (v_ipPkt); // Compute header checksum (HCS) v_ipPkt.ipv4Hdr.hcs := fx_calcIpv4Hcs ( v_ipPkt.ipv4Hdr ); //send ipv4Port.send(v_ipPkt); return e_success; } // End of function f_sendIpv4Packet } // End of group helpers group globalSteps { /** Loading Loading @@ -319,6 +282,41 @@ module AtsDSLite_Functions { return e_error; } /** * @desc This sends an Tcp packet from an dual stack IPv4/IPv6 node to * any NUT. Prior it modifies * @remark The template passed in must NOT contain any matching expressions! * @param p_ipv4Packet Ipv4 packet value or template with echo request to be sent * @return execution status */ function f_sendIpv4Packet (in template Ipv4Packet p_ipv4Packet, out Ipv4Packet p_result) runs on HostComponent return FncRetCode { var Ipv4Packet v_ipPkt := valueof(p_ipv4Packet); if(ischosen(v_ipPkt.ipv4Payload.ipv4EchoReplyMsg)) { v_ipPkt.ipv4Payload.ipv4EchoReplyMsg.checksum := fx_calcIpv4PayloadChecksum ( v_ipPkt.ipv4Payload ); } //Build IPv4 Packet //IHL is set in templates // Update the total length v_ipPkt.ipv4Hdr.totalLength := fx_ipv4PacketTotalLength (v_ipPkt); // Compute header checksum (HCS) v_ipPkt.ipv4Hdr.hcs := fx_calcIpv4Hcs ( v_ipPkt.ipv4Hdr ); //send p_result := v_ipPkt; ipv4Port.send(v_ipPkt); return e_success; } // End of function f_sendIpv4Packet } // End of group auxiliary } // End of module AtsDSLite_Functions ttcn/AtsDSlite/AtsDSLite_Interfaces.ttcn3 +28 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,8 @@ module AtsDSLite_Interfaces { import from LibIpv6_Interface_TypesAndValues { type LibIpv6Node, Ipv4Port, Ipv6Port Ipv4Port, Ipv6Port, Ipv4Packet }; import from LibIpv6_CommonRfcsDhcp_TypesAndValues { type Loading Loading @@ -84,6 +85,28 @@ module AtsDSLite_Interfaces { group componentDesc { group componentPorts { /** * @desc Port for inter-component data exchanges */ type port HostAftrDataPort message { inout HostAftrDataMsg } // End of port HostAftrDataPort /** * @desc Message description for inter-component data exchanges * @member vc_aftrIPv6Address The AFTR IPv6 address * @member vc_aftrNameOption The AFTR-name option * @member vc_dnsIPv6AddressThe DNS IPv6 address */ type record HostAftrDataMsg { int hostId, Ipv4Packet packet } // End of type HostAftrDataMsg } // End of group componentPorts /** * @desc * @member ipv6Port Loading @@ -97,6 +120,8 @@ module AtsDSLite_Interfaces { port Ipv6Port ipv6Port; /** IPv4 message port */ port Ipv4Port ipv4Port; /** Inter-component communication port */ port HostAftrDataPort dataPort; /** Timer used for expected received message */ timer tc_ac:= PX_TAC; /** Timer used for unexpected received message */ Loading @@ -115,6 +140,8 @@ module AtsDSLite_Interfaces { type component AFTRComponent extends SelfSyncComp { /** IPv6 message port */ port Ipv6Port aftrPort; /** Inter-component communication port */ port HostAftrDataPort dataPort; /** Timer used for expected received message */ timer tc_ac:= PX_TAC; /** Timer used for unexpected received message */ Loading ttcn/AtsDSlite/AtsDSLite_Pixits.ttcn3 +23 −4 Original line number Diff line number Diff line Loading @@ -6,24 +6,43 @@ module AtsDSLite_Pixits { // LibCommon import from LibCommon_DataStrings { const c_16ZeroBytes }; // LibIPv6 import from LibIpv6_CommonRfcs_TypesAndValues { type Ipv6Address }; // DSLite import from AtsDSLite_TypesAndValues all; /** * @desc Indicates the IPv6 address of the AFTR equipment */ modulepar Ipv6Address PX_AFTR_GW_ADDRESS := c_16ZeroBytes; /** * @desc Defines a list of IPv4 host services * @see TC_DSLITE_B4_BF_BV_001 */ modulepar HostV4Descriptions PX_HOST_V4_LIST := { { srcAddress := '91fea0ed'O, srcAddress := '91fea0ed'O, // Containing source address indicating a private IPv4 address srcPort := 3372, dstAddress := '41d0e4df'O, dstAddress := '41d0e4df'O, // Containing destination address indicating a public IPv4 address from multiple hosts dstPort := 80, payload := { rawPayload := 'CAFEDECA'O // TODO To be enhanced } }, // Host #0 { srcAddress := '91fea0ed'O, srcAddress := '91fea0ed'O, // Containing source address indicating a private IPv4 address srcPort := 3372, dstAddress := '41d0e4df'O, dstAddress := '41d0e4df'O, // Containing destination address indicating a public IPv4 address from multiple hosts dstPort := 80, payload := { rawPayload := 'CAFEDECA'O // TODO To be enhanced Loading Loading
ttcn/AtsCommon/AtsCommon_Interfaces.ttcn3 +3 −3 Original line number Diff line number Diff line Loading @@ -88,9 +88,9 @@ module AtsCommon_Interfaces { /** * @desc Message description for inter-component data exchanges * @member vc_aftrIPv6Address The AFTR IPv6 address * @member vc_aftrNameOption The AFTR-name option * @member vc_dnsIPv6AddressThe DNS IPv6 address * @member ipv6Address The AFTR IPv6 address * @member aftrName The AFTR-name option * @member domainSearchList DNS IPv6 address */ type record InterCompDataMsg { Ipv6Address ipv6Address, Loading
ttcn/AtsCommon/AtsCommon_Templates.ttcn3 +1 −1 Original line number Diff line number Diff line Loading @@ -116,7 +116,7 @@ module AtsCommon_Templates { windowSize := ?, checksum := ?, urgentPointer := ?, options := ?, options := *, pad := *, payload := ? } // End of template mw_tcp_packet Loading
ttcn/AtsDSlite/AtsDSLite_Functions.ttcn3 +37 −39 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ module AtsDSLite_Functions { InterCompDataMsg; }; import from AtsCommon_Functions all; import from AtsCommon_DNS_CommonRfcs_TypesAndValues all; // DSLite import from AtsDSLite_Interfaces { Loading @@ -46,7 +47,6 @@ module AtsDSLite_Functions { DSLiteComponent, AFTRComponent, HostComponent; }; import from AtsCommon_DNS_CommonRfcs_TypesAndValues all; group initialiseFunctions { Loading @@ -67,6 +67,7 @@ module AtsDSLite_Functions { for (v_host:=0; v_host<v_hosts; v_host:=v_host + 1) { connect(vc_hostComponents[v_host]:ipv6Port, self:ipv6HostPort); connect(vc_hostComponents[v_host]:ipv4Port, self:ipv4HostPort); connect(vc_hostComponents[v_host]:dataPort, vc_aftrComponent:dataPort); } } if (vc_dhcpv6Component != null) { Loading Loading @@ -160,44 +161,6 @@ module AtsDSLite_Functions { } // End of group postambleFunctions group helpers { /** * @desc This sends an Tcp packet from an dual stack IPv4/IPv6 node to * any NUT. Prior it modifies * @remark The template passed in must NOT contain any matching expressions! * @param p_ipv4Packet Ipv4 packet value or template with echo request to be sent * @return execution status */ function f_sendIpv4Packet (in template Ipv4Packet p_ipv4Packet) runs on HostComponent return FncRetCode { var Ipv4Packet v_ipPkt := valueof(p_ipv4Packet); if(ischosen(v_ipPkt.ipv4Payload.ipv4EchoReplyMsg)) { v_ipPkt.ipv4Payload.ipv4EchoReplyMsg.checksum := fx_calcIpv4PayloadChecksum ( v_ipPkt.ipv4Payload ); } //Build IPv4 Packet //IHL is set in templates // Update the total length v_ipPkt.ipv4Hdr.totalLength := fx_ipv4PacketTotalLength (v_ipPkt); // Compute header checksum (HCS) v_ipPkt.ipv4Hdr.hcs := fx_calcIpv4Hcs ( v_ipPkt.ipv4Hdr ); //send ipv4Port.send(v_ipPkt); return e_success; } // End of function f_sendIpv4Packet } // End of group helpers group globalSteps { /** Loading Loading @@ -319,6 +282,41 @@ module AtsDSLite_Functions { return e_error; } /** * @desc This sends an Tcp packet from an dual stack IPv4/IPv6 node to * any NUT. Prior it modifies * @remark The template passed in must NOT contain any matching expressions! * @param p_ipv4Packet Ipv4 packet value or template with echo request to be sent * @return execution status */ function f_sendIpv4Packet (in template Ipv4Packet p_ipv4Packet, out Ipv4Packet p_result) runs on HostComponent return FncRetCode { var Ipv4Packet v_ipPkt := valueof(p_ipv4Packet); if(ischosen(v_ipPkt.ipv4Payload.ipv4EchoReplyMsg)) { v_ipPkt.ipv4Payload.ipv4EchoReplyMsg.checksum := fx_calcIpv4PayloadChecksum ( v_ipPkt.ipv4Payload ); } //Build IPv4 Packet //IHL is set in templates // Update the total length v_ipPkt.ipv4Hdr.totalLength := fx_ipv4PacketTotalLength (v_ipPkt); // Compute header checksum (HCS) v_ipPkt.ipv4Hdr.hcs := fx_calcIpv4Hcs ( v_ipPkt.ipv4Hdr ); //send p_result := v_ipPkt; ipv4Port.send(v_ipPkt); return e_success; } // End of function f_sendIpv4Packet } // End of group auxiliary } // End of module AtsDSLite_Functions
ttcn/AtsDSlite/AtsDSLite_Interfaces.ttcn3 +28 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,8 @@ module AtsDSLite_Interfaces { import from LibIpv6_Interface_TypesAndValues { type LibIpv6Node, Ipv4Port, Ipv6Port Ipv4Port, Ipv6Port, Ipv4Packet }; import from LibIpv6_CommonRfcsDhcp_TypesAndValues { type Loading Loading @@ -84,6 +85,28 @@ module AtsDSLite_Interfaces { group componentDesc { group componentPorts { /** * @desc Port for inter-component data exchanges */ type port HostAftrDataPort message { inout HostAftrDataMsg } // End of port HostAftrDataPort /** * @desc Message description for inter-component data exchanges * @member vc_aftrIPv6Address The AFTR IPv6 address * @member vc_aftrNameOption The AFTR-name option * @member vc_dnsIPv6AddressThe DNS IPv6 address */ type record HostAftrDataMsg { int hostId, Ipv4Packet packet } // End of type HostAftrDataMsg } // End of group componentPorts /** * @desc * @member ipv6Port Loading @@ -97,6 +120,8 @@ module AtsDSLite_Interfaces { port Ipv6Port ipv6Port; /** IPv4 message port */ port Ipv4Port ipv4Port; /** Inter-component communication port */ port HostAftrDataPort dataPort; /** Timer used for expected received message */ timer tc_ac:= PX_TAC; /** Timer used for unexpected received message */ Loading @@ -115,6 +140,8 @@ module AtsDSLite_Interfaces { type component AFTRComponent extends SelfSyncComp { /** IPv6 message port */ port Ipv6Port aftrPort; /** Inter-component communication port */ port HostAftrDataPort dataPort; /** Timer used for expected received message */ timer tc_ac:= PX_TAC; /** Timer used for unexpected received message */ Loading
ttcn/AtsDSlite/AtsDSLite_Pixits.ttcn3 +23 −4 Original line number Diff line number Diff line Loading @@ -6,24 +6,43 @@ module AtsDSLite_Pixits { // LibCommon import from LibCommon_DataStrings { const c_16ZeroBytes }; // LibIPv6 import from LibIpv6_CommonRfcs_TypesAndValues { type Ipv6Address }; // DSLite import from AtsDSLite_TypesAndValues all; /** * @desc Indicates the IPv6 address of the AFTR equipment */ modulepar Ipv6Address PX_AFTR_GW_ADDRESS := c_16ZeroBytes; /** * @desc Defines a list of IPv4 host services * @see TC_DSLITE_B4_BF_BV_001 */ modulepar HostV4Descriptions PX_HOST_V4_LIST := { { srcAddress := '91fea0ed'O, srcAddress := '91fea0ed'O, // Containing source address indicating a private IPv4 address srcPort := 3372, dstAddress := '41d0e4df'O, dstAddress := '41d0e4df'O, // Containing destination address indicating a public IPv4 address from multiple hosts dstPort := 80, payload := { rawPayload := 'CAFEDECA'O // TODO To be enhanced } }, // Host #0 { srcAddress := '91fea0ed'O, srcAddress := '91fea0ed'O, // Containing source address indicating a private IPv4 address srcPort := 3372, dstAddress := '41d0e4df'O, dstAddress := '41d0e4df'O, // Containing destination address indicating a public IPv4 address from multiple hosts dstPort := 80, payload := { rawPayload := 'CAFEDECA'O // TODO To be enhanced Loading