mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-11-03 09:41:14 +01:00
IPv6RA : Global prefix listing command support
Change-Id: I3c2cd28feab202273b14532c6ed0403df4e36344
This commit is contained in:
parent
04f9d4bf93
commit
0b4057a57b
@ -1,7 +1,9 @@
|
|||||||
COMPILE_DEPS = [
|
COMPILE_DEPS = [
|
||||||
'//lib:CORE_DEPS',
|
'//lib:CORE_DEPS',
|
||||||
'//lib:JACKSON',
|
'//lib:JACKSON',
|
||||||
'//incubator/api:onos-incubator-api'
|
'//incubator/api:onos-incubator-api',
|
||||||
|
'//lib:org.apache.karaf.shell.console',
|
||||||
|
'//cli:onos-cli'
|
||||||
]
|
]
|
||||||
|
|
||||||
osgi_jar (
|
osgi_jar (
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!--
|
<!--
|
||||||
~ Copyright 2015-present Open Networking Foundation
|
~ Copyright 2017-present Open Networking Foundation
|
||||||
~ Originally created by Pengfei Lu, Network and Cloud Computing Laboratory, Dalian University of Technology, China
|
~ Originally created by Pengfei Lu, Network and Cloud Computing Laboratory, Dalian University of Technology, China
|
||||||
~ Advisers: Keqiu Li and Heng Qi
|
~ Advisers: Keqiu Li and Heng Qi
|
||||||
~ This work is supported by the State Key Program of National Natural Science of China(Grant No. 61432002)
|
~ This work is supported by the State Key Program of National Natural Science of China(Grant No. 61432002)
|
||||||
@ -66,6 +66,15 @@
|
|||||||
<artifactId>onlab-misc</artifactId>
|
<artifactId>onlab-misc</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.karaf.shell</groupId>
|
||||||
|
<artifactId>org.apache.karaf.shell.console</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.onosproject</groupId>
|
||||||
|
<artifactId>onos-cli</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@ -18,6 +18,7 @@ package org.onosproject.ra;
|
|||||||
|
|
||||||
import org.apache.felix.scr.annotations.Activate;
|
import org.apache.felix.scr.annotations.Activate;
|
||||||
import org.apache.felix.scr.annotations.Component;
|
import org.apache.felix.scr.annotations.Component;
|
||||||
|
import org.apache.felix.scr.annotations.Service;
|
||||||
import org.apache.felix.scr.annotations.Deactivate;
|
import org.apache.felix.scr.annotations.Deactivate;
|
||||||
import org.apache.felix.scr.annotations.Modified;
|
import org.apache.felix.scr.annotations.Modified;
|
||||||
import org.apache.felix.scr.annotations.Property;
|
import org.apache.felix.scr.annotations.Property;
|
||||||
@ -87,12 +88,14 @@ import java.util.stream.IntStream;
|
|||||||
import static com.google.common.base.Strings.isNullOrEmpty;
|
import static com.google.common.base.Strings.isNullOrEmpty;
|
||||||
import static org.onlab.util.Tools.get;
|
import static org.onlab.util.Tools.get;
|
||||||
import static org.onlab.util.Tools.groupedThreads;
|
import static org.onlab.util.Tools.groupedThreads;
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manages IPv6 Router Advertisements.
|
* Manages IPv6 Router Advertisements.
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
@Component(immediate = true)
|
@Component(immediate = true)
|
||||||
public class RouterAdvertisementManager {
|
public class RouterAdvertisementManager implements RoutingAdvertisementService {
|
||||||
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
private static final String PROP_RA_THREADS_POOL = "raPoolSize";
|
private static final String PROP_RA_THREADS_POOL = "raPoolSize";
|
||||||
@ -160,6 +163,11 @@ public class RouterAdvertisementManager {
|
|||||||
@GuardedBy(value = "this")
|
@GuardedBy(value = "this")
|
||||||
private final Map<DeviceId, List<InterfaceIpAddress>> globalPrefixes = new LinkedHashMap<>();
|
private final Map<DeviceId, List<InterfaceIpAddress>> globalPrefixes = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ImmutableMap<DeviceId, List<InterfaceIpAddress>> getGlobalPrefixes() {
|
||||||
|
return ImmutableMap.copyOf(globalPrefixes);
|
||||||
|
}
|
||||||
|
|
||||||
private Function<Interface, Map.Entry<ConnectPoint, List<InterfaceIpAddress>>> prefixGenerator =
|
private Function<Interface, Map.Entry<ConnectPoint, List<InterfaceIpAddress>>> prefixGenerator =
|
||||||
i -> {
|
i -> {
|
||||||
Map.Entry<ConnectPoint, List<InterfaceIpAddress>> prefixEntry;
|
Map.Entry<ConnectPoint, List<InterfaceIpAddress>> prefixEntry;
|
||||||
|
|||||||
@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2017-present Open Networking Foundation
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.onosproject.ra;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.onosproject.net.DeviceId;
|
||||||
|
import org.onosproject.net.host.InterfaceIpAddress;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
|
||||||
|
public interface RoutingAdvertisementService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns global prefixes.
|
||||||
|
*
|
||||||
|
* @return global prefixes
|
||||||
|
*/
|
||||||
|
ImmutableMap<DeviceId, List<InterfaceIpAddress>> getGlobalPrefixes();
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2017-present Open Networking Foundation
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.onosproject.ra.cli;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.onosproject.net.DeviceId;
|
||||||
|
import org.onosproject.net.host.InterfaceIpAddress;
|
||||||
|
import org.onosproject.ra.RoutingAdvertisementService;
|
||||||
|
import org.onosproject.cli.AbstractShellCommand;
|
||||||
|
|
||||||
|
import org.apache.karaf.shell.commands.Command;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Command to list global-prefixes in Routing Advertisement.
|
||||||
|
*/
|
||||||
|
@Command(scope = "onos", name = "ra-global-prefixes",
|
||||||
|
description = "List Routing Advertisement global prefixes")
|
||||||
|
public class GlobalPrefixesListCommand extends AbstractShellCommand {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute() {
|
||||||
|
RoutingAdvertisementService raService =
|
||||||
|
AbstractShellCommand.get(RoutingAdvertisementService.class);
|
||||||
|
printGlobalPrefixes(raService.getGlobalPrefixes());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void printGlobalPrefixes(ImmutableMap<DeviceId, List<InterfaceIpAddress>> globalPrefixes) {
|
||||||
|
globalPrefixes.forEach(((deviceId, interfaceIpAddresses) -> {
|
||||||
|
print("%s", deviceId);
|
||||||
|
interfaceIpAddresses.forEach(interfaceIpAddress -> print(" %s", interfaceIpAddress));
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2017-present Open Networking Foundation
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Router Advertisement application CLI handlers.
|
||||||
|
*/
|
||||||
|
package org.onosproject.ra.cli;
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
<!--
|
||||||
|
~ Copyright 2017-present Open Networking Foundation
|
||||||
|
~
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
|
||||||
|
|
||||||
|
<command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
|
||||||
|
<command>
|
||||||
|
<action class="org.onosproject.ra.cli.GlobalPrefixesListCommand"/>
|
||||||
|
</command>
|
||||||
|
</command-bundle>
|
||||||
|
</blueprint>
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user