Loading ttcn3/EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_Functions.ttcn 0 → 100644 +61 −0 Original line number Diff line number Diff line /* * @author STF 276 * @version $Id$ * @desc This module specifies common IPv4 ICMP messages * interchanges (= operations) for an Ipv6 test component * Functions do not set a test component verdict but instead * use the function return value instead to notify the function * caller about the success of the operation. * */ module LibIpv6_Rfc826Arp_Functions { //LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; import from LibCommon_VerdictControl { type FncRetCode }; //LibIpv6 import from LibIpv6_Interface_TypesAndValues all ; import from LibIpv6_CommonRfcs_TypesAndValues all; import from LibIpv6_Rfc826Arp_TypesAndValues all; /* * @desc This sends an ARP request. * @remark The template passed in must NOT contain any matching expressions! * @param p_ArpRequest ARP packet value or template with ARP request to be sent * @return execution status */ function f_sendArpRequest (in ArpEthRequest p_ArpRequest) runs on LibIpv6Node return FncRetCode { var ArpEthRequest v_ipPkt; v_ipPkt := valueof(p_ArpRequest); //send arpPort.send(v_ipPkt); return e_success; }//end f_sendArpRequest /* * @desc This sends an ARP request. * @remark The template passed in must NOT contain any matching expressions! * @param p_ArpRequest ARP packet value or template with ARP request to be sent * @return execution status */ function f_sendArpReply (in ArpEthReply p_ArpReply) runs on LibIpv6Node return FncRetCode { var ArpEthReply v_ipPkt; v_ipPkt := valueof(p_ArpReply); //send arpPort.send(v_ipPkt); return e_success; }//end f_sendArpReply } // end module LibIpv6_Rfc826Arp_Functions ttcn3/EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_Templates.ttcn 0 → 100644 +155 −0 Original line number Diff line number Diff line /* * @author STF 276 * @version $Id$ * @desc This module specifies common template definitions * to specify ARP packets * */ module LibIpv6_Rfc826Arp_Templates { //LibCommon import from LibCommon_BasicTypesAndValues all; //LibIpv6 import from LibIpv6_Rfc826Arp_TypesAndValues all; group ArpRequest { /* * @param p_hwAddrSpace Binary Hardware address space (e.g., Ethernet, * Packet Radio Net.). * @param p_protAddrSpace Protocol address space. For Ethernet * hardware, this is from the set of type * fields ether_typ$<protocol>. * @param p_senderHwAddr Hardware address of sender of this * packet, n from the ar$hln field. * @param p_senderProtAddr Protocol address of sender of this * packet, m from the ar$pln field. * @param p_targetHwAddr Hardware address of target of this * packet (if known). * @param p_targetProtAddr Protocol address of target. */ template ArpEthRequest m_arpRequest( UInt16 p_hwAddrSpace, UInt16 p_protAddrSpace, octetstring p_senderHwAddr, octetstring p_senderProtAddr, octetstring p_targetHwAddr, octetstring p_targetProtAddr ) := { hwAddrSpace := p_hwAddrSpace, protAddrSpace := p_protAddrSpace, hwAddrLength := lengthof(p_senderHwAddr), protAddrLength := lengthof(p_senderProtAddr), opcode := c_opRequest, senderHwAddr := p_senderHwAddr, senderProtAddr := p_senderProtAddr, targetHwAddr := p_targetHwAddr, targetProtAddr := p_targetProtAddr } /* * @param p_hwAddrSpace Binary Hardware address space (e.g., Ethernet, * Packet Radio Net.). * @param p_protAddrSpace Protocol address space. For Ethernet * hardware, this is from the set of type * fields ether_typ$<protocol>. * @param p_senderHwAddr Hardware address of sender of this * packet, n from the ar$hln field. * @param p_senderProtAddr Protocol address of sender of this * packet, m from the ar$pln field. * @param p_targetHwAddr Hardware address of target of this * packet (if known). * @param p_targetProtAddr Protocol address of target. */ template ArpEthRequest mw_arpRequest( template UInt16 p_hwAddrSpace, template UInt16 p_protAddrSpace, template octetstring p_senderHwAddr, template octetstring p_senderProtAddr, template octetstring p_targetHwAddr, template octetstring p_targetProtAddr ) := { hwAddrSpace := p_hwAddrSpace, protAddrSpace := p_protAddrSpace, hwAddrLength := ?, protAddrLength := ?, opcode := c_opRequest, senderHwAddr := p_senderHwAddr, senderProtAddr := p_senderProtAddr, targetHwAddr := p_targetHwAddr, targetProtAddr := p_targetProtAddr } }// end ArpRequest group ArpReply { /* * @param p_hwAddrSpace Binary Hardware address space (e.g., Ethernet, * Packet Radio Net.). * @param p_protAddrSpace Protocol address space. For Ethernet * hardware, this is from the set of type * fields ether_typ$<protocol>. * @param p_senderHwAddr Hardware address of sender of this * packet, n from the ar$hln field. * @param p_senderProtAddr Protocol address of sender of this * packet, m from the ar$pln field. * @param p_targetHwAddr Hardware address of target of this * packet (if known). * @param p_targetProtAddr Protocol address of target. */ template ArpEthReply m_arpReply( UInt16 p_hwAddrSpace, UInt16 p_protAddrSpace, octetstring p_senderHwAddr, octetstring p_senderProtAddr, octetstring p_targetHwAddr, octetstring p_targetProtAddr ) := { hwAddrSpace := p_hwAddrSpace, protAddrSpace := p_protAddrSpace, hwAddrLength := lengthof(p_senderHwAddr), protAddrLength := lengthof(p_senderProtAddr), opcode := c_opReply, senderHwAddr := p_senderHwAddr, senderProtAddr := p_senderProtAddr, targetHwAddr := p_targetHwAddr, targetProtAddr := p_targetProtAddr } /* * @param p_hwAddrSpace Binary Hardware address space (e.g., Ethernet, * Packet Radio Net.). * @param p_protAddrSpace Protocol address space. For Ethernet * hardware, this is from the set of type * fields ether_typ$<protocol>. * @param p_senderHwAddr Hardware address of sender of this * packet, n from the ar$hln field. * @param p_senderProtAddr Protocol address of sender of this * packet, m from the ar$pln field. * @param p_targetHwAddr Hardware address of target of this * packet (if known). * @param p_targetProtAddr Protocol address of target. */ template ArpEthReply mw_arpReply( template UInt16 p_hwAddrSpace, template UInt16 p_protAddrSpace, template octetstring p_senderHwAddr, template octetstring p_senderProtAddr, template octetstring p_targetHwAddr, template octetstring p_targetProtAddr ) := { hwAddrSpace := p_hwAddrSpace, protAddrSpace := p_protAddrSpace, hwAddrLength := ?, protAddrLength := ?, opcode := c_opReply, senderHwAddr := p_senderHwAddr, senderProtAddr := p_senderProtAddr, targetHwAddr := p_targetHwAddr, targetProtAddr := p_targetProtAddr } }// end ArpReply } // end module LibIpv6_Rfc826Arp_Templates ttcn3/EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_TypesAndValues.ttcn 0 → 100644 +99 −0 Original line number Diff line number Diff line /* * @author STF 276 * @version $Id$ * @desc This module defines the ARP message types and * their information elements using types from the * Common and Ipv6 library. Also it provides some useful * constant definitions. * All types have been defined on the basis of RFC 826 * @url http://www.ietf.org/rfc/rfc826.txt * */ module LibIpv6_Rfc826Arp_TypesAndValues { //LibCommon import from LibCommon_BasicTypesAndValues all; group constants { const UInt16 c_opRequest := 1; const UInt16 c_opReply := 2; const UInt16 c_hrdEthernet := 1; } group ArpPackets { /* * @desc PDU type derived from RFC 826 */ type record ArpEthPacket { UInt16 hwAddrSpace, UInt16 protAddrSpace, UInt8 hwAddrLength, UInt8 protAddrLength, UInt16 opcode (c_opRequest, c_opReply), octetstring senderHwAddr, octetstring senderProtAddr, octetstring targetHwAddr, octetstring targetProtAddr } with { variant "isPDU;present=!bits(4,4) && !bits(4,6)"; variant (hwAddrLength) "intTag='hwAddrLength'"; variant (protAddrLength) "intTag='protAddrLength'"; variant (senderHwAddr) "length=getIntTag('hwAddrLength')"; variant (senderProtAddr) "length=getIntTag('protAddrLength')"; variant (targetHwAddr) "length=getIntTag('hwAddrLength')"; variant (targetProtAddr) "length=getIntTag('protAddrLength')"; } /* * @desc PDU type derived from RFC 826 */ type record ArpEthRequest { UInt16 hwAddrSpace, UInt16 protAddrSpace, UInt8 hwAddrLength, UInt8 protAddrLength, UInt16 opcode (c_opRequest), octetstring senderHwAddr, octetstring senderProtAddr, octetstring targetHwAddr, octetstring targetProtAddr } with { variant "isPDU;present=!bits(4,4) && !bits(4,6) && bytes(6, 2, 0x0001)"; variant (hwAddrLength) "intTag='hwAddrLength'"; variant (protAddrLength) "intTag='protAddrLength'"; variant (senderHwAddr) "length=getIntTag('hwAddrLength')"; variant (senderProtAddr) "length=getIntTag('protAddrLength')"; variant (targetHwAddr) "length=getIntTag('hwAddrLength')"; variant (targetProtAddr) "length=getIntTag('protAddrLength')"; } /* * @desc PDU type derived from RFC 826 */ type record ArpEthReply { UInt16 hwAddrSpace, UInt16 protAddrSpace, UInt8 hwAddrLength, UInt8 protAddrLength, UInt16 opcode (c_opReply), octetstring senderHwAddr, octetstring senderProtAddr, octetstring targetHwAddr, octetstring targetProtAddr } with { variant "isPDU;present=!bits(4,4) && !bits(4,6) && bytes(6, 2, 0x0001)"; variant (hwAddrLength) "intTag='hwAddrLength'"; variant (protAddrLength) "intTag='protAddrLength'"; variant (senderHwAddr) "length=getIntTag('hwAddrLength')"; variant (senderProtAddr) "length=getIntTag('protAddrLength')"; variant (targetHwAddr) "length=getIntTag('hwAddrLength')"; variant (targetProtAddr) "length=getIntTag('protAddrLength')"; } } // end ArpPackets } // end module LibIpv6_Rfc826Arp_TypesAndValues No newline at end of file Loading
ttcn3/EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_Functions.ttcn 0 → 100644 +61 −0 Original line number Diff line number Diff line /* * @author STF 276 * @version $Id$ * @desc This module specifies common IPv4 ICMP messages * interchanges (= operations) for an Ipv6 test component * Functions do not set a test component verdict but instead * use the function return value instead to notify the function * caller about the success of the operation. * */ module LibIpv6_Rfc826Arp_Functions { //LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; import from LibCommon_VerdictControl { type FncRetCode }; //LibIpv6 import from LibIpv6_Interface_TypesAndValues all ; import from LibIpv6_CommonRfcs_TypesAndValues all; import from LibIpv6_Rfc826Arp_TypesAndValues all; /* * @desc This sends an ARP request. * @remark The template passed in must NOT contain any matching expressions! * @param p_ArpRequest ARP packet value or template with ARP request to be sent * @return execution status */ function f_sendArpRequest (in ArpEthRequest p_ArpRequest) runs on LibIpv6Node return FncRetCode { var ArpEthRequest v_ipPkt; v_ipPkt := valueof(p_ArpRequest); //send arpPort.send(v_ipPkt); return e_success; }//end f_sendArpRequest /* * @desc This sends an ARP request. * @remark The template passed in must NOT contain any matching expressions! * @param p_ArpRequest ARP packet value or template with ARP request to be sent * @return execution status */ function f_sendArpReply (in ArpEthReply p_ArpReply) runs on LibIpv6Node return FncRetCode { var ArpEthReply v_ipPkt; v_ipPkt := valueof(p_ArpReply); //send arpPort.send(v_ipPkt); return e_success; }//end f_sendArpReply } // end module LibIpv6_Rfc826Arp_Functions
ttcn3/EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_Templates.ttcn 0 → 100644 +155 −0 Original line number Diff line number Diff line /* * @author STF 276 * @version $Id$ * @desc This module specifies common template definitions * to specify ARP packets * */ module LibIpv6_Rfc826Arp_Templates { //LibCommon import from LibCommon_BasicTypesAndValues all; //LibIpv6 import from LibIpv6_Rfc826Arp_TypesAndValues all; group ArpRequest { /* * @param p_hwAddrSpace Binary Hardware address space (e.g., Ethernet, * Packet Radio Net.). * @param p_protAddrSpace Protocol address space. For Ethernet * hardware, this is from the set of type * fields ether_typ$<protocol>. * @param p_senderHwAddr Hardware address of sender of this * packet, n from the ar$hln field. * @param p_senderProtAddr Protocol address of sender of this * packet, m from the ar$pln field. * @param p_targetHwAddr Hardware address of target of this * packet (if known). * @param p_targetProtAddr Protocol address of target. */ template ArpEthRequest m_arpRequest( UInt16 p_hwAddrSpace, UInt16 p_protAddrSpace, octetstring p_senderHwAddr, octetstring p_senderProtAddr, octetstring p_targetHwAddr, octetstring p_targetProtAddr ) := { hwAddrSpace := p_hwAddrSpace, protAddrSpace := p_protAddrSpace, hwAddrLength := lengthof(p_senderHwAddr), protAddrLength := lengthof(p_senderProtAddr), opcode := c_opRequest, senderHwAddr := p_senderHwAddr, senderProtAddr := p_senderProtAddr, targetHwAddr := p_targetHwAddr, targetProtAddr := p_targetProtAddr } /* * @param p_hwAddrSpace Binary Hardware address space (e.g., Ethernet, * Packet Radio Net.). * @param p_protAddrSpace Protocol address space. For Ethernet * hardware, this is from the set of type * fields ether_typ$<protocol>. * @param p_senderHwAddr Hardware address of sender of this * packet, n from the ar$hln field. * @param p_senderProtAddr Protocol address of sender of this * packet, m from the ar$pln field. * @param p_targetHwAddr Hardware address of target of this * packet (if known). * @param p_targetProtAddr Protocol address of target. */ template ArpEthRequest mw_arpRequest( template UInt16 p_hwAddrSpace, template UInt16 p_protAddrSpace, template octetstring p_senderHwAddr, template octetstring p_senderProtAddr, template octetstring p_targetHwAddr, template octetstring p_targetProtAddr ) := { hwAddrSpace := p_hwAddrSpace, protAddrSpace := p_protAddrSpace, hwAddrLength := ?, protAddrLength := ?, opcode := c_opRequest, senderHwAddr := p_senderHwAddr, senderProtAddr := p_senderProtAddr, targetHwAddr := p_targetHwAddr, targetProtAddr := p_targetProtAddr } }// end ArpRequest group ArpReply { /* * @param p_hwAddrSpace Binary Hardware address space (e.g., Ethernet, * Packet Radio Net.). * @param p_protAddrSpace Protocol address space. For Ethernet * hardware, this is from the set of type * fields ether_typ$<protocol>. * @param p_senderHwAddr Hardware address of sender of this * packet, n from the ar$hln field. * @param p_senderProtAddr Protocol address of sender of this * packet, m from the ar$pln field. * @param p_targetHwAddr Hardware address of target of this * packet (if known). * @param p_targetProtAddr Protocol address of target. */ template ArpEthReply m_arpReply( UInt16 p_hwAddrSpace, UInt16 p_protAddrSpace, octetstring p_senderHwAddr, octetstring p_senderProtAddr, octetstring p_targetHwAddr, octetstring p_targetProtAddr ) := { hwAddrSpace := p_hwAddrSpace, protAddrSpace := p_protAddrSpace, hwAddrLength := lengthof(p_senderHwAddr), protAddrLength := lengthof(p_senderProtAddr), opcode := c_opReply, senderHwAddr := p_senderHwAddr, senderProtAddr := p_senderProtAddr, targetHwAddr := p_targetHwAddr, targetProtAddr := p_targetProtAddr } /* * @param p_hwAddrSpace Binary Hardware address space (e.g., Ethernet, * Packet Radio Net.). * @param p_protAddrSpace Protocol address space. For Ethernet * hardware, this is from the set of type * fields ether_typ$<protocol>. * @param p_senderHwAddr Hardware address of sender of this * packet, n from the ar$hln field. * @param p_senderProtAddr Protocol address of sender of this * packet, m from the ar$pln field. * @param p_targetHwAddr Hardware address of target of this * packet (if known). * @param p_targetProtAddr Protocol address of target. */ template ArpEthReply mw_arpReply( template UInt16 p_hwAddrSpace, template UInt16 p_protAddrSpace, template octetstring p_senderHwAddr, template octetstring p_senderProtAddr, template octetstring p_targetHwAddr, template octetstring p_targetProtAddr ) := { hwAddrSpace := p_hwAddrSpace, protAddrSpace := p_protAddrSpace, hwAddrLength := ?, protAddrLength := ?, opcode := c_opReply, senderHwAddr := p_senderHwAddr, senderProtAddr := p_senderProtAddr, targetHwAddr := p_targetHwAddr, targetProtAddr := p_targetProtAddr } }// end ArpReply } // end module LibIpv6_Rfc826Arp_Templates
ttcn3/EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_TypesAndValues.ttcn 0 → 100644 +99 −0 Original line number Diff line number Diff line /* * @author STF 276 * @version $Id$ * @desc This module defines the ARP message types and * their information elements using types from the * Common and Ipv6 library. Also it provides some useful * constant definitions. * All types have been defined on the basis of RFC 826 * @url http://www.ietf.org/rfc/rfc826.txt * */ module LibIpv6_Rfc826Arp_TypesAndValues { //LibCommon import from LibCommon_BasicTypesAndValues all; group constants { const UInt16 c_opRequest := 1; const UInt16 c_opReply := 2; const UInt16 c_hrdEthernet := 1; } group ArpPackets { /* * @desc PDU type derived from RFC 826 */ type record ArpEthPacket { UInt16 hwAddrSpace, UInt16 protAddrSpace, UInt8 hwAddrLength, UInt8 protAddrLength, UInt16 opcode (c_opRequest, c_opReply), octetstring senderHwAddr, octetstring senderProtAddr, octetstring targetHwAddr, octetstring targetProtAddr } with { variant "isPDU;present=!bits(4,4) && !bits(4,6)"; variant (hwAddrLength) "intTag='hwAddrLength'"; variant (protAddrLength) "intTag='protAddrLength'"; variant (senderHwAddr) "length=getIntTag('hwAddrLength')"; variant (senderProtAddr) "length=getIntTag('protAddrLength')"; variant (targetHwAddr) "length=getIntTag('hwAddrLength')"; variant (targetProtAddr) "length=getIntTag('protAddrLength')"; } /* * @desc PDU type derived from RFC 826 */ type record ArpEthRequest { UInt16 hwAddrSpace, UInt16 protAddrSpace, UInt8 hwAddrLength, UInt8 protAddrLength, UInt16 opcode (c_opRequest), octetstring senderHwAddr, octetstring senderProtAddr, octetstring targetHwAddr, octetstring targetProtAddr } with { variant "isPDU;present=!bits(4,4) && !bits(4,6) && bytes(6, 2, 0x0001)"; variant (hwAddrLength) "intTag='hwAddrLength'"; variant (protAddrLength) "intTag='protAddrLength'"; variant (senderHwAddr) "length=getIntTag('hwAddrLength')"; variant (senderProtAddr) "length=getIntTag('protAddrLength')"; variant (targetHwAddr) "length=getIntTag('hwAddrLength')"; variant (targetProtAddr) "length=getIntTag('protAddrLength')"; } /* * @desc PDU type derived from RFC 826 */ type record ArpEthReply { UInt16 hwAddrSpace, UInt16 protAddrSpace, UInt8 hwAddrLength, UInt8 protAddrLength, UInt16 opcode (c_opReply), octetstring senderHwAddr, octetstring senderProtAddr, octetstring targetHwAddr, octetstring targetProtAddr } with { variant "isPDU;present=!bits(4,4) && !bits(4,6) && bytes(6, 2, 0x0001)"; variant (hwAddrLength) "intTag='hwAddrLength'"; variant (protAddrLength) "intTag='protAddrLength'"; variant (senderHwAddr) "length=getIntTag('hwAddrLength')"; variant (senderProtAddr) "length=getIntTag('protAddrLength')"; variant (targetHwAddr) "length=getIntTag('hwAddrLength')"; variant (targetProtAddr) "length=getIntTag('protAddrLength')"; } } // end ArpPackets } // end module LibIpv6_Rfc826Arp_TypesAndValues No newline at end of file