void CStunUnknownAttributes::GetBuffer (char *pBuffer)
{
	unsigned short nAttributeType = htons (m_nAttributeType);
	unsigned short nAttributeLength = htons (GetAttributeLength ());

	int nOffset = 0, nSize = GetTotalLength ();

	memcpy_s (pBuffer, nSize, &nAttributeType, sizeof (nAttributeType));
	nOffset += sizeof (nAttributeType);

	memcpy_s (pBuffer + nOffset, nSize - nOffset, &nAttributeLength, sizeof (nAttributeLength));
	nOffset += sizeof (nAttributeLength);

	for (int i = 0; i < m_nAttributesCount; ++i)
	{
		nAttributeType = htons (m_UnknownAttributes [i]);

		memcpy_s (pBuffer + nOffset, nSize - nOffset, &nAttributeType, sizeof (nAttributeType));
		nOffset += sizeof (nAttributeType);		
	}

	if ((m_nAttributesCount % 2) == 1)
	{
		memcpy_s (pBuffer + nOffset, nSize - nOffset, &nAttributeType, sizeof (nAttributeType));
	}
}
void CStunAddressAttribute::GetBuffer(char *Buffer)
{
	unsigned short nAttributeType = htons (m_nAttributeType);
	unsigned short nAttributeLength = htons (GetAttributeLength ());
	unsigned char cTemp = htons (0);
	unsigned char byAddressFamily = m_byAddressFamily;
	unsigned short nPort = htons (m_nPort);
	unsigned int nIPAddress = m_nIPAddress;

	int nOffset = 0, nSize = GetTotalLength ();

	memcpy_s (Buffer, nSize, &nAttributeType, sizeof (nAttributeType));
	nOffset += sizeof (nAttributeType);

	memcpy_s (Buffer + nOffset, nSize - nOffset, &nAttributeLength, sizeof (nAttributeLength));
	nOffset += sizeof (nAttributeLength);

	memcpy_s (Buffer + nOffset, nSize - nOffset, &cTemp, sizeof (cTemp));
	nOffset += sizeof (cTemp);

	memcpy_s (Buffer + nOffset, nSize - nOffset, &byAddressFamily, sizeof (byAddressFamily));
	nOffset += sizeof (byAddressFamily);

	memcpy_s (Buffer + nOffset, nSize - nOffset, &nPort, sizeof (nPort));
	nOffset += sizeof (nPort);

	memcpy_s (Buffer + nOffset, nSize - nOffset, &nIPAddress, sizeof (nIPAddress));
}
Esempio n. 3
0
// Get the data from the OI and use it to set the check for the check button
// appropriately.
zSHORT
ZCheckBox::MapFromOI( WPARAM wFlag )
{
// if ( zstrcmp( *m_pzsTag, "CheckAutoCreateActOnCatChg" ) == 0 )
//    TraceLineS( "ZCheckBox::MapFromOI ", *m_pzsTag );

   // If the control is not Visible, do not do mapping.
   if ( IsVisibleForMapFromOI( ) == FALSE )
      return( 0 );

   m_ulMapActFlag2 |= zMAPACT_MAPPED_FROM_OI1;
   if ( m_pzsVName && m_pzsEName && m_pzsAName )
   {
      zPCHAR pch;
      zBOOL  bCheck = FALSE;
      zULONG ulLth;
      zCHAR  szMap[ 256 ];
      zVIEW  vApp;

      zUSHORT uMapState = GetMappingAutoGray( &vApp, *m_pzsVName,
                                              *m_pzsEName,
                                              *m_pzsAName );
      if ( vApp && (uMapState & zMAPACT_ENTITY_EXISTS) )
      {
         GetAttributeLength( &ulLth, vApp, *m_pzsEName, *m_pzsAName );
         if ( ulLth >= sizeof( szMap ) )
         {
            GetAddrForAttribute( (zPCHAR *) &pch, vApp,
                                 *m_pzsEName, *m_pzsAName );
         }
         else
         {
            GetVariableFromAttribute( szMap, 0, zTYPE_STRING, 256,
                                      vApp, *m_pzsEName,
                                      *m_pzsAName, *m_pzsContext, 0 );
            pch = szMap;
         }

         // determine check or uncheck
         bCheck = (zstrcmp( pch, *m_pzsValueOn ) ? 0 : 1);
      }

      SetCheck( bCheck );
      return( 0 );
   }

   return( -1 );
}