+ private void addRemoteFlow(long dpId, String ifName) {
+
+ long portNo = interfaceManager.getPortForInterface(ifName);
+ String flowRef = getTunnelInterfaceFlowRef(dpId, LPORT_INGRESS_TABLE, portNo);
+
+ String flowName = ifName;
+ BigInteger COOKIE_VM_INGRESS_TABLE = new BigInteger("8000001", 16);
+
+ int priority = DEFAULT_FLOW_PRIORITY;
+ short gotoTableId = LFIB_TABLE;
+
+ List<InstructionInfo> mkInstructions = new ArrayList<InstructionInfo>();
+ mkInstructions.add(new InstructionInfo(InstructionType.goto_table, new long[] { gotoTableId }));
+
+ List<MatchInfo> matches = new ArrayList<MatchInfo>();
+ matches.add(new MatchInfo(MatchFieldType.in_port, new long[] {
+ dpId, portNo }));
+
+ FlowEntity flowEntity = MDSALUtil.buildFlowEntity(dpId, LPORT_INGRESS_TABLE, flowRef,
+ priority, flowName, 0, 0, COOKIE_VM_INGRESS_TABLE, matches, mkInstructions);
+
+ mdsalManager.installFlow(flowEntity);
+ }
+
+ private String getTunnelInterfaceFlowRef(long dpId, short tableId, long portNo) {
+ return new StringBuilder().append(dpId).append(tableId).append(portNo).toString();
+ }
+