NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
ethernet.hpp
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2014-2018 Regents of the University of California,
4
* Arizona Board of Regents,
5
* Colorado State University,
6
* University Pierre & Marie Curie, Sorbonne University,
7
* Washington University in St. Louis,
8
* Beijing Institute of Technology,
9
* The University of Memphis.
10
*
11
* This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
12
*
13
* ndn-cxx library is free software: you can redistribute it and/or modify it under the
14
* terms of the GNU Lesser General Public License as published by the Free Software
15
* Foundation, either version 3 of the License, or (at your option) any later version.
16
*
17
* ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
18
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
19
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
20
*
21
* You should have received copies of the GNU General Public License and GNU Lesser
22
* General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
23
* <http://www.gnu.org/licenses/>.
24
*
25
* See AUTHORS.md for complete list of ndn-cxx authors and contributors.
26
*/
27
28
#ifndef NDN_NET_ETHERNET_HPP
29
#define NDN_NET_ETHERNET_HPP
30
31
#include <array>
32
#include <cstdint>
33
#include <functional>
34
#include <string>
35
36
namespace
ndn
{
37
namespace
ethernet {
38
39
const
uint16_t
ETHERTYPE_NDN
= 0x8624;
40
41
const
size_t
ADDR_LEN
= 6;
42
const
size_t
TYPE_LEN
= 2;
43
const
size_t
HDR_LEN
= 14;
44
const
size_t
TAG_LEN
= 4;
45
const
size_t
MIN_DATA_LEN
= 46;
46
const
size_t
MAX_DATA_LEN
= 1500;
47
const
size_t
CRC_LEN
= 4;
48
49
52
class
Address
:
public
std::array<uint8_t, ADDR_LEN>
53
{
54
public
:
56
Address
();
57
59
Address
(uint8_t a1, uint8_t a2, uint8_t a3,
60
uint8_t a4, uint8_t a5, uint8_t a6);
61
63
explicit
64
Address
(
const
uint8_t octets[
ADDR_LEN
]);
65
67
bool
68
isBroadcast
()
const
;
69
71
bool
72
isMulticast
()
const
;
73
75
bool
76
isNull
()
const
;
77
84
std::string
85
toString
(
char
sep =
':'
)
const
;
86
95
static
Address
96
fromString
(
const
std::string& str);
97
};
98
100
Address
101
getBroadcastAddress
();
102
104
Address
105
getDefaultMulticastAddress
();
106
107
std::ostream&
108
operator<<
(std::ostream& o,
const
Address
& a);
109
110
}
// namespace ethernet
111
}
// namespace ndn
112
113
namespace
std {
114
115
// specialize std::hash<> for ethernet::Address
116
template
<>
117
struct
hash<
ndn
::ethernet::Address>
118
{
119
size_t
120
operator()(
const
ndn::ethernet::Address
& a)
const
noexcept;
121
};
122
123
}
// namespace std
124
125
#endif // NDN_NET_ETHERNET_HPP
ndn::ethernet::Address::Address
Address()
Constructs a null Ethernet address (00:00:00:00:00:00)
Definition:
ethernet.cpp:39
ndn::ethernet::Address::isBroadcast
bool isBroadcast() const
True if this is a broadcast address (ff:ff:ff:ff:ff:ff)
Definition:
ethernet.cpp:60
ndn::ethernet::operator<<
std::ostream & operator<<(std::ostream &o, const Address &a)
Definition:
ethernet.cpp:135
ndn::ethernet::Address
represents an Ethernet hardware address
Definition:
ethernet.hpp:53
ndn::ethernet::getDefaultMulticastAddress
Address getDefaultMulticastAddress()
Returns the default Ethernet multicast address for NDN.
Definition:
ethernet.cpp:129
ndn::ethernet::ETHERTYPE_NDN
const uint16_t ETHERTYPE_NDN
Definition:
ethernet.hpp:39
ndn::ethernet::Address::fromString
static Address fromString(const std::string &str)
Creates an Address from a string containing an Ethernet address in hexadecimal notation,...
Definition:
ethernet.cpp:92
ndn::ethernet::TAG_LEN
const size_t TAG_LEN
Octets in 802.1Q tag (TPID + priority + VLAN)
Definition:
ethernet.hpp:44
ndn::ethernet::CRC_LEN
const size_t CRC_LEN
Octets in Ethernet frame check sequence.
Definition:
ethernet.hpp:47
ndn::ethernet::TYPE_LEN
const size_t TYPE_LEN
Octets in Ethertype field.
Definition:
ethernet.hpp:42
ndn::ethernet::Address::isNull
bool isNull() const
True if this is a null address (00:00:00:00:00:00)
Definition:
ethernet.cpp:72
ndn::ethernet::HDR_LEN
const size_t HDR_LEN
Total octets in Ethernet header (without 802.1Q tag)
Definition:
ethernet.hpp:43
ndn::ethernet::MAX_DATA_LEN
const size_t MAX_DATA_LEN
Max octets in Ethernet payload.
Definition:
ethernet.hpp:46
ndn::ethernet::MIN_DATA_LEN
const size_t MIN_DATA_LEN
Min octets in Ethernet payload (assuming no 802.1Q tag)
Definition:
ethernet.hpp:45
ndn::ethernet::Address::toString
std::string toString(char sep=':') const
Converts the address to a human-readable string.
Definition:
ethernet.cpp:78
ndn::ethernet::ADDR_LEN
const size_t ADDR_LEN
Octets in one Ethernet address.
Definition:
ethernet.hpp:41
ndn::ethernet::getBroadcastAddress
Address getBroadcastAddress()
Returns the Ethernet broadcast address (ff:ff:ff:ff:ff:ff)
Definition:
ethernet.cpp:123
ndn::ethernet::Address::isMulticast
bool isMulticast() const
True if this is a multicast address.
Definition:
ethernet.cpp:66
ndn
Copyright (c) 2011-2015 Regents of the University of California.
Definition:
ndn-strategy-choice-helper.hpp:34
ndnSIM
ndn-cxx
ndn-cxx
net
ethernet.hpp
Generated on Mon Jun 1 2020 22:32:14 for ndnSIM by
1.8.18