- flow cookie [64b] is present at receivedPacket (to distinguish responsible flow)
- connection cookie [32b] is present at receivedPacket and is expected
to be copied into corresponding transmitPacketInput (to distinguish auxiliary connection)
- offtopic: felix generated META-INF moved to target (drop-test, test-provider)
- hotfix - InstanceIdentifier API changes adaptation
requires controller change: https://git.opendaylight.org/gerrit/#/c/6259/
Change-Id: I76d30ba6ba16bf6ac57977288ee30ab059c12659
Signed-off-by: Michal Rehak <mirehak@cisco.com>
<Embed-Dependency>commons-lang</Embed-Dependency>
<Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
</instructions>
- <manifestLocation>${project.basedir}/META-INF</manifestLocation>
</configuration>
</plugin>
</plugins>
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
fb.setPriority(4);
fb.setBufferId(0L);
final BigInteger value = new BigInteger("10", 10);
- fb.setCookie(value);
- fb.setCookieMask(value);
+ fb.setCookie(new FlowCookie(value));
+ fb.setCookieMask(new FlowCookie(value));
fb.setTableId(Short.valueOf(((short) 0)));
fb.setHardTimeout(300);
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
fb.setPriority(4);
fb.setBufferId(0L);
final BigInteger value = new BigInteger("10", 10);
- fb.setCookie(value);
- fb.setCookieMask(value);
+ fb.setCookie(new FlowCookie(value));
+ fb.setCookieMask(new FlowCookie(value));
fb.setTableId(Short.valueOf(((short) 0)));
fb.setHardTimeout(300);
fb.setIdleTimeout(240);
ab.setKey(new ActionKey(0));
actionList.add(ab.build());
- packet_out.setCookie(null);
+ packet_out.setConnectionCookie(null);
packet_out.setAction(actionList);
packet_out.setPayload(_primitive);
packet_out.setNode(ref);
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
tPackBuilder.setNode(ref);
// TODO VD P2 missing cookies in Test
- tPackBuilder.setCookie(null);
+ tPackBuilder.setConnectionCookie(null);
tPackBuilder.setEgress(nEgressConfRef);
tPackBuilder.setIngress(nIngressConRef);
return tPackBuilder.build();
fBuild.setBarrier(false);
// flow.setBufferId(new Long(12));
BigInteger value = new BigInteger("10", 10);
- fBuild.setCookie(value);
- fBuild.setCookieMask(value);
+ fBuild.setCookie(new FlowCookie(value));
+ fBuild.setCookieMask(new FlowCookie(value));
fBuild.setHardTimeout(0);
fBuild.setIdleTimeout(0);
fBuild.setInstallHw(false);
private FlowModInputBuilder toFlowModInputBuilder(Flow source) {
FlowModInputBuilder target = new FlowModInputBuilder();
- target.setCookie(source.getCookie());
+ target.setCookie(source.getCookie().getValue());
target.setIdleTimeout(source.getIdleTimeout());
target.setHardTimeout(source.getHardTimeout());
target.setMatch(toMatch(source.getMatch()));
mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
if (arg0.getCookie() != null)
- mprFlowRequestBuilder.setCookie(arg0.getCookie());
+ mprFlowRequestBuilder.setCookie(arg0.getCookie().getValue());
else
mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
if (arg0.getCookieMask() != null)
- mprFlowRequestBuilder.setCookieMask(arg0.getCookieMask());
+ mprFlowRequestBuilder.setCookieMask(arg0.getCookieMask().getValue());
else
mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
this.getSessionContext().getFeatures().getDatapathId());
// TODO: repeating code
if (version == OFConstants.OFP_VERSION_1_3) {
- mprAggregateRequestBuilder.setCookie(arg0.getCookie());
- mprAggregateRequestBuilder.setCookieMask(arg0.getCookieMask());
+ mprAggregateRequestBuilder.setCookie(arg0.getCookie().getValue());
+ mprAggregateRequestBuilder.setCookieMask(arg0.getCookieMask().getValue());
mprAggregateRequestBuilder.setOutGroup(arg0.getOutGroup());
}
public static FlowModInputBuilder toFlowModInput(Flow flow, short version,BigInteger datapathid) {
FlowModInputBuilder flowMod = new FlowModInputBuilder();
if (flow.getCookie() != null) {
- flowMod.setCookie(flow.getCookie());
+ flowMod.setCookie(flow.getCookie().getValue());
} else {
flowMod.setCookie(DEFAULT_COOKIE);
}
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.Counter64;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.flow.and.statistics.map.list.FlowAndStatisticsMapList;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.flow.and.statistics.map.list.FlowAndStatisticsMapListBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.duration.DurationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.flow._case.multipart.reply.flow.FlowStats;
public FlowAndStatisticsMapList toSALFlowStats(FlowStats flowStats,BigInteger datapathid){
FlowAndStatisticsMapListBuilder salFlowStatsBuilder = new FlowAndStatisticsMapListBuilder();
salFlowStatsBuilder.setByteCount(new Counter64(flowStats.getByteCount()));
- salFlowStatsBuilder.setCookie(flowStats.getCookie());
+ salFlowStatsBuilder.setCookie(new FlowCookie(flowStats.getCookie()));
DurationBuilder time = new DurationBuilder();
time.setSecond(new Counter32(flowStats.getDurationSec()));
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SwitchFlowRemovedBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.RemovedReasonFlags;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.mod.removed.Match;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.mod.removed.MatchBuilder;
SwitchFlowRemovedBuilder salFlowRemoved = new SwitchFlowRemovedBuilder();
- salFlowRemoved.setCookie(ofFlow.getCookie());
+ salFlowRemoved.setCookie(new FlowCookie(ofFlow.getCookie()));
salFlowRemoved.setPriority(ofFlow.getPriority());
if (ofFlow.getTableId() != null) {
import org.opendaylight.openflowplugin.openflow.md.core.session.SessionContext;
import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
import org.opendaylight.openflowplugin.openflow.md.util.PacketInUtil;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.Match;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.PortNumberMatchEntry;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketInMessage;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.Cookie;
import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceived;
import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceivedBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.packet.received.MatchBuilder;
// get the Cookie if it exists
if(message.getCookie() != null) {
- pktInBuilder.setCookie(new Cookie(message.getCookie().longValue()));
+ pktInBuilder.setFlowCookie(new FlowCookie(message.getCookie()));
}
+ //TODO: use either canonical mapping or suitable hash -> 32b
+ //pktInBuilder.setConnectionCookie(cookie);
// extract the port number
Long port = null;
* Get an InstanceIdentifier for the Nodes class that is the root of the
* inventory tree We use this alot, so its worth keeping around
*/
- private static InstanceIdentifier<Nodes> nodesIdentifier = InstanceIdentifier.builder().node(Nodes.class)
+ private static InstanceIdentifier<Nodes> nodesIdentifier = InstanceIdentifier.builder(Nodes.class)
.toInstance();
public static Nodes checkForNodes() {
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
Short tableId = InstanceIdentifierUtils.getTableId(tablePath);
FlowBuilder srcToDstFlow = FlowUtils.createDirectMacToMacFlow(tableId, DIRECT_FLOW_PRIORITY, srcMac,
dstMac, destNodeConnector);
- srcToDstFlow.setCookie(BigInteger.valueOf(flowCookieInc.getAndIncrement()));
+ srcToDstFlow.setCookie(new FlowCookie(BigInteger.valueOf(flowCookieInc.getAndIncrement())));
dataStoreAccessor.writeFlowToConfig(flowPath, srcToDstFlow.build());
}
<Embed-Dependency>commons-lang</Embed-Dependency>
<Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
</instructions>
- <manifestLocation>${project.basedir}/META-INF</manifestLocation>
</configuration>
</plugin>
<plugin>
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowListener;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
private static NodeRef createNodeRef(String string) {
NodeKey key = new NodeKey(new NodeId(string));
- InstanceIdentifier<Node> path = InstanceIdentifier.builder().node(Nodes.class).node(Node.class, key)
+ InstanceIdentifier<Node> path = InstanceIdentifier.builder(Nodes.class).child(Node.class, key)
.toInstance();
return new NodeRef(path);
// flow.setBufferId(new Long(12));
BigInteger value = new BigInteger("10", 10);
BigInteger outputPort = new BigInteger("4294967295", 10);
- flow.setCookie(value);
- flow.setCookieMask(value);
+ flow.setCookie(new FlowCookie(value));
+ flow.setCookieMask(new FlowCookie(value));
flow.setHardTimeout(0);
flow.setIdleTimeout(0);
flow.setInstallHw(false);
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowListener;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
private static NodeRef createNodeRef(String string) {
NodeKey key = new NodeKey(new NodeId(string));
- InstanceIdentifier<Node> path = InstanceIdentifier.builder().node(Nodes.class).node(Node.class, key)
+ InstanceIdentifier<Node> path = InstanceIdentifier.builder(Nodes.class).child(Node.class, key)
.toInstance();
return new NodeRef(path);
// flow.setBufferId(new Long(12));
BigInteger value = new BigInteger("10", 10);
BigInteger outputPort = new BigInteger("4294967295", 10);
- flow.setCookie(value);
- flow.setCookieMask(value);
+ flow.setCookie(new FlowCookie(value));
+ flow.setCookieMask(new FlowCookie(value));
flow.setHardTimeout(0);
flow.setIdleTimeout(0);
flow.setInstallHw(false);
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowListener;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
// flow.setBufferId(new Long(12));
BigInteger value = new BigInteger("10", 10);
// BigInteger outputPort = new BigInteger("65535", 10);
- flow.setCookie(value);
- flow.setCookieMask(value);
+ flow.setCookie(new FlowCookie(value));
+ flow.setCookieMask(new FlowCookie(value));
flow.setHardTimeout(0);
flow.setIdleTimeout(0);
flow.setInstallHw(false);
private static NodeRef createNodeRef(String string) {
NodeKey key = new NodeKey(new NodeId(string));
- InstanceIdentifier<Node> path = InstanceIdentifier.builder().node(Nodes.class).node(Node.class, key)
+ InstanceIdentifier<Node> path = InstanceIdentifier.builder(Nodes.class).child(Node.class, key)
.toInstance();
return new NodeRef(path);