A Discrete-Event Network Simulator
API
lte-net-device.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2010 TELEMATICS LAB, DEE - Politecnico di Bari
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Giuseppe Piro <g.piro@poliba.it>
19  * Nicola Baldo <nbaldo@cttc.es>
20  */
21 
22 #ifndef LTE_NET_DEVICE_H
23 #define LTE_NET_DEVICE_H
24 
25 #include <ns3/net-device.h>
26 #include <ns3/event-id.h>
27 #include <ns3/mac48-address.h>
28 #include <ns3/traced-callback.h>
29 #include <ns3/nstime.h>
30 #include <ns3/lte-phy.h>
31 #include <ns3/lte-control-messages.h>
32 
33 namespace ns3 {
34 
35 class Node;
36 class Packet;
37 
48 class LteNetDevice : public NetDevice
49 {
50 public:
51  static TypeId GetTypeId (void);
52 
53  LteNetDevice (void);
54  virtual ~LteNetDevice (void);
55 
56  virtual void DoDispose (void);
57 
58  // inherited from NetDevice
59  virtual void SetIfIndex (const uint32_t index);
60  virtual uint32_t GetIfIndex (void) const;
61  virtual Ptr<Channel> GetChannel (void) const;
62  virtual bool SetMtu (const uint16_t mtu);
63  virtual uint16_t GetMtu (void) const;
64  virtual void SetAddress (Address address);
65  virtual Address GetAddress (void) const;
66  virtual bool IsLinkUp (void) const;
67  virtual void AddLinkChangeCallback (Callback<void> callback);
68  virtual bool IsBroadcast (void) const;
69  virtual Address GetBroadcast (void) const;
70  virtual bool IsMulticast (void) const;
71  virtual bool IsPointToPoint (void) const;
72  virtual bool IsBridge (void) const;
73  virtual Ptr<Node> GetNode (void) const;
74  virtual void SetNode (Ptr<Node> node);
75  virtual bool NeedsArp (void) const;
77  virtual Address GetMulticast (Ipv4Address addr) const;
78  virtual Address GetMulticast (Ipv6Address addr) const;
80  virtual bool SendFrom (Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber);
81  virtual bool SupportsSendFrom (void) const;
82 
88  void Receive (Ptr<Packet> p);
89 
90 protected:
91 
93 
94 private:
95  LteNetDevice (const LteNetDevice &);
97 
99 
101 
102  uint32_t m_ifIndex;
103  bool m_linkUp;
104  mutable uint16_t m_mtu;
105 
107 };
108 
109 
110 } // namespace ns3
111 
112 #endif /* LTE_NET_DEVICE_H */
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:73
virtual bool IsLinkUp(void) const
virtual void DoDispose(void)
Destructor implementation.
virtual void SetNode(Ptr< Node > node)
Forward calls to a chain of Callback.
virtual Address GetMulticast(Ipv4Address addr) const
Make and return a MAC multicast address using the provided multicast group.
virtual Address GetBroadcast(void) const
a polymophic address class
Definition: address.h:90
virtual Ptr< Node > GetNode(void) const
virtual void SetIfIndex(const uint32_t index)
virtual uint32_t GetIfIndex(void) const
virtual void SetAddress(Address address)
Set the address of this interface.
NetDevice::ReceiveCallback m_rxCallback
virtual bool IsPointToPoint(void) const
Return true if the net device is on a point-to-point link.
static TypeId GetTypeId(void)
Ptr< Node > m_node
virtual uint16_t GetMtu(void) const
Every class exported by the ns3 library is enclosed in the ns3 namespace.
virtual bool NeedsArp(void) const
virtual bool IsBridge(void) const
Return true if the net device is acting as a bridge.
virtual bool IsMulticast(void) const
an EUI-48 address
Definition: mac48-address.h:43
virtual bool IsBroadcast(void) const
virtual Address GetAddress(void) const
TracedCallback m_linkChangeCallbacks
virtual void AddLinkChangeCallback(Callback< void > callback)
void Receive(Ptr< Packet > p)
receive a packet from the lower layers in order to forward it to the upper layers ...
virtual ~LteNetDevice(void)
Describes an IPv6 address.
Definition: ipv6-address.h:48
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:40
Network layer to device interface.
Definition: net-device.h:405
LteNetDevice & operator=(const LteNetDevice &)
virtual void SetPromiscReceiveCallback(PromiscReceiveCallback cb)
virtual bool SetMtu(const uint16_t mtu)
tuple address
Definition: first.py:37
LteNetDevice provides basic implementation for all LTE network devices.
Mac48Address m_address
virtual Ptr< Channel > GetChannel(void) const
a unique identifier for an interface.
Definition: type-id.h:58
virtual bool SendFrom(Ptr< Packet > packet, const Address &source, const Address &dest, uint16_t protocolNumber)
virtual bool SupportsSendFrom(void) const
virtual void SetReceiveCallback(NetDevice::ReceiveCallback cb)