mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-17 10:21:52 +02:00
ONOS-506: IPv6 forwarding option for ReactiveForwarder.
org.onosproject.fwd.ReactiveForwarding.cfg ------------------------------------------ ipv6Forwarding = true will enable IPv6 forwarding in ReactiveForwarder. ONOS-506: Updates for the comment. * ReactiveForwarding.java Line 133: Make the comment to concrete Javadoc. Line 134: Method is changed to static. Line 141: Catch ClassCastException instead of generic Exception. * org.onosproject.fwd.ReactiveForwarding.cfg Line 3: Fix typo ;-). Line 7: Add comment: the option affects both IPv4 and IPv6. Change-Id: Ie7fdc7fc26c7d36b9633bfc828dffe27015214f7
This commit is contained in:
parent
923d9d8104
commit
d37c9cadab
@ -84,10 +84,15 @@ public class ReactiveForwarding {
|
||||
label = "Enable packet-out only forwarding; default is false")
|
||||
private boolean packetOutOnly = false;
|
||||
|
||||
@Property(name = "ipv6Forwarding", boolValue = false,
|
||||
label = "Enable IPv6 forwarding; default is false")
|
||||
private boolean ipv6Forwarding = false;
|
||||
|
||||
@Activate
|
||||
public void activate() {
|
||||
public void activate(ComponentContext context) {
|
||||
appId = coreService.registerApplication("org.onosproject.fwd");
|
||||
packetService.addProcessor(processor, PacketProcessor.ADVISOR_MAX + 2);
|
||||
readComponentConfiguration(context);
|
||||
log.info("Started with Application ID {}", appId.id());
|
||||
}
|
||||
|
||||
@ -101,16 +106,49 @@ public class ReactiveForwarding {
|
||||
|
||||
@Modified
|
||||
public void modified(ComponentContext context) {
|
||||
Dictionary properties = context.getProperties();
|
||||
String flag = (String) properties.get("packetOutOnly");
|
||||
if (flag != null) {
|
||||
boolean enabled = flag.equals("true");
|
||||
if (packetOutOnly != enabled) {
|
||||
packetOutOnly = enabled;
|
||||
log.info("Reconfigured. Packet-out only forwarding is {}",
|
||||
packetOutOnly ? "enabled" : "disabled");
|
||||
}
|
||||
readComponentConfiguration(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts properties from the component configuration context.
|
||||
*
|
||||
* @param context the component context
|
||||
*/
|
||||
private void readComponentConfiguration(ComponentContext context) {
|
||||
Dictionary<?, ?> properties = context.getProperties();
|
||||
boolean packetOutOnlyEnabled = isPropertyEnabled(properties, "packetOutOnly");
|
||||
if (packetOutOnly != packetOutOnlyEnabled) {
|
||||
packetOutOnly = packetOutOnlyEnabled;
|
||||
log.info("Configured. Packet-out only forwarding is {}",
|
||||
packetOutOnly ? "enabled" : "disabled");
|
||||
}
|
||||
boolean ipv6ForwardingEnabled = isPropertyEnabled(properties, "ipv6Forwarding");
|
||||
if (ipv6Forwarding != ipv6ForwardingEnabled) {
|
||||
ipv6Forwarding = ipv6ForwardingEnabled;
|
||||
log.info("Configured. IPv6 forwarding is {}",
|
||||
ipv6Forwarding ? "enabled" : "disabled");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check property name is defined and set to true.
|
||||
*
|
||||
* @param properties properties to be looked up
|
||||
* @param propertyName the name of the property to look up
|
||||
* @return true when the propertyName is defined and set to true
|
||||
*/
|
||||
private static boolean isPropertyEnabled(Dictionary<?, ?> properties, String propertyName) {
|
||||
boolean enabled = false;
|
||||
try {
|
||||
String flag = (String) properties.get(propertyName);
|
||||
if (flag != null) {
|
||||
enabled = flag.equals("true");
|
||||
}
|
||||
} catch (ClassCastException e) {
|
||||
// No propertyName defined.
|
||||
enabled = false;
|
||||
}
|
||||
return enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -129,8 +167,13 @@ public class ReactiveForwarding {
|
||||
InboundPacket pkt = context.inPacket();
|
||||
Ethernet ethPkt = pkt.parsed();
|
||||
|
||||
// Bail if this is deemed to be a control or IPv6 multicast packet.
|
||||
if (isControlPacket(ethPkt) || isIpv6Multicast(ethPkt)) {
|
||||
// Bail if this is deemed to be a control packet.
|
||||
if (isControlPacket(ethPkt)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Skip IPv6 multicast packet when IPv6 forward is disabled.
|
||||
if (!ipv6Forwarding && isIpv6Multicast(ethPkt)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
15
tools/package/etc/org.onosproject.fwd.ReactiveForwarding.cfg
Normal file
15
tools/package/etc/org.onosproject.fwd.ReactiveForwarding.cfg
Normal file
@ -0,0 +1,15 @@
|
||||
#
|
||||
# Sample configuration for onos-app-fwd.
|
||||
# This configuration file would be placed at: $(KARAF_ROOT)/etc.
|
||||
#
|
||||
|
||||
#
|
||||
# Enable packet-out only forwarding.
|
||||
# This flag affects to both IPv4 and IPv6.
|
||||
#
|
||||
# packetOutOnly = true
|
||||
|
||||
#
|
||||
# Enable IPv6 forwarding.
|
||||
#
|
||||
# ipv6Forwarding = true
|
Loading…
x
Reference in New Issue
Block a user