Toggle navigation
Toggle navigation
This project
Loading...
Sign in
홍길동
/
onos
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
Thomas Vachuska
2014-10-27 17:45:10 -0700
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
e1bcb0b3efc4d0fa7ca225f0c15e7daee41b58c1
e1bcb0b3
1 parent
fc58467f
Added isLinkLocal predicate to MacAddress and used it in ReactiveForwarding.
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
37 additions
and
23 deletions
apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java
providers/lldp/src/main/java/org/onlab/onos/provider/lldp/impl/LinkDiscovery.java
utils/misc/src/main/java/org/onlab/packet/MacAddress.java
apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java
View file @
e1bcb0b
...
...
@@ -137,6 +137,11 @@ public class ReactiveForwarding {
HostId
id
=
HostId
.
hostId
(
ethPkt
.
getDestinationMAC
());
// Do not process link-local addresses in any way.
if
(
id
.
mac
().
isLinkLocal
())
{
return
;
}
// Do we know who this is for? If not, flood and bail.
Host
dst
=
hostService
.
getHost
(
id
);
if
(
dst
==
null
)
{
...
...
providers/lldp/src/main/java/org/onlab/onos/provider/lldp/impl/LinkDiscovery.java
View file @
e1bcb0b
This diff is collapsed. Click to expand it.
utils/misc/src/main/java/org/onlab/packet/MacAddress.java
View file @
e1bcb0b
...
...
@@ -22,7 +22,6 @@ import java.util.Arrays;
/**
* The class representing MAC address.
*
*/
public
class
MacAddress
{
...
...
@@ -32,6 +31,11 @@ public class MacAddress {
public
static
final
byte
[]
ZERO_MAC_ADDRESS
=
ZERO
.
getAddress
();
public
static
final
byte
[]
BROADCAST_MAC
=
BROADCAST
.
getAddress
();
private
static
final
byte
[]
LL
=
new
byte
[]{
0x01
,
(
byte
)
0x80
,
(
byte
)
0xc2
,
0x00
,
0x00
,
0x00
,
0x0e
,
0x03
};
public
static
final
int
MAC_ADDRESS_LENGTH
=
6
;
private
byte
[]
address
=
new
byte
[
MacAddress
.
MAC_ADDRESS_LENGTH
];
...
...
@@ -43,12 +47,10 @@ public class MacAddress {
* Returns a MAC address instance representing the value of the specified
* {@code String}.
*
* @param address
* the String representation of the MAC Address to be parsed.
* @param address the String representation of the MAC Address to be parsed.
* @return a MAC Address instance representing the value of the specified
* {@code String}.
* @throws IllegalArgumentException
* if the string cannot be parsed as a MAC address.
* {@code String}.
* @throws IllegalArgumentException if the string cannot be parsed as a MAC address.
*/
public
static
MacAddress
valueOf
(
final
String
address
)
{
final
String
[]
elements
=
address
.
split
(
":"
);
...
...
@@ -71,17 +73,15 @@ public class MacAddress {
* Returns a MAC address instance representing the specified {@code byte}
* array.
*
* @param address
* the byte array to be parsed.
* @param address the byte array to be parsed.
* @return a MAC address instance representing the specified {@code byte}
* array.
* @throws IllegalArgumentException
* if the byte array cannot be parsed as a MAC address.
* array.
* @throws IllegalArgumentException if the byte array cannot be parsed as a MAC address.
*/
public
static
MacAddress
valueOf
(
final
byte
[]
address
)
{
if
(
address
.
length
!=
MacAddress
.
MAC_ADDRESS_LENGTH
)
{
throw
new
IllegalArgumentException
(
"the length is not "
+
MacAddress
.
MAC_ADDRESS_LENGTH
);
+
MacAddress
.
MAC_ADDRESS_LENGTH
);
}
return
new
MacAddress
(
address
);
...
...
@@ -92,19 +92,17 @@ public class MacAddress {
* value. The lower 48 bits of the long value are used to parse as a MAC
* address.
*
* @param address
* the long value to be parsed. The lower 48 bits are used for a
* MAC address.
* @param address the long value to be parsed. The lower 48 bits are used for a
* MAC address.
* @return a MAC address instance representing the specified {@code long}
* value.
* @throws IllegalArgumentException
* if the long value cannot be parsed as a MAC address.
* value.
* @throws IllegalArgumentException if the long value cannot be parsed as a MAC address.
*/
public
static
MacAddress
valueOf
(
final
long
address
)
{
final
byte
[]
addressInBytes
=
new
byte
[]
{
final
byte
[]
addressInBytes
=
new
byte
[]{
(
byte
)
(
address
>>
40
&
0xff
),
(
byte
)
(
address
>>
32
&
0xff
),
(
byte
)
(
address
>>
24
&
0xff
),
(
byte
)
(
address
>>
16
&
0xff
),
(
byte
)
(
address
>>
8
&
0xff
),
(
byte
)
(
address
>>
0
&
0xff
)
};
(
byte
)
(
address
>>
8
&
0xff
),
(
byte
)
(
address
>>
0
&
0xff
)};
return
new
MacAddress
(
addressInBytes
);
}
...
...
@@ -122,7 +120,7 @@ public class MacAddress {
* Returns the value of the {@code MACAddress} as a {@code byte} array.
*
* @return the numeric value represented by this object after conversion to
*
type {@code byte} array.
* type {@code byte} array.
*/
public
byte
[]
toBytes
()
{
return
Arrays
.
copyOf
(
this
.
address
,
this
.
address
.
length
);
...
...
@@ -132,7 +130,7 @@ public class MacAddress {
* Returns the value of the {@code MACAddress} as a {@code long}.
*
* @return the numeric value represented by this object after conversion to
*
type {@code long}.
* type {@code long}.
*/
public
long
toLong
()
{
long
mac
=
0
;
...
...
@@ -169,6 +167,17 @@ public class MacAddress {
return
(
this
.
address
[
0
]
&
0x01
)
!=
0
;
}
/**
* Returns true if this MAC address is link local.
*
* @return true if link local
*/
public
boolean
isLinkLocal
()
{
return
LL
[
0
]
==
address
[
0
]
&&
LL
[
1
]
==
address
[
1
]
&&
LL
[
2
]
==
address
[
2
]
&&
LL
[
3
]
==
address
[
3
]
&&
LL
[
4
]
==
address
[
4
]
&&
(
LL
[
5
]
==
address
[
5
]
||
LL
[
6
]
==
address
[
5
]
||
LL
[
7
]
==
address
[
5
]);
}
@Override
public
boolean
equals
(
final
Object
o
)
{
if
(
o
==
this
)
{
...
...
@@ -202,7 +211,7 @@ public class MacAddress {
/**
* @return MAC address in string representation without colons (useful for
*
radix tree storage)
* radix tree storage)
*/
public
String
toStringNoColon
()
{
final
StringBuilder
builder
=
new
StringBuilder
();
...
...
Please
register
or
login
to post a comment