Commit 12a37c07 authored by mullers's avatar mullers
Browse files

Cleanup of Peter Kremers Session. ABs create IpAddresses added.

parent e1b947ae
Loading
Loading
Loading
Loading
+34 −18
Original line number Diff line number Diff line
@@ -20,56 +20,72 @@

	group calcPrefixFns {
	
/*		function createIpAddresses(Prefix p_prefix, Oct6to15 p_macAddr)
		function createIpAddresses( in Oct6to15 p_macAddr,
									in Oct16 /*Prefix*/ p_prefix,//Type changed so that NbrDsc moduel does not need to be imported 
									in UInt8 p_prefixLen,
									out Ipv6Address p_lla,
									out Ipv6Address p_gla,
									out Ipv6Address p_solNodeMca,
									out Oct6to15 p_macSolNodeMca )
		runs on LibIpv6Node
		return FncRetCode {
			var UInt8 i;
			const UInt8 c_uniIdLen := 64;
			var Bit128 v_prefixBits := oct2bit(p_prefix);
			var Bit64 v_prefixReadyBits := oct2bit('0000000000000000'O);
			var Oct8 v_prefixReady := int2oct(0,8);
			var Oct8 v_interfaceIdReady := int2oct(0,8);
			var Oct3 v_leftPartMac := int2oct(0,3);
			var Oct3 v_rightPartMac := int2oct(0,3);
			var Bit24 v_leftPartBits := int2bit(0,24);
			var Bit24 v_leftPartBitMask := int2bit(131072,24);
			var Ipv6Address v_gla := int2oct(0,16);
			var Bit24 v_leftPartBitMask := oct2bit('020000'O);
//			var Ipv6Address v_gla := int2oct(0,16);
			
			if (lengthof(p_prefix) > 8) {
			if (p_prefixLen > 64) {
				log("Error");
				return e_error;
			}
			else {
				//Fill v_prefixReady with existing Prefix
				for (i:=0; i<lengthof(p_prefix); i:=i+1) {
					v_prefixReady[i] := p_prefix[i];
				for (i:=0; i<p_prefixLen; i:=i+1) {
					v_prefixReadyBits[i] := v_prefixBits[i];
				}
				//Complete v_prefixReady with Zero Bytes
				for (i:=lengthof(p_prefix); i<8; i:=i+1) {
					v_prefixReady[i] := '00'O;
				for (i:=p_prefixLen; i<64; i:=i+1) {
					v_prefixReadyBits[i] := int2bit(0,1);
				}
				v_prefixReady := bit2oct(v_prefixReadyBits);
			}
			//get leftPart
			for (i:=0; i<lengthof(p_macAddr)-3; i:=i+1) {
				v_leftPartMac[i] := p_macAddr[i];
			}
			//get leftPart
			//get rightPart
  			for (i:=3; i<lengthof(p_macAddr); i:=i+1) {
	  			v_rightPartMac[i-3] := p_macAddr[i];
  			}
  			//flipBit universalBit of leftPart
			v_leftPartBits :=  oct2int(v_leftPartMac);
			v_leftPartBits :=  oct2bit(v_leftPartMac);
			v_leftPartBits := v_leftPartBits xor4b v_leftPartBitMask;
			v_leftPartMac := bit2oct(v_leftPartBits);
			//build InterfaceId
			v_interfaceIdReady := v_leftPartMac & 'FFFE'O & v_rightPartMac;
			
			//MAC_MCA
			//LLA
			p_lla := 'FE80000000000000'O & v_interfaceIdReady;
			
			//GLA
			v_gla := v_prefixReady & v_interfaceIdReady;
			//LLA
			p_gla := v_prefixReady & v_interfaceIdReady;
			
			//SOL_NODE_MCA
			p_solNodeMca := 'FF0200000000000000000001FF'O & v_rightPartMac;

			//MAC_MCA
			p_macSolNodeMca := '3333FF'O & v_rightPartMac;
			
			return e_success;
	}//end function createIpAddresses

		}
	*/	
	/*
	 * @desc 	Creates a prefix using p_address and p_prefixLength. The p_prefixLength
	 *			MSB bits remain unchanged, the others are set to zero.