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 */
|