--- a/src/internet-node/arp-header.cc Fri Jul 27 20:45:18 2007 +0200
+++ b/src/internet-node/arp-header.cc Fri Jul 27 21:16:40 2007 +0200
@@ -20,8 +20,8 @@
*/
#include "ns3/assert.h"
+#include "ns3/address-utils.h"
#include "arp-header.h"
-#include "header-utils.h"
namespace ns3 {
--- a/src/internet-node/header-utils.cc Fri Jul 27 20:45:18 2007 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2006 INRIA
- * All rights reserved.
- *
- * 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: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
-#include "header-utils.h"
-
-namespace ns3 {
-
-void WriteTo (Buffer::Iterator &i, Ipv4Address ad)
-{
- i.WriteHtonU32 (ad.GetHostOrder ());
-}
-void WriteTo (Buffer::Iterator &i, MacAddress ad)
-{
- uint8_t mac[MacAddress::MAX_LEN];
- ad.Peek (mac);
- i.Write (mac, ad.GetLength ());
-}
-
-void ReadFrom (Buffer::Iterator &i, Ipv4Address &ad)
-{
- ad.SetHostOrder (i.ReadNtohU32 ());
-}
-void ReadFrom (Buffer::Iterator &i, MacAddress &ad, uint32_t len)
-{
- uint8_t mac[MacAddress::MAX_LEN];
- i.Read (mac, len);
- ad.Set (mac, len);
-}
-
-
-
-}; // namespace ns3
--- a/src/internet-node/header-utils.h Fri Jul 27 20:45:18 2007 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2006 INRIA
- * All rights reserved.
- *
- * 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: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
-#ifndef HEADER_UTILS_H
-#define HEADER_UTILS_H
-
-#include "ns3/buffer.h"
-#include "ns3/ipv4-address.h"
-#include "ns3/mac-address.h"
-
-namespace ns3 {
-
-void WriteTo (Buffer::Iterator &i, Ipv4Address ad);
-void WriteTo (Buffer::Iterator &i, MacAddress ad);
-
-void ReadFrom (Buffer::Iterator &i, Ipv4Address &ad);
-void ReadFrom (Buffer::Iterator &i, MacAddress &ad, uint32_t len);
-
-};
-
-#endif /* HEADER_UTILS_H */
--- a/src/internet-node/wscript Fri Jul 27 20:45:18 2007 +0200
+++ b/src/internet-node/wscript Fri Jul 27 21:16:40 2007 +0200
@@ -24,7 +24,6 @@
'arp-ipv4-interface.cc',
'arp-l3-protocol.cc',
'ipv4-loopback-interface.cc',
- 'header-utils.cc',
'udp-socket.cc',
'ipv4-end-point-demux.cc',
'arp-private.cc',
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/node/address-utils.cc Fri Jul 27 21:16:40 2007 +0200
@@ -0,0 +1,49 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2006 INRIA
+ * All rights reserved.
+ *
+ * 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: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+#include "address-utils.h"
+
+namespace ns3 {
+
+void WriteTo (Buffer::Iterator &i, Ipv4Address ad)
+{
+ i.WriteHtonU32 (ad.GetHostOrder ());
+}
+void WriteTo (Buffer::Iterator &i, MacAddress ad)
+{
+ uint8_t mac[MacAddress::MAX_LEN];
+ ad.Peek (mac);
+ i.Write (mac, ad.GetLength ());
+}
+
+void ReadFrom (Buffer::Iterator &i, Ipv4Address &ad)
+{
+ ad.SetHostOrder (i.ReadNtohU32 ());
+}
+void ReadFrom (Buffer::Iterator &i, MacAddress &ad, uint32_t len)
+{
+ uint8_t mac[MacAddress::MAX_LEN];
+ i.Read (mac, len);
+ ad.Set (mac, len);
+}
+
+
+
+}; // namespace ns3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/node/address-utils.h Fri Jul 27 21:16:40 2007 +0200
@@ -0,0 +1,38 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2006 INRIA
+ * All rights reserved.
+ *
+ * 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: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+#ifndef ADDRESS_UTILS_H
+#define ADDRESS_UTILS_H
+
+#include "ns3/buffer.h"
+#include "ns3/ipv4-address.h"
+#include "ns3/mac-address.h"
+
+namespace ns3 {
+
+void WriteTo (Buffer::Iterator &i, Ipv4Address ad);
+void WriteTo (Buffer::Iterator &i, MacAddress ad);
+
+void ReadFrom (Buffer::Iterator &i, Ipv4Address &ad);
+void ReadFrom (Buffer::Iterator &i, MacAddress &ad, uint32_t len);
+
+};
+
+#endif /* ADDRESS_UTILS_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/node/ethernet-header.cc Fri Jul 27 21:16:40 2007 +0200
@@ -0,0 +1,173 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2005 INRIA
+ * All rights reserved.
+ *
+ * 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: Emmanuelle Laprise <emmanuelle.laprise@bluekazoo.ca>
+ */
+
+#include "ns3/assert.h"
+#include "ns3/debug.h"
+#include "ns3/header.h"
+#include "ethernet-header.h"
+#include "address-utils.h"
+
+NS_DEBUG_COMPONENT_DEFINE ("EthernetHeader");
+
+namespace ns3 {
+
+bool EthernetHeader::m_enPreambleSfd = false;
+
+EthernetHeader::EthernetHeader ()
+{
+ Init();
+}
+
+EthernetHeader::~EthernetHeader ()
+{}
+
+void
+EthernetHeader::Init()
+{
+ m_preambleSfd = 0;
+ m_lengthType = 0x0;
+}
+
+void
+EthernetHeader::EnablePreambleSfd (bool enable)
+{
+ m_enPreambleSfd = enable;
+}
+
+void
+EthernetHeader::SetLengthType (uint16_t lengthType)
+{
+ m_lengthType = lengthType;
+}
+uint16_t
+EthernetHeader::GetLengthType (void) const
+{
+ return m_lengthType;
+}
+
+void
+EthernetHeader::SetPreambleSfd (uint64_t preambleSfd)
+{
+ m_preambleSfd = preambleSfd;
+}
+uint64_t
+EthernetHeader::GetPreambleSfd (void) const
+{
+ return m_preambleSfd;
+}
+
+void
+EthernetHeader::SetSource (MacAddress source)
+{
+ m_source = source;
+}
+MacAddress
+EthernetHeader::GetSource (void) const
+{
+ return m_source;
+}
+
+void
+EthernetHeader::SetDestination (MacAddress dst)
+{
+ m_destination = dst;
+}
+MacAddress
+EthernetHeader::GetDestination (void) const
+{
+ return m_destination;
+}
+
+ethernet_header_t
+EthernetHeader::GetPacketType (void) const
+{
+ return LENGTH;
+}
+
+uint32_t
+EthernetHeader::GetHeaderSize (void) const
+{
+ return GetSerializedSize();
+}
+
+std::string
+EthernetHeader::DoGetName (void) const
+{
+ return "ETHERNET";
+}
+
+void
+EthernetHeader::PrintTo (std::ostream &os) const
+{
+ // ethernet, right ?
+ os << "(ethernet)";
+ if (m_enPreambleSfd)
+ {
+ os << " preamble/sfd=" << m_preambleSfd << ",";
+ }
+ os << " length/type=" << m_lengthType
+ << ", source=" << m_source
+ << ", destination=" << m_destination;
+}
+uint32_t
+EthernetHeader::GetSerializedSize (void) const
+{
+ if (m_enPreambleSfd)
+ {
+ return PREAMBLE_SIZE + LENGTH_SIZE + 2*MAC_ADDR_SIZE;
+ } else {
+ return LENGTH_SIZE + 2*MAC_ADDR_SIZE;
+ }
+}
+
+void
+EthernetHeader::SerializeTo (Buffer::Iterator start) const
+{
+ Buffer::Iterator i = start;
+
+ if (m_enPreambleSfd)
+ {
+ i.WriteU64(m_preambleSfd);
+ }
+ NS_ASSERT (m_destination.GetLength () == MAC_ADDR_SIZE);
+ NS_ASSERT (m_source.GetLength () == MAC_ADDR_SIZE);
+ WriteTo (i, m_destination);
+ WriteTo (i, m_source);
+ i.WriteU16 (m_lengthType);
+}
+uint32_t
+EthernetHeader::DeserializeFrom (Buffer::Iterator start)
+{
+ Buffer::Iterator i = start;
+
+ if (m_enPreambleSfd)
+ {
+ m_enPreambleSfd = i.ReadU64 ();
+ }
+
+ ReadFrom (i, m_destination, MAC_ADDR_SIZE);
+ ReadFrom (i, m_source, MAC_ADDR_SIZE);
+ m_lengthType = i.ReadU16 ();
+
+ return GetSerializedSize ();
+}
+
+}; // namespace ns3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/node/ethernet-header.h Fri Jul 27 21:16:40 2007 +0200
@@ -0,0 +1,128 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2007 Emmanuelle Laprise
+ * All rights reserved.
+ *
+ * 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: Emmanuelle Laprise <emmanuelle.laprise@bluekazoo.ca>
+ */
+
+#ifndef ETHERNET_HEADER_H
+#define ETHERNET_HEADER_H
+
+#include "ns3/header.h"
+#include "ns3/mac-address.h"
+
+namespace ns3 {
+
+ /**
+ * Types of ethernet packets. Indicates the type of the current
+ * header.
+ */
+ enum ethernet_header_t {
+ LENGTH, /**< Basic ethernet packet, no tags, type/length field
+ indicates packet length or IP/ARP packet */
+ VLAN, /**< Single tagged packet. Header includes VLAN tag */
+ QINQ /**< Double tagged packet. Header includes two VLAN tags */
+ };
+/**
+ * \brief Packet header for Ethernet
+ *
+ * This class can be used to add a header to an ethernet packet that
+ * will specify the source and destination addresses and the length of
+ * the packet. Eventually the class will be improved to also support
+ * VLAN tags in packet headers.
+ */
+class EthernetHeader : public Header {
+public:
+ static const int PREAMBLE_SIZE = 8; /// size of the preamble_sfd header field
+ static const int LENGTH_SIZE = 2; /// size of the length_type header field
+ static const int MAC_ADDR_SIZE = 6; /// size of src/dest addr header fields
+
+ /**
+ * \brief Construct a null ethernet header
+ */
+ EthernetHeader ();
+ virtual ~EthernetHeader ();
+ /**
+ * \brief Enable or disabled the serialisation of the preamble and
+ * Sfd header fields
+ */
+ static void EnablePreambleSfd (bool enable);
+ /**
+ * \param size The size of the payload in bytes
+ */
+ void SetLengthType (uint16_t size);
+ /**
+ * \param source The source address of this packet
+ */
+ void SetSource (MacAddress source);
+ /**
+ * \param destination The destination address of this packet.
+ */
+ void SetDestination (MacAddress destination);
+ /**
+ * \param preambleSfd The value that the preambleSfd field should take
+ */
+ void SetPreambleSfd (uint64_t preambleSfd);
+ /**
+ * \return The size of the payload in bytes
+ */
+ uint16_t GetLengthType (void) const;
+ /**
+ * \return The type of packet (only basic Ethernet is currently supported)
+ */
+ ethernet_header_t GetPacketType (void) const;
+ /**
+ * \return The source address of this packet
+ */
+ MacAddress GetSource (void) const;
+ /**
+ * \return The destination address of this packet
+ */
+ MacAddress GetDestination (void) const;
+ /**
+ * \return The value of the PreambleSfd field
+ */
+ uint64_t GetPreambleSfd () const;
+ /**
+ * \return The size of the header
+ */
+ uint32_t GetHeaderSize() const;
+
+private:
+ virtual std::string DoGetName (void) const;
+ virtual void PrintTo (std::ostream &os) const;
+ virtual uint32_t GetSerializedSize (void) const;
+ virtual void SerializeTo (Buffer::Iterator start) const;
+ virtual uint32_t DeserializeFrom (Buffer::Iterator start);
+
+ void Init (void);
+
+ /**
+ * If false, the preamble/sfd are not serialised/deserialised.
+ */
+ static bool m_enPreambleSfd;
+
+ uint64_t m_preambleSfd; /// Value of the Preamble/SFD fields
+ uint16_t m_lengthType : 16; /// Length or type of the packet
+ MacAddress m_source; /// Source address
+ MacAddress m_destination; /// Destination address
+};
+
+}; // namespace ns3
+
+
+#endif /* ETHERNET_HEADER_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/node/ethernet-trailer.cc Fri Jul 27 21:16:40 2007 +0200
@@ -0,0 +1,124 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2005 INRIA
+ * All rights reserved.
+ *
+ * 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: Emmanuelle Laprise <emmanuelle.laprise@bluekazoo.ca>
+ */
+
+#include "ns3/assert.h"
+#include "ns3/debug.h"
+#include "ns3/trailer.h"
+#include "ethernet-trailer.h"
+
+NS_DEBUG_COMPONENT_DEFINE ("EthernetTrailer");
+
+namespace ns3 {
+
+bool EthernetTrailer::m_calcFcs = false;
+
+EthernetTrailer::EthernetTrailer ()
+{
+ Init();
+}
+
+EthernetTrailer::~EthernetTrailer ()
+{}
+
+void EthernetTrailer::Init()
+{
+ m_fcs = 0;
+}
+
+void
+EthernetTrailer::EnableFcs (bool enable)
+{
+ m_calcFcs = enable;
+}
+
+bool
+EthernetTrailer::CheckFcs (const Packet& p) const
+{
+ if (!m_calcFcs)
+ {
+ return true;
+ } else {
+ NS_DEBUG("FCS calculation is not yet enabled" << std::endl);
+ return false;
+ }
+}
+
+void
+EthernetTrailer::CalcFcs (const Packet& p)
+{
+ NS_DEBUG("FCS calculation is not yet enabled" << std::endl);
+}
+
+void
+EthernetTrailer::SetFcs (uint32_t fcs)
+{
+ m_fcs = fcs;
+}
+
+uint32_t
+EthernetTrailer::GetFcs (void)
+{
+ return m_fcs;
+}
+
+uint32_t
+EthernetTrailer::GetTrailerSize (void) const
+{
+ return GetSerializedSize();
+}
+std::string
+EthernetTrailer::DoGetName (void) const
+{
+ return "ETHERNET";
+}
+
+void
+EthernetTrailer::PrintTo (std::ostream &os) const
+{
+ os << " fcs=" << m_fcs;
+}
+uint32_t
+EthernetTrailer::GetSerializedSize (void) const
+{
+ return 4;
+}
+
+void
+EthernetTrailer::SerializeTo (Buffer::Iterator end) const
+{
+ Buffer::Iterator i = end;
+ i.Prev(GetSerializedSize());
+
+ i.WriteU32 (m_fcs);
+}
+uint32_t
+EthernetTrailer::DeserializeFrom (Buffer::Iterator end)
+{
+ Buffer::Iterator i = end;
+ uint32_t size = GetSerializedSize();
+ i.Prev(size);
+
+ m_fcs = i.ReadU32 ();
+
+ return size;
+}
+
+}; // namespace ns3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/node/ethernet-trailer.h Fri Jul 27 21:16:40 2007 +0200
@@ -0,0 +1,104 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2007 Emmanuelle Laprise
+ * All rights reserved.
+ *
+ * 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: Emmanuelle Laprise <emmanuelle.laprise@bluekazoo.ca>
+ */
+
+#ifndef ETHERNET_TRAILER_H
+#define ETHERNET_TRAILER_H
+
+#include "ns3/trailer.h"
+#include "ns3/packet.h"
+
+namespace ns3 {
+/**
+ * \brief Packet trailer for Ethernet
+ *
+ * This class can be used to add and verify the FCS at the end of an
+ * ethernet packet. The actual FCS functionality is not yet coded and
+ * so this acts more as a placeholder.
+ */
+class EthernetTrailer : public Trailer {
+public:
+ /**
+ * \brief Construct a null ethernet trailer
+ */
+ EthernetTrailer ();
+ virtual ~EthernetTrailer ();
+ /**
+ * \brief Enable or disabled FCS checking and calculations
+ * \param enable If true, enables FCS calculations.
+ */
+ static void EnableFcs (bool enable);
+ /**
+ * \brief Updates the Fcs Field to the correct FCS
+ * \param p Reference to a packet on which the FCS should be
+ * calculated. The packet should not currently contain an FCS
+ * trailer.
+ */
+ void CalcFcs (const Packet& p);
+ /**
+ * \brief Sets the FCS to a new value
+ * \param fcs New FCS value
+ */
+ void SetFcs (uint32_t fcs);
+ /**
+ * \return the FCS contained in this trailer
+ */
+ uint32_t GetFcs ();
+
+ /**
+ * \param p Reference to the packet on which the FCS should be
+ * calculated. The packet should not contain an FCS trailer.
+ * \return Returns true if the packet fcs is correct, false otherwise.
+ *
+ * If FCS checking is disabled, this method will always
+ * return true.
+ */
+ bool CheckFcs (const Packet& p) const;
+
+ /**
+ *\return Returns the size of the trailer
+ */
+ uint32_t GetTrailerSize() const;
+
+private:
+ virtual std::string DoGetName (void) const;
+ virtual void PrintTo (std::ostream &os) const;
+ virtual uint32_t GetSerializedSize (void) const;
+ virtual void SerializeTo (Buffer::Iterator end) const;
+ virtual uint32_t DeserializeFrom (Buffer::Iterator end);
+
+ /**
+ * Initializes the trailer parameters during construction.
+ */
+ void Init (void);
+
+ /**
+ * Enabled FCS calculations. If false, fcs is set to 0 and checkFCS
+ * returns true.
+ */
+ static bool m_calcFcs;
+ uint32_t m_fcs; /// Value of the fcs contained in the trailer
+
+};
+
+}; // namespace ns3
+
+
+#endif /* ETHERNET_TRAILER_H */
--- a/src/node/wscript Fri Jul 27 20:45:18 2007 +0200
+++ b/src/node/wscript Fri Jul 27 21:16:40 2007 +0200
@@ -10,7 +10,10 @@
'ipv4-address.cc',
'net-device.cc',
'mac-address.cc',
+ 'address-utils.cc',
'llc-snap-header.cc',
+ 'ethernet-header.cc',
+ 'ethernet-trailer.cc',
'ipv4-route.cc',
'queue.cc',
'drop-tail-queue.cc',
@@ -30,10 +33,13 @@
'ipv4-address.h',
'net-device.h',
'mac-address.h',
+ 'address-utils.h',
'ipv4-route.h',
'queue.h',
'drop-tail-queue.h',
'llc-snap-header.h',
+ 'ethernet-header.h',
+ 'ethernet-trailer.h',
'channel.h',
'node-list.h',
'socket.h',