// createDlSrcInstructions(InstructionBuilder ib, MacAddress macAddress) { // public static InstructionsBuilder create_DlSrc_NwSrc_Instructions(MacAddress macAddress, // Ipv4Prefix prefixSrc) { public static InstructionsBuilder create_DlSrc_NwSrc_outputPort_Instructions( MacAddress macAddress, Ipv4Prefix prefixSrc, String outputPort) { // ActionList List<Action> actionList = Lists.newArrayList(); // Action 1 ActionBuilder ab = new ActionBuilder(); SetDlSrcActionBuilder dlSrcActionBuilder = new SetDlSrcActionBuilder(); dlSrcActionBuilder.setAddress(macAddress); ab.setAction( new SetDlSrcActionCaseBuilder().setSetDlSrcAction(dlSrcActionBuilder.build()).build()); ab.setOrder(0); ab.setKey(new ActionKey(0)); // Action 2 ActionBuilder ab2 = new ActionBuilder(); SetNwSrcActionBuilder setNwsrcActionBuilder = new SetNwSrcActionBuilder(); Ipv4Builder ipsrc = new Ipv4Builder(); ipsrc.setIpv4Address(prefixSrc); setNwsrcActionBuilder.setAddress(ipsrc.build()); ab2.setAction( new SetNwSrcActionCaseBuilder().setSetNwSrcAction(setNwsrcActionBuilder.build()).build()); ab2.setOrder(1); ab2.setKey(new ActionKey(1)); // - have to make nodeconnectionid store table // Action 3 ActionBuilder ab3 = new ActionBuilder(); OutputActionBuilder outputActionBuilder = new OutputActionBuilder(); if (outputPort.equals("4294967291")) { outputActionBuilder.setOutputNodeConnector(new Uri("FLOOD")); } else { outputActionBuilder.setOutputNodeConnector(new Uri("output:" + outputPort)); } ab3.setAction( new OutputActionCaseBuilder().setOutputAction(outputActionBuilder.build()).build()); ab3.setOrder(2); ab3.setKey(new ActionKey(2)); actionList.add(ab.build()); actionList.add(ab2.build()); actionList.add(ab3.build()); // Action End // Create an Apply Action ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); ib.setOrder(0); ib.setKey(new InstructionKey(0)); // Put our Instruction in a list of Instructions InstructionsBuilder isb = new InstructionsBuilder(); List<Instruction> instructions = new ArrayList<Instruction>(); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; }
public static InstructionsBuilder create_DlSrc_NwSrc_Controller_Instructions( MacAddress macAddress, Ipv4Prefix prefixSrc) { // ActionList List<Action> actionList = Lists.newArrayList(); // Action 1 ActionBuilder ab = new ActionBuilder(); SetDlSrcActionBuilder dlSrcActionBuilder = new SetDlSrcActionBuilder(); dlSrcActionBuilder.setAddress(macAddress); ab.setAction( new SetDlSrcActionCaseBuilder().setSetDlSrcAction(dlSrcActionBuilder.build()).build()); ab.setOrder(0); ab.setKey(new ActionKey(0)); // Action 2 ActionBuilder ab2 = new ActionBuilder(); SetNwSrcActionBuilder setNwsrcActionBuilder = new SetNwSrcActionBuilder(); Ipv4Builder ipsrc = new Ipv4Builder(); ipsrc.setIpv4Address(prefixSrc); setNwsrcActionBuilder.setAddress(ipsrc.build()); ab2.setAction( new SetNwSrcActionCaseBuilder().setSetNwSrcAction(setNwsrcActionBuilder.build()).build()); ab2.setOrder(1); ab2.setKey(new ActionKey(1)); // Action 3 ActionBuilder ab3 = new ActionBuilder(); OutputActionBuilder oab = new OutputActionBuilder(); oab.setMaxLength(65535); Uri value = new Uri("CONTROLLER"); oab.setOutputNodeConnector(value); ab3.setAction(new OutputActionCaseBuilder().setOutputAction(oab.build()).build()); ab3.setOrder(2); ab3.setKey(new ActionKey(2)); actionList.add(ab.build()); actionList.add(ab2.build()); actionList.add(ab3.build()); // Action End // Create an Apply Action ApplyActionsBuilder aab = new ApplyActionsBuilder(); aab.setAction(actionList); // Wrap our Apply Action in an Instruction InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); ib.setOrder(0); ib.setKey(new InstructionKey(0)); // Put our Instruction in a list of Instructions InstructionsBuilder isb = new InstructionsBuilder(); List<Instruction> instructions = new ArrayList<Instruction>(); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; }