mirror of
https://github.com/opennetworkinglab/onos.git
synced 2026-05-05 12:16:13 +02:00
OpenFlow message processing for new loxi
Depends-On: Id69c8597eb4564653c56cdc90f2dcec50afbdd25 Change-Id: Ib14fbadd3debf98ce1d56343179f8e7929f8ade8
This commit is contained in:
parent
239f09e2f9
commit
e9b7a02ff9
@ -34,9 +34,19 @@ public interface FlowRule {
|
||||
* Used to check reason parameter in flows.
|
||||
*/
|
||||
enum FlowRemoveReason {
|
||||
NO_REASON,
|
||||
IDLE_TIMEOUT,
|
||||
HARD_TIMEOUT;
|
||||
HARD_TIMEOUT,
|
||||
DELETE,
|
||||
GROUP_DELETE,
|
||||
METER_DELETE,
|
||||
EVICTION,
|
||||
NO_REASON;
|
||||
|
||||
/**
|
||||
* Covert short to enum.
|
||||
* @return reason in enum
|
||||
* @param reason remove reason in integer
|
||||
*/
|
||||
public static FlowRemoveReason parseShort(short reason) {
|
||||
switch (reason) {
|
||||
case -1 :
|
||||
@ -45,6 +55,14 @@ public interface FlowRule {
|
||||
return IDLE_TIMEOUT;
|
||||
case 1:
|
||||
return HARD_TIMEOUT;
|
||||
case 2 :
|
||||
return DELETE;
|
||||
case 3:
|
||||
return GROUP_DELETE;
|
||||
case 4:
|
||||
return METER_DELETE;
|
||||
case 5:
|
||||
return EVICTION;
|
||||
default :
|
||||
return NO_REASON;
|
||||
}
|
||||
|
||||
@ -249,7 +249,8 @@ public final class KryoNamespaces {
|
||||
.register(new ImmutableListSerializer(),
|
||||
ImmutableList.class,
|
||||
ImmutableList.of(1).getClass(),
|
||||
ImmutableList.of(1, 2).getClass())
|
||||
ImmutableList.of(1, 2).getClass(),
|
||||
ImmutableList.of(1, 2, 3).subList(1, 3).getClass())
|
||||
.register(new ImmutableSetSerializer(),
|
||||
ImmutableSet.class,
|
||||
ImmutableSet.of().getClass(),
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
<feature>onos-api</feature>
|
||||
<bundle>mvn:${project.groupId}/${project.artifactId}/${project.version}</bundle>
|
||||
|
||||
<bundle>mvn:org.onosproject/openflowj/0.9.7.onos</bundle>
|
||||
<bundle>mvn:org.onosproject/openflowj/3.2.0.onos</bundle>
|
||||
<bundle>mvn:${project.groupId}/onos-of-api/${project.version}</bundle>
|
||||
|
||||
</feature>
|
||||
|
||||
@ -61,7 +61,6 @@
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
<version>19.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.onosproject</groupId>
|
||||
|
||||
@ -20,8 +20,8 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.jboss.netty.buffer.ChannelBuffer;
|
||||
import org.jboss.netty.buffer.ChannelBuffers;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import org.onosproject.drivers.optical.OpticalAdjacencyLinkService;
|
||||
import org.onosproject.net.ConnectPoint;
|
||||
import org.onosproject.net.Annotations;
|
||||
@ -203,7 +203,7 @@ public class OplinkHandshakerUtil {
|
||||
// |---------------------------------------------------------------------------|
|
||||
// | Header (2 bytes) | ID (4 BITS) | MAC (6 bytes) | Port (4 bytes) | Unused |
|
||||
// |---------------------------------------------------------------------------|
|
||||
ChannelBuffer buffer = ChannelBuffers.buffer(OPSPEC_BYTES);
|
||||
ByteBuf buffer = Unpooled.buffer(OPSPEC_BYTES);
|
||||
otn.getOpspec().write32Bytes(buffer);
|
||||
long mac = buffer.getLong(OPSPEC_MAC_POS) << OPSPEC_ID_BITS >>> OPSPEC_MAC_BIT_OFF;
|
||||
int port = (int) (buffer.getLong(OPSPEC_PORT_POS) << OPSPEC_ID_BITS >>> OPSPEC_PORT_BIT_OFF);
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
<bundle>mvn:commons-lang/commons-lang/2.6</bundle>
|
||||
<bundle>mvn:org.apache.commons/commons-lang3/3.5</bundle>
|
||||
<bundle>mvn:commons-configuration/commons-configuration/1.10</bundle>
|
||||
<bundle>mvn:com.google.guava/guava/19.0</bundle>
|
||||
<bundle>mvn:com.google.guava/guava/20.0</bundle>
|
||||
<bundle>mvn:io.netty/netty/3.10.5.Final</bundle>
|
||||
<bundle>mvn:io.netty/netty-common/4.1.5.Final</bundle>
|
||||
<bundle>mvn:io.netty/netty-buffer/4.1.5.Final</bundle>
|
||||
|
||||
28
lib/BUCK
28
lib/BUCK
@ -1,4 +1,4 @@
|
||||
# ***** This file was auto-generated at Mon, 15 May 2017 21:06:23 GMT. Do not edit this file manually. *****
|
||||
# ***** This file was auto-generated at Thu, 18 May 2017 21:45:37 GMT. Do not edit this file manually. *****
|
||||
# ***** Use onos-lib-gen *****
|
||||
|
||||
pass_thru_pom(
|
||||
@ -23,6 +23,7 @@ osgi_feature_group(
|
||||
':objenesis',
|
||||
':guava',
|
||||
':netty',
|
||||
':netty-buffer',
|
||||
':netty-common',
|
||||
':minimal-json',
|
||||
':kryo',
|
||||
@ -311,19 +312,19 @@ remote_jar (
|
||||
|
||||
remote_jar (
|
||||
name = 'guava',
|
||||
out = 'guava-19.0.jar',
|
||||
url = 'mvn:com.google.guava:guava:jar:19.0',
|
||||
sha1 = '6ce200f6b23222af3d8abb6b6459e6c44f4bb0e9',
|
||||
maven_coords = 'com.google.guava:guava:19.0',
|
||||
out = 'guava-20.0.jar',
|
||||
url = 'mvn:com.google.guava:guava:jar:20.0',
|
||||
sha1 = '89507701249388e1ed5ddcf8c41f4ce1be7831ef',
|
||||
maven_coords = 'com.google.guava:guava:20.0',
|
||||
visibility = [ 'PUBLIC' ],
|
||||
)
|
||||
|
||||
remote_jar (
|
||||
name = 'guava-testlib',
|
||||
out = 'guava-testlib-19.0.jar',
|
||||
url = 'mvn:com.google.guava:guava-testlib:jar:19.0',
|
||||
sha1 = 'ce5b880b206de3f76d364988a6308c68c726f74a',
|
||||
maven_coords = 'com.google.guava:guava-testlib:jar:NON-OSGI:19.0',
|
||||
out = 'guava-testlib-20.0.jar',
|
||||
url = 'mvn:com.google.guava:guava-testlib:jar:20.0',
|
||||
sha1 = 'e3666edd0d7b10ddfa5242b998efd831e4b264ff',
|
||||
maven_coords = 'com.google.guava:guava-testlib:jar:NON-OSGI:20.0',
|
||||
visibility = [ 'PUBLIC' ],
|
||||
)
|
||||
|
||||
@ -860,10 +861,10 @@ remote_jar (
|
||||
|
||||
remote_jar (
|
||||
name = 'openflowj',
|
||||
out = 'openflowj-0.9.8.onos.jar',
|
||||
url = 'mvn:org.onosproject:openflowj:jar:0.9.8.onos',
|
||||
sha1 = '4dc85deb24584eee18ef103d10a01c20d2f657bc',
|
||||
maven_coords = 'org.onosproject:openflowj:0.9.8.onos',
|
||||
out = 'openflowj-3.2.0.onos.jar',
|
||||
url = 'mvn:org.onosproject:openflowj:jar:3.2.0.onos',
|
||||
sha1 = 'b890ecb2901912b9c7ededd1d1028fea73aa5db4',
|
||||
maven_coords = 'org.onosproject:openflowj:3.2.0.onos',
|
||||
visibility = [ 'PUBLIC' ],
|
||||
)
|
||||
|
||||
@ -1278,4 +1279,3 @@ remote_jar (
|
||||
maven_coords = 'org.apache.sshd:sshd-core:1.4.0',
|
||||
visibility = [ 'PUBLIC' ],
|
||||
)
|
||||
|
||||
|
||||
@ -12,6 +12,7 @@
|
||||
"objenesis",
|
||||
"guava",
|
||||
"netty",
|
||||
"netty-buffer",
|
||||
"netty-common",
|
||||
"minimal-json",
|
||||
"kryo",
|
||||
@ -111,8 +112,8 @@
|
||||
"ganymed-ssh2": "mvn:ch.ethz.ganymed:ganymed-ssh2:262",
|
||||
"gmetric4j": "mvn:info.ganglia.gmetric4j:gmetric4j:1.0.10",
|
||||
"gson": "mvn:com.google.code.gson:gson:jar:2.6.2",
|
||||
"guava": "mvn:com.google.guava:guava:19.0",
|
||||
"guava-testlib": "mvn:com.google.guava:guava-testlib:19.0",
|
||||
"guava": "mvn:com.google.guava:guava:20.0",
|
||||
"guava-testlib": "mvn:com.google.guava:guava-testlib:20.0",
|
||||
"hamcrest-all": "mvn:org.hamcrest:hamcrest-all:1.3",
|
||||
"hk2-api": "mvn:org.glassfish.hk2:hk2-api:2.5.0-b32",
|
||||
"hk2-locator": "mvn:org.glassfish.hk2:hk2-locator:2.5.0-b32",
|
||||
@ -172,7 +173,7 @@
|
||||
"catalyst-netty": "mvn:io.atomix.catalyst:catalyst-netty:1.2.1",
|
||||
"catalyst-transport": "mvn:io.atomix.catalyst:catalyst-transport:1.2.1",
|
||||
"objenesis": "mvn:org.objenesis:objenesis:2.2",
|
||||
"openflowj": "mvn:org.onosproject:openflowj:0.9.8.onos",
|
||||
"openflowj": "mvn:org.onosproject:openflowj:3.2.0.onos",
|
||||
"org.apache.felix.scr": "mvn:org.apache.felix:org.apache.felix.scr:1.8.2",
|
||||
"org.apache.felix.scr.annotations": "mvn:org.apache.felix:org.apache.felix.scr.annotations:1.9.12",
|
||||
"org.apache.karaf.features.core": "mvn:org.apache.karaf.features:org.apache.karaf.features.core:3.0.8",
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<onos-build-conf.version>1.11.0-SNAPSHOT</onos-build-conf.version>
|
||||
<netty4.version>4.1.5.Final</netty4.version>
|
||||
<openflowj.version>0.9.8.onos</openflowj.version>
|
||||
<openflowj.version>3.2.0.onos-SNAPSHOT</openflowj.version>
|
||||
<onos-maven-plugin.version>1.10</onos-maven-plugin.version>
|
||||
<osgi.version>5.0.0</osgi.version>
|
||||
<karaf.version>3.0.8</karaf.version>
|
||||
@ -46,7 +46,7 @@
|
||||
<jetty.version>9.2.21.v20170120</jetty.version>
|
||||
<jackson.version>2.8.6</jackson.version>
|
||||
<slf4j.version>1.7.21</slf4j.version>
|
||||
<guava.version>19.0</guava.version>
|
||||
<guava.version>20.0</guava.version>
|
||||
<commons.io.version>2.4</commons.io.version>
|
||||
<!-- TODO argLine was originally added maven-surfire-plugin configuration
|
||||
to fix locale errors for non-US developers. However, it breaks
|
||||
|
||||
@ -15,12 +15,15 @@
|
||||
*/
|
||||
package org.onosproject.openflow.controller;
|
||||
|
||||
import org.jboss.netty.buffer.ChannelBuffer;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import org.projectfloodlight.openflow.protocol.OFMessage;
|
||||
import org.projectfloodlight.openflow.protocol.OFType;
|
||||
import org.projectfloodlight.openflow.protocol.OFVersion;
|
||||
|
||||
import com.google.common.hash.PrimitiveSink;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* Used to support for the third party privacy flow rule.
|
||||
* it implements OFMessage interface to use exist adapter API.
|
||||
@ -61,10 +64,20 @@ public class ThirdPartyMessage implements OFMessage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeTo(ChannelBuffer channelBuffer) {
|
||||
public void writeTo(ByteBuf byteBuf) {
|
||||
// Do nothing here for now.
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equalsIgnoreXid(Object obj) {
|
||||
return Arrays.equals(payLoad, ((ThirdPartyMessage) obj).payLoad());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCodeIgnoreXid() {
|
||||
return payLoad.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder createBuilder() {
|
||||
// Do nothing here for now.
|
||||
|
||||
@ -17,6 +17,8 @@
|
||||
package org.onosproject.openflow.controller.impl;
|
||||
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import org.jboss.netty.buffer.ChannelBuffer;
|
||||
import org.jboss.netty.channel.Channel;
|
||||
import org.jboss.netty.channel.ChannelHandlerContext;
|
||||
@ -47,7 +49,15 @@ public class OFMessageDecoder extends FrameDecoder {
|
||||
// a list of the parsed messages to the controller.
|
||||
// The performance *may or may not* not be as good as before.
|
||||
OFMessageReader<OFMessage> reader = OFFactories.getGenericReader();
|
||||
OFMessage message = reader.readFrom(buffer);
|
||||
|
||||
//toByteBuffer is optimized to avoid copying.
|
||||
ByteBuf byteBuf = Unpooled.wrappedBuffer(buffer.toByteBuffer());
|
||||
OFMessage message = reader.readFrom(byteBuf);
|
||||
|
||||
if (message != null) {
|
||||
//set buffer's read index, as it has not been changed.
|
||||
buffer.readerIndex(buffer.readerIndex() + byteBuf.readerIndex());
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
|
||||
@ -18,6 +18,8 @@ package org.onosproject.openflow.controller.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import org.jboss.netty.buffer.ChannelBuffer;
|
||||
import org.jboss.netty.buffer.ChannelBuffers;
|
||||
import org.jboss.netty.channel.Channel;
|
||||
@ -46,13 +48,16 @@ public class OFMessageEncoder extends OneToOneEncoder {
|
||||
size += ofm.getLengthU();
|
||||
}*/
|
||||
|
||||
ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
|
||||
ByteBuf bb = Unpooled.buffer();
|
||||
|
||||
for (OFMessage ofm : msglist) {
|
||||
if (ofm != null) {
|
||||
ofm.writeTo(buf);
|
||||
ofm.writeTo(bb);
|
||||
}
|
||||
}
|
||||
|
||||
ChannelBuffer buf = ChannelBuffers.wrappedBuffer(bb.nioBuffer());
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ package org.onosproject.openflow;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import org.jboss.netty.buffer.ChannelBuffer;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import org.projectfloodlight.openflow.protocol.OFDescStatsReply;
|
||||
import org.projectfloodlight.openflow.protocol.OFStatsReplyFlags;
|
||||
import org.projectfloodlight.openflow.protocol.OFStatsType;
|
||||
@ -81,10 +81,22 @@ public class OFDescStatsReplyAdapter implements OFDescStatsReply {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeTo(ChannelBuffer channelBuffer) {
|
||||
public void writeTo(ByteBuf byteBuf) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equalsIgnoreXid(Object obj) {
|
||||
// Do nothing here for now
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCodeIgnoreXid() {
|
||||
// Do nothing here for now
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder createBuilder() {
|
||||
return null;
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
*/
|
||||
package org.onosproject.openflow;
|
||||
|
||||
import org.jboss.netty.buffer.ChannelBuffer;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import org.projectfloodlight.openflow.protocol.OFMessage;
|
||||
import org.projectfloodlight.openflow.protocol.OFType;
|
||||
import org.projectfloodlight.openflow.protocol.OFVersion;
|
||||
@ -50,7 +50,19 @@ public class OfMessageAdapter implements OFMessage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeTo(ChannelBuffer channelBuffer) { }
|
||||
public void writeTo(ByteBuf byteBuf) { }
|
||||
|
||||
@Override
|
||||
public boolean equalsIgnoreXid(Object obj) {
|
||||
// Do nothing here for now
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCodeIgnoreXid() {
|
||||
// Do nothing here for now
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder createBuilder() {
|
||||
|
||||
@ -18,6 +18,7 @@ package org.onosproject.openflow.controller.impl;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import org.jboss.netty.buffer.ChannelBuffer;
|
||||
import org.junit.Test;
|
||||
import org.onosproject.openflow.OfMessageAdapter;
|
||||
@ -45,9 +46,9 @@ public class OFMessageEncoderTest {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeTo(ChannelBuffer channelBuffer) {
|
||||
public void writeTo(ByteBuf byteBuf) {
|
||||
String message = "message" + Integer.toString(id) + " ";
|
||||
channelBuffer.writeBytes(message.getBytes(StandardCharsets.UTF_8));
|
||||
byteBuf.writeBytes(message.getBytes(StandardCharsets.UTF_8));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
<feature name="${project.artifactId}" version="${project.version}"
|
||||
description="${project.description}">
|
||||
<feature>onos-api</feature>
|
||||
<bundle>mvn:org.onosproject/openflowj/0.9.7.onos</bundle>
|
||||
<bundle>mvn:org.onosproject/openflowj/3.2.0.onos</bundle>
|
||||
<bundle>mvn:${project.groupId}/onos-of-api/${project.version}</bundle>
|
||||
<bundle>mvn:${project.groupId}/onos-of-ctl/${project.version}</bundle>
|
||||
|
||||
|
||||
@ -110,6 +110,7 @@ import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Dictionary;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
@ -364,12 +365,14 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr
|
||||
OFPortMod.Builder pmb = sw.factory().buildPortMod();
|
||||
OFPort port = OFPort.of((int) portNumber.toLong());
|
||||
pmb.setPortNo(port);
|
||||
if (enable) {
|
||||
pmb.setConfig(0x0); // port_down bit 0
|
||||
} else {
|
||||
pmb.setConfig(0x1); // port_down bit 1
|
||||
Set<OFPortConfig> portConfig = EnumSet.noneOf(OFPortConfig.class);
|
||||
if (!enable) {
|
||||
portConfig.add(OFPortConfig.PORT_DOWN);
|
||||
}
|
||||
pmb.setMask(0x1);
|
||||
pmb.setConfig(portConfig);
|
||||
Set<OFPortConfig> portMask = EnumSet.noneOf(OFPortConfig.class);
|
||||
portMask.add(OFPortConfig.PORT_DOWN);
|
||||
pmb.setMask(portMask);
|
||||
pmb.setAdvertise(0x0);
|
||||
for (OFPortDesc pd : sw.getPorts()) {
|
||||
if (pd.getPortNo().equals(port)) {
|
||||
|
||||
@ -208,7 +208,7 @@ public class FlowEntryBuilder {
|
||||
.withPriority(removed.getPriority())
|
||||
.withIdleTimeout(removed.getIdleTimeout())
|
||||
.withCookie(removed.getCookie().getValue())
|
||||
.withReason(FlowRule.FlowRemoveReason.parseShort(removed.getReason()));
|
||||
.withReason(FlowRule.FlowRemoveReason.parseShort((short) removed.getReason().ordinal()));
|
||||
|
||||
if (removed.getVersion() != OFVersion.OF_10) {
|
||||
builder.forTable(removed.getTableId().getValue());
|
||||
|
||||
@ -28,8 +28,10 @@ import org.projectfloodlight.openflow.protocol.meterband.OFMeterBandDscpRemark;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
@ -82,37 +84,36 @@ public final class MeterModBuilder {
|
||||
public OFMeterMod add() {
|
||||
validate();
|
||||
OFMeterMod.Builder builder = builderMeterMod();
|
||||
builder.setCommand(OFMeterModCommand.ADD.ordinal());
|
||||
builder.setCommand(OFMeterModCommand.ADD);
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
public OFMeterMod remove() {
|
||||
validate();
|
||||
OFMeterMod.Builder builder = builderMeterMod();
|
||||
builder.setCommand(OFMeterModCommand.DELETE.ordinal());
|
||||
builder.setCommand(OFMeterModCommand.DELETE);
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
public OFMeterMod modify() {
|
||||
validate();
|
||||
OFMeterMod.Builder builder = builderMeterMod();
|
||||
builder.setCommand(OFMeterModCommand.MODIFY.ordinal());
|
||||
builder.setCommand(OFMeterModCommand.MODIFY);
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
private OFMeterMod.Builder builderMeterMod() {
|
||||
OFMeterMod.Builder builder = factory.buildMeterMod();
|
||||
int flags = 0;
|
||||
Set<OFMeterFlags> flags = EnumSet.noneOf(OFMeterFlags.class);
|
||||
if (burst) {
|
||||
// covering loxi short comings.
|
||||
flags |= 1 << OFMeterFlags.BURST.ordinal();
|
||||
flags.add(OFMeterFlags.BURST);
|
||||
}
|
||||
switch (unit) {
|
||||
case PKTS_PER_SEC:
|
||||
flags |= 1 << OFMeterFlags.PKTPS.ordinal();
|
||||
flags.add(OFMeterFlags.PKTPS);
|
||||
break;
|
||||
case KB_PER_SEC:
|
||||
flags |= 1 << OFMeterFlags.KBPS.ordinal();
|
||||
flags.add(OFMeterFlags.KBPS);
|
||||
break;
|
||||
default:
|
||||
log.warn("Unknown unit type {}", unit);
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
<version>19.0</version>
|
||||
<version>20.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user