Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(262)

Unified Diff: src/devices/mesh/dot11s/dot11s-mac-header.h

Issue 88094: 802.11s mesh stack model (Closed)
Patch Set: Review finished by Mathieu, ready to merge Created 14 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/devices/mesh/dot11s/dot11s.h ('k') | src/devices/mesh/dot11s/dot11s-mac-header.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/devices/mesh/dot11s/dot11s-mac-header.h
===================================================================
new file mode 100644
--- /dev/null
+++ b/src/devices/mesh/dot11s/dot11s-mac-header.h
@@ -0,0 +1,157 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2009 IITP RAS
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Author: Kirill Andreev <andreev@iitp.ru>
+ */
+
+
+#ifndef MESH_WIFI_MAC_HEADER_H
+#define MESH_WIFI_MAC_HEADER_H
+
+#include "ns3/header.h"
+#include "ns3/mac48-address.h"
+
+namespace ns3 {
+namespace dot11s {
+/**
+ * \ingroup dot11s
+ *
+ * \brief Mesh Control field, see IEEE 802.11s draft 3.0 section 7.1.3.5b
+ *
+ * Header format: | Mesh flags: 1 | TTL: 1 | Sequence number: 4 | Address ext.: 0, 6, 12 or 18 |
+ */
+class MeshHeader : public Header
+{
+public:
+ MeshHeader ();
+ ~MeshHeader ();
+ static TypeId GetTypeId ();
+ virtual TypeId GetInstanceTypeId () const;
+ virtual void Print (std::ostream &os) const;
+
+ void SetAddr4 (Mac48Address address);
+ void SetAddr5 (Mac48Address address);
+ void SetAddr6 (Mac48Address address);
+ Mac48Address GetAddr4 () const;
+ Mac48Address GetAddr5 () const;
+ Mac48Address GetAddr6 () const;
+
+ void SetMeshSeqno (uint32_t seqno);
+ uint32_t GetMeshSeqno () const;
+
+ void SetMeshTtl (uint8_t TTL);
+ uint8_t GetMeshTtl () const;
+
+ void SetAddressExt (uint8_t num_of_addresses);
+ uint8_t GetAddressExt () const;
+
+ virtual uint32_t GetSerializedSize () const;
+ virtual void Serialize (Buffer::Iterator start) const;
+ virtual uint32_t Deserialize (Buffer::Iterator start);
+private:
+ uint8_t m_meshFlags;
+ uint8_t m_meshTtl;
+ uint32_t m_meshSeqno;
+ Mac48Address m_addr4;
+ Mac48Address m_addr5;
+ Mac48Address m_addr6;
+ friend bool operator== (const MeshHeader & a, const MeshHeader & b);
+};
+bool operator== (const MeshHeader & a, const MeshHeader & b);
+
+/**
+ * \ingroup dot11s
+ *
+ * \brief See IEEE 802.11s draft 3.0 section 7.2.3.14
+ *
+ * Header format: | category: 1 | action value: 1 |
+ */
+class WifiMeshActionHeader : public Header
+{
+public:
+ WifiMeshActionHeader ();
+ ~WifiMeshActionHeader ();
+
+ /* Compatible with open80211s implementation */
+ enum CategoryValue //table 7-24 staring from 4
+ {
+ MESH_PEERING_MGT = 30,
+ MESH_LINK_METRIC = 31,
+ MESH_PATH_SELECTION = 32,
+ MESH_INTERWORKING = 33,
+ MESH_RESOURCE_COORDINATION = 34,
+ MESH_PROXY_FORWARDING = 35,
+ };
+ /* Compatible with open80211s implementation */
+ enum PeerLinkMgtActionValue
+ {
+ PEER_LINK_OPEN = 0,
+ PEER_LINK_CONFIRM = 1,
+ PEER_LINK_CLOSE = 2,
+ };
+ enum LinkMetricActionValue
+ {
+ LINK_METRIC_REQUEST = 0,
+ LINK_METRIC_REPORT,
+ };
+ /* Compatible with open80211s implementation */
+ enum PathSelectionActionValue
+ {
+ PATH_SELECTION = 0,
+ };
+ enum InterworkActionValue
+ {
+ PORTAL_ANNOUNCEMENT = 0,
+ };
+ enum ResourceCoordinationActionValue
+ {
+ CONGESTION_CONTROL_NOTIFICATION = 0,
+ MDA_SETUP_REQUEST,
+ MDA_SETUP_REPLY,
+ MDAOP_ADVERTISMENT_REQUEST,
+ MDAOP_ADVERTISMENTS,
+ MDAOP_SET_TEARDOWN,
+ BEACON_TIMING_REQUEST,
+ BEACON_TIMING_RESPONSE,
+ TBTT_ADJUSTMENT_REQUEST,
+ MESH_CHANNEL_SWITCH_ANNOUNCEMENT,
+ };
+ typedef union
+ {
+ enum PeerLinkMgtActionValue peerLink;
+ enum LinkMetricActionValue linkMetrtic;
+ enum PathSelectionActionValue pathSelection;
+ enum InterworkActionValue interwork;
+ enum ResourceCoordinationActionValue resourceCoordination;
+ } ActionValue;
+ void SetAction (enum CategoryValue type,ActionValue action);
+
+ CategoryValue GetCategory ();
+ ActionValue GetAction ();
+ static TypeId GetTypeId ();
+ virtual TypeId GetInstanceTypeId () const;
+ virtual void Print (std::ostream &os) const;
+ virtual uint32_t GetSerializedSize () const;
+ virtual void Serialize (Buffer::Iterator start) const;
+ virtual uint32_t Deserialize (Buffer::Iterator start);
+private:
+ uint8_t m_category;
+ uint8_t m_actionValue;
+};
+} //namespace dot11s
+} // namespace ns3
+#endif /* MESH_WIFI_MAC_HEADER_H */
« no previous file with comments | « src/devices/mesh/dot11s/dot11s.h ('k') | src/devices/mesh/dot11s/dot11s-mac-header.cc » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b