aboutsummaryrefslogtreecommitdiffstats
path: root/emu-radio/lte-emulator/extensions/lte-tap-ue-net-device.h
blob: 7e09e4c1387263f56cd30c0aeb592426fb75943d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
 * Copyright (c) 2017 Cisco and/or its affiliates.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef LTE_TAP_UE_NET_DEVICE_H
#define LTE_TAP_UE_NET_DEVICE_H

#include <ns3/lte-ue-net-device.h>

/**
 * \brief LteTapUeNetDevice class extends lteUeNetDevice class to support emulation of lte channel
 */

namespace ns3 {


/**
 * \defgroup lte LTE Models
 *
 */

/**
 * \ingroup lte
 *
 * LteTapUeNetDevice overides the receive logic and overides SetPromiscReceiveCallback of class lteUeNetDevice,
 * to make it compatable with tapbridge emulation
 */
class LteTapUeNetDevice : public LteUeNetDevice
{
public:
  static TypeId GetTypeId (void);
  virtual void Receive (Ptr <Packet> p);
  virtual void SetPromiscReceiveCallback (PromiscReceiveCallback cb);
  LteTapUeNetDevice (void);

  //overwrite the implementation in LteUeNetDevice in order to deal with arp request
  virtual bool Send (Ptr <Packet> packet, const Address &dest, uint16_t protocolNumber);

  //TODO optional? if related tap device resides on Container
  void setMacAdressOnVM (Mac48Address vmMacAddress)
  {
    m_vmMacAdress = vmMacAddress;
  }

  void setBsIpAddress (Ipv4Address bsIp)
  {
    m_bsIpAddress = bsIp;
  }

 protected:
  NetDevice::PromiscReceiveCallback m_promiscRx;
  Mac48Address m_vmMacAdress;
  //used for generating arp reply only
  Mac48Address m_virtualAddress;
  Ipv4Address m_bsIpAddress;
};

} // namespace ns3

#endif /* LTE_TAP_UE_NET_DEVICE_H */