eapol/eapol_framework/eapol_common/am/include/eap_am_network_id.h
changeset 0 c8830336c852
child 2 1c7bc153c08e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eapol/eapol_framework/eapol_common/am/include/eap_am_network_id.h	Thu Dec 17 08:47:43 2009 +0200
@@ -0,0 +1,247 @@
+/*
+* Copyright (c) 2001-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  EAP and WLAN authentication protocols.
+*
+*/
+
+
+
+
+#if !defined(_EAP_NETWORK_ID_H_)
+#define _EAP_NETWORK_ID_H_
+
+#include "eap_tools.h"
+#include "abs_eap_am_tools.h"
+#include "eap_am_tools.h"
+#include "eap_am_export.h"
+
+/// This class stores the protocol layer network identity.
+/**
+ * A eap_am_network_id_c class.
+ * Network addresses are handled through eap_am_network_id_c class.
+ * It includes source and destination addresses and the type of packet. 
+ * Addresses are mostly Ethernet addresses. Packet type is the type of Ethernet packet.
+ * The eap_am_network_id class stores the addresses using the eap_variable_data objects.
+ */
+class EAP_EXPORT eap_am_network_id_c
+{
+
+private:
+
+	/// This is pointer to the tools class.
+	abs_eap_am_tools_c * const m_am_tools;
+
+	/// This struct decreases the memory print of eap_am_network_id_c.
+	class eap_am_network_id_impl_str
+	{
+	public:
+		~eap_am_network_id_impl_str();
+
+		eap_am_network_id_impl_str(
+			abs_eap_am_tools_c * const tools);
+
+		/// This is source address.
+		eap_variable_data_c m_source;
+
+		/// This is destination address.
+		eap_variable_data_c m_destination;
+
+		/// This is type of the packet. Mostly this is Ethernet type.
+		u16_t m_type;
+
+		/// This indicates whether this object was generated successfully.
+		bool m_is_valid;
+	};
+
+	/// This is pointer to data of eap_am_network_id_c.
+	/// This decreases memory print of eap_am_network_id_c.
+	/// This decreases stack usage of EAP_Core.
+	eap_am_network_id_impl_str *  m_data;
+
+	eap_status_e initialize_members();
+
+	/**
+	 * The set_is_valid() function sets the state of the eap_core object valid.
+	 * The eap_core object calls this function after it is initialized.
+	 */
+	EAP_FUNC_IMPORT void set_is_valid();
+
+public:
+
+	/**
+	 * The destructor does nothing extra. The buffers of each address are 
+	 * freed in the destructor of the eap_variable_data class.
+	 */
+	EAP_FUNC_IMPORT virtual ~eap_am_network_id_c();
+
+	/**
+	 * This version initializes the object.
+	 * @param tools parameter is pointer to the tools class.
+	 */
+	EAP_FUNC_IMPORT eap_am_network_id_c(
+		abs_eap_am_tools_c * const tools);
+
+	/**
+	 * This version takes addresses as pointers to any data.
+	 * This could be used to initialize addresses from the received packet.
+	 * @param tools parameter is pointer to the tools class.
+	 * @param source parameter is pointer to the source address.
+	 * @param source_length parameter is length of the source address.
+	 * @param destination parameter is pointer to the destination address.
+	 * @param destination_length parameter is length of the destination address.
+	 * @param type parameter is type of the packet. Mostly this is Ethernet type.
+	 * @param free_id parameter indicates whether the source and destination buffers must be freed in destructors.
+	 * @param writable_id parameter indicates whether the source and destination buffers are writable.
+	 *
+	 * NOTE the data buffers are NOT copied.
+	 */
+	EAP_FUNC_IMPORT eap_am_network_id_c(
+		abs_eap_am_tools_c * const tools,
+		const void * const source,
+		const u32_t source_length,
+		const void * const destination,
+		const u32_t destination_length,
+		const u16_t type,
+		const bool free_id,
+		const bool writable_id);
+
+	/**
+	 * This version takes addresses as pointers to eap_variable_data_c.
+	 * @param tools parameter is pointer to the tools class.
+	 * @param source parameter is pointer to the source address.
+	 * @param destination parameter is pointer to the destination address.
+	 * @param type parameter is type of the packet. Mostly this is Ethernet type.
+	 *
+	 * NOTE the data buffers are NOT copied. This is used to swap addresses of existing
+	 * eap_am_network_id_c object and create a new object using existing addresses.
+	 */
+	EAP_FUNC_IMPORT eap_am_network_id_c(
+		abs_eap_am_tools_c * const tools,
+		const eap_variable_data_c * const source,
+		const eap_variable_data_c * const destination,
+		const u16_t type);
+
+	/**
+	 * This version uses the data from existing object.
+	 * @param tools parameter is pointer to the tools class.
+	 * @param network_id parameter is pointer to the existing object.
+	 *
+	 * NOTE this copies the addresses.
+	 */
+	EAP_FUNC_IMPORT eap_am_network_id_c(
+		abs_eap_am_tools_c * const tools,
+		const eap_am_network_id_c * const network_id);
+
+	/**
+	 * This function uses the data from existing object.
+	 * @param network_id parameter is pointer to the existing object.
+	 *
+	 * NOTE this copies the addresses.
+	 */
+	EAP_FUNC_IMPORT eap_status_e set_copy_of_network_id(
+		const eap_am_network_id_c * const network_id);
+
+	EAP_FUNC_IMPORT eap_status_e set_copy_of_am_network_id(
+		const void * const source,
+		const u32_t source_length,
+		const void * const destination,
+		const u32_t destination_length,
+		const u16_t type);
+
+	/**
+	 * The get_is_valid() function returns the status of the eap_core object.
+	 * True indicates the object is initialized succesfully.
+	 */
+	EAP_FUNC_IMPORT bool get_is_valid() const;
+
+	/**
+	 * The get_is_valid_data() function returns the status of the eap_core object.
+	 * True indicates the object does include valid addresses.
+	 */
+	EAP_FUNC_IMPORT bool get_is_valid_data() const;
+
+	/**
+	 * The get_source_id() function returns pointer to the source address.
+	 */
+	EAP_FUNC_IMPORT const eap_variable_data_c * get_source_id() const;
+
+	/**
+	 * The get_destination_id() function returns pointer to the destination address.
+	 */
+	EAP_FUNC_IMPORT const eap_variable_data_c * get_destination_id() const;
+
+
+	/**
+	 * The get_source() function returns pointer to the source data.
+	 */
+	EAP_FUNC_IMPORT const u8_t * get_source() const;
+
+	/**
+	 * The get_destination() function returns pointer to the destination data.
+	 */
+	EAP_FUNC_IMPORT const u8_t * get_destination() const;
+
+
+	/**
+	 * The get_source_length() function returns length of the source address.
+	 */
+	EAP_FUNC_IMPORT u32_t get_source_length() const;
+
+	/**
+	 * The get_destination_length() function returns length of the destination address.
+	 */
+	EAP_FUNC_IMPORT u32_t get_destination_length() const;
+
+	/**
+	 * The get_type() function returns type of the packet.
+	 */
+	EAP_FUNC_IMPORT u16_t get_type() const;
+
+	/**
+	 * The get_network_id() function returns pointer to this.
+	 */
+	EAP_FUNC_IMPORT const eap_am_network_id_c * get_network_id() const;
+
+	/**
+	 * The copy() function copies the eap_am_network_id object.
+	 * The data of addresses are copied to new buffers.
+	 */
+	EAP_FUNC_IMPORT eap_am_network_id_c * copy() const;
+
+	/**
+	 * Compare the objects are identical.
+	 * @return false if data of objects differs.
+	 * @return true if data of objects are the same.
+	 */
+	EAP_FUNC_IMPORT bool compare_network_id(const eap_am_network_id_c * const network_id) const;
+
+	/**
+	 * The get_type() function sets type of the packet.
+	 */
+	EAP_FUNC_IMPORT void set_type(const u16_t type);
+
+	/**
+	 * Resets the object.
+	 */
+	EAP_FUNC_IMPORT void reset();
+};
+
+
+#endif //#if !defined(_EAP_NETWORK_ID_H_)
+
+//--------------------------------------------------
+
+
+
+// End.