author | Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
Tue, 02 Sep 2008 10:12:14 -0700 | |
changeset 3576 | f6abfdf47163 |
parent 3549 | 4eaf02702f17 |
child 3852 | 9cf7ad0cac85 |
permissions | -rw-r--r-- |
1181
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
1 |
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
2 |
/* |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
3 |
* Copyright (c) 2007 INRIA |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
4 |
* |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
6 |
* it under the terms of the GNU General Public License version 2 as |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
7 |
* published by the Free Software Foundation; |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
8 |
* |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
12 |
* GNU General Public License for more details. |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
13 |
* |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
17 |
* |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
18 |
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
762d1616e16a
add license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1179
diff
changeset
|
19 |
*/ |
1494
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
20 |
#include "mac48-address.h" |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
21 |
#include "address.h" |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
22 |
#include "ns3/assert.h" |
1167 | 23 |
#include <iomanip> |
1170
39ca41540e00
fix optimized build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1167
diff
changeset
|
24 |
#include <iostream> |
3365
6409d2460601
bug 245: build failure with gcc 4.3.x
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2954
diff
changeset
|
25 |
#include <string.h> |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
26 |
|
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
27 |
namespace ns3 { |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
28 |
|
2582
3e28107b870f
rename old VALUE leftovers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2422
diff
changeset
|
29 |
ATTRIBUTE_HELPER_CPP (Mac48Address); |
2422 | 30 |
|
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
31 |
#define ASCII_a (0x41) |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
32 |
#define ASCII_z (0x5a) |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
33 |
#define ASCII_A (0x61) |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
34 |
#define ASCII_Z (0x7a) |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
35 |
#define ASCII_COLON (0x3a) |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
36 |
#define ASCII_ZERO (0x30) |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
37 |
|
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
38 |
static char |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
39 |
AsciiToLowCase (char c) |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
40 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
41 |
if (c >= ASCII_a && c <= ASCII_z) { |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
42 |
return c; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
43 |
} else if (c >= ASCII_A && c <= ASCII_Z) { |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
44 |
return c + (ASCII_a - ASCII_A); |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
45 |
} else { |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
46 |
return c; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
47 |
} |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
48 |
} |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
49 |
|
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
50 |
|
1494
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
51 |
Mac48Address::Mac48Address () |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
52 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
53 |
memset (m_address, 0, 6); |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
54 |
} |
1494
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
55 |
Mac48Address::Mac48Address (const char *str) |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
56 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
57 |
int i = 0; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
58 |
while (*str != 0 && i < 6) |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
59 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
60 |
uint8_t byte = 0; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
61 |
while (*str != ASCII_COLON && *str != 0) |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
62 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
63 |
byte <<= 4; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
64 |
char low = AsciiToLowCase (*str); |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
65 |
if (low >= ASCII_a) |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
66 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
67 |
byte |= low - ASCII_a + 10; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
68 |
} |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
69 |
else |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
70 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
71 |
byte |= low - ASCII_ZERO; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
72 |
} |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
73 |
str++; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
74 |
} |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
75 |
m_address[i] = byte; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
76 |
i++; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
77 |
if (*str == 0) |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
78 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
79 |
break; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
80 |
} |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
81 |
str++; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
82 |
} |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
83 |
NS_ASSERT (i == 6); |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
84 |
} |
1167 | 85 |
void |
1494
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
86 |
Mac48Address::CopyFrom (const uint8_t buffer[6]) |
1167 | 87 |
{ |
88 |
memcpy (m_address, buffer, 6); |
|
89 |
} |
|
90 |
void |
|
1494
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
91 |
Mac48Address::CopyTo (uint8_t buffer[6]) const |
1167 | 92 |
{ |
93 |
memcpy (buffer, m_address, 6); |
|
94 |
} |
|
95 |
||
1173
06e382cadbbb
add Ipv4Address::IsMatchingType and Eui48Address::IsMatchingType
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1170
diff
changeset
|
96 |
bool |
1494
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
97 |
Mac48Address::IsMatchingType (const Address &address) |
1173
06e382cadbbb
add Ipv4Address::IsMatchingType and Eui48Address::IsMatchingType
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1170
diff
changeset
|
98 |
{ |
06e382cadbbb
add Ipv4Address::IsMatchingType and Eui48Address::IsMatchingType
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1170
diff
changeset
|
99 |
return address.CheckCompatible (GetType (), 6); |
06e382cadbbb
add Ipv4Address::IsMatchingType and Eui48Address::IsMatchingType
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1170
diff
changeset
|
100 |
} |
1705
ae9623064367
constify conversion operator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1494
diff
changeset
|
101 |
Mac48Address::operator Address () const |
1205
6cee0d34bda6
add implicit conversion to Eui48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1173
diff
changeset
|
102 |
{ |
6cee0d34bda6
add implicit conversion to Eui48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1173
diff
changeset
|
103 |
return ConvertTo (); |
6cee0d34bda6
add implicit conversion to Eui48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1173
diff
changeset
|
104 |
} |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
105 |
Address |
1494
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
106 |
Mac48Address::ConvertTo (void) const |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
107 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
108 |
return Address (GetType (), m_address, 6); |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
109 |
} |
1494
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
110 |
Mac48Address |
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
111 |
Mac48Address::ConvertFrom (const Address &address) |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
112 |
{ |
1159
eef87ec51ad7
improve type checking
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1158
diff
changeset
|
113 |
NS_ASSERT (address.CheckCompatible (GetType (), 6)); |
1494
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
114 |
Mac48Address retval; |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
115 |
address.CopyTo (retval.m_address); |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
116 |
return retval; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
117 |
} |
1494
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
118 |
Mac48Address |
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
119 |
Mac48Address::Allocate (void) |
1161
bb72baff8b26
replace MacAddress by Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1159
diff
changeset
|
120 |
{ |
bb72baff8b26
replace MacAddress by Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1159
diff
changeset
|
121 |
static uint64_t id = 0; |
bb72baff8b26
replace MacAddress by Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1159
diff
changeset
|
122 |
id++; |
1494
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
123 |
Mac48Address address; |
1179
45fc6b70b9cc
fix bugless in address allocation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1173
diff
changeset
|
124 |
address.m_address[0] = (id >> 40) & 0xff; |
1161
bb72baff8b26
replace MacAddress by Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1159
diff
changeset
|
125 |
address.m_address[1] = (id >> 32) & 0xff; |
bb72baff8b26
replace MacAddress by Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1159
diff
changeset
|
126 |
address.m_address[2] = (id >> 24) & 0xff; |
bb72baff8b26
replace MacAddress by Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1159
diff
changeset
|
127 |
address.m_address[3] = (id >> 16) & 0xff; |
bb72baff8b26
replace MacAddress by Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1159
diff
changeset
|
128 |
address.m_address[4] = (id >> 8) & 0xff; |
bb72baff8b26
replace MacAddress by Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1159
diff
changeset
|
129 |
address.m_address[5] = (id >> 0) & 0xff; |
bb72baff8b26
replace MacAddress by Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1159
diff
changeset
|
130 |
return address; |
bb72baff8b26
replace MacAddress by Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1159
diff
changeset
|
131 |
} |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
132 |
uint8_t |
1494
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
133 |
Mac48Address::GetType (void) |
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
134 |
{ |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
135 |
static uint8_t type = Address::Register (); |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
136 |
return type; |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
137 |
} |
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
138 |
|
1707
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
139 |
bool |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
140 |
Mac48Address::IsBroadcast (void) const |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
141 |
{ |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
142 |
return *this == GetBroadcast (); |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
143 |
} |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
144 |
bool |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
145 |
Mac48Address::IsMulticast (void) const |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
146 |
{ |
3549
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
147 |
uint8_t mcBuf[6]; |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
148 |
CopyTo (mcBuf); |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
149 |
mcBuf[3] &= 0x80; |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
150 |
mcBuf[4] = 0; |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
151 |
mcBuf[5] = 0; |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
152 |
Mac48Address prefix; |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
153 |
prefix.CopyFrom (mcBuf); |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
154 |
return prefix == Mac48Address::GetMulticastPrefix (); |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
155 |
} |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
156 |
bool |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
157 |
Mac48Address::IsGroup (void) const |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
158 |
{ |
1707
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
159 |
return (m_address[0] & 0x01) == 0x01; |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
160 |
} |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
161 |
Mac48Address |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
162 |
Mac48Address::GetBroadcast (void) |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
163 |
{ |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
164 |
static Mac48Address broadcast = Mac48Address ("ff:ff:ff:ff:ff:ff"); |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
165 |
return broadcast; |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
166 |
} |
3549
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
167 |
Mac48Address |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
168 |
Mac48Address::GetMulticastPrefix (void) |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
169 |
{ |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
170 |
static Mac48Address multicast = Mac48Address ("01:00:5e:00:00:00"); |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
171 |
return multicast; |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
172 |
} |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
173 |
Mac48Address |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
174 |
Mac48Address::GetMulticast (Ipv4Address multicastGroup) |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
175 |
{ |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
176 |
Mac48Address etherAddr = Mac48Address::GetMulticastPrefix (); |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
177 |
// |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
178 |
// We now have the multicast address in an abstract 48-bit container. We |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
179 |
// need to pull it out so we can play with it. When we're done, we have the |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
180 |
// high order bits in etherBuffer[0], etc. |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
181 |
// |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
182 |
uint8_t etherBuffer[6]; |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
183 |
etherAddr.CopyTo (etherBuffer); |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
184 |
|
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
185 |
// |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
186 |
// Now we need to pull the raw bits out of the Ipv4 destination address. |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
187 |
// |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
188 |
uint8_t ipBuffer[4]; |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
189 |
multicastGroup.Serialize (ipBuffer); |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
190 |
|
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
191 |
// |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
192 |
// RFC 1112 says that an Ipv4 host group address is mapped to an EUI-48 |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
193 |
// multicast address by placing the low-order 23-bits of the IP address into |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
194 |
// the low-order 23 bits of the Ethernet multicast address |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
195 |
// 01-00-5E-00-00-00 (hex). |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
196 |
// |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
197 |
etherBuffer[3] |= ipBuffer[1] & 0x7f; |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
198 |
etherBuffer[4] = ipBuffer[2]; |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
199 |
etherBuffer[5] = ipBuffer[3]; |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
200 |
|
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
201 |
// |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
202 |
// Now, etherBuffer has the desired ethernet multicast address. We have to |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
203 |
// suck these bits back into the Mac48Address, |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
204 |
// |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
205 |
Mac48Address result; |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
206 |
result.CopyFrom (etherBuffer); |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
207 |
return result; |
4eaf02702f17
shared Mac48 multicast code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3365
diff
changeset
|
208 |
} |
2411
a50e95c98d3f
add Value support to Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1953
diff
changeset
|
209 |
|
1494
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
210 |
bool operator == (const Mac48Address &a, const Mac48Address &b) |
1167 | 211 |
{ |
1707
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
212 |
return memcmp (a.m_address, b.m_address, 6) == 0; |
1167 | 213 |
} |
1494
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
214 |
bool operator != (const Mac48Address &a, const Mac48Address &b) |
1167 | 215 |
{ |
216 |
return ! (a == b); |
|
217 |
} |
|
218 |
||
1707
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
219 |
bool operator < (const Mac48Address &a, const Mac48Address &b) |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
220 |
{ |
1926
88023edeb6ea
add operator <
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1907
diff
changeset
|
221 |
uint8_t aP[6]; |
88023edeb6ea
add operator <
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1907
diff
changeset
|
222 |
uint8_t bP[6]; |
88023edeb6ea
add operator <
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1907
diff
changeset
|
223 |
a.CopyTo (aP); |
88023edeb6ea
add operator <
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1907
diff
changeset
|
224 |
b.CopyTo (bP); |
1707
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
225 |
for (uint8_t i = 0; i < 6; i++) |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
226 |
{ |
1953 | 227 |
if (a.m_address[i] < b.m_address[i]) |
1707
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
228 |
{ |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
229 |
return true; |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
230 |
} |
1953 | 231 |
else if (a.m_address[i] > b.m_address[i]) |
1707
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
232 |
{ |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
233 |
return false; |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
234 |
} |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
235 |
} |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
236 |
return false; |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
237 |
} |
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
238 |
|
64531b6e76f1
bug 86: add missing functions to manipulate Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1705
diff
changeset
|
239 |
|
1494
c2985e1cd091
rename Euixx to Macxx
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1270
diff
changeset
|
240 |
std::ostream& operator<< (std::ostream& os, const Mac48Address & address) |
1167 | 241 |
{ |
242 |
uint8_t ad[6]; |
|
243 |
address.CopyTo (ad); |
|
244 |
||
245 |
os.setf (std::ios::hex, std::ios::basefield); |
|
1262
8e3d39fa3565
fix trace output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1181
diff
changeset
|
246 |
os.fill('0'); |
1167 | 247 |
for (uint8_t i=0; i < 5; i++) |
248 |
{ |
|
249 |
os << std::setw(2) << (uint32_t)ad[i] << ":"; |
|
250 |
} |
|
251 |
// Final byte not suffixed by ":" |
|
252 |
os << std::setw(2) << (uint32_t)ad[5]; |
|
253 |
os.setf (std::ios::dec, std::ios::basefield); |
|
1262
8e3d39fa3565
fix trace output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1181
diff
changeset
|
254 |
os.fill(' '); |
1167 | 255 |
return os; |
256 |
} |
|
257 |
||
2954
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
258 |
static uint8_t |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
259 |
AsInt (std::string v) |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
260 |
{ |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
261 |
std::istringstream iss; |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
262 |
iss.str (v); |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
263 |
uint32_t retval; |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
264 |
iss >> std::hex >> retval >> std::dec; |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
265 |
return retval; |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
266 |
} |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
267 |
|
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
268 |
std::istream& operator>> (std::istream& is, Mac48Address & address) |
2411
a50e95c98d3f
add Value support to Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1953
diff
changeset
|
269 |
{ |
2954
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
270 |
std::string v; |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
271 |
is >> v; |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
272 |
|
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
273 |
std::string::size_type col = 0; |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
274 |
for (uint8_t i = 0; i < 6; ++i) |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
275 |
{ |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
276 |
std::string tmp; |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
277 |
std::string::size_type next; |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
278 |
next = v.find (":", col); |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
279 |
if (next == std::string::npos) |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
280 |
{ |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
281 |
tmp = v.substr (col, v.size ()-col); |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
282 |
address.m_address[i] = AsInt (tmp); |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
283 |
break; |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
284 |
} |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
285 |
else |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
286 |
{ |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
287 |
tmp = v.substr (col, next-col); |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
288 |
address.m_address[i] = AsInt (tmp); |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
289 |
col = next + 1; |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
290 |
} |
a1a6028e4c39
implement operator >>
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2582
diff
changeset
|
291 |
} |
2411
a50e95c98d3f
add Value support to Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1953
diff
changeset
|
292 |
return is; |
a50e95c98d3f
add Value support to Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1953
diff
changeset
|
293 |
} |
a50e95c98d3f
add Value support to Mac48Address
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1953
diff
changeset
|
294 |
|
1158
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
295 |
|
12d68dff3353
new address types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
296 |
} // namespace ns3 |