/** * Create an OFAction to change the outer most vlan. * * @param sw switch object * @param newVlan final VLAN to be set on the packet * @return {@link OFAction} */ private OFAction actionReplaceVlan(final IOFSwitch sw, final int newVlan) { OFFactory factory = sw.getOFFactory(); OFOxms oxms = factory.oxms(); OFActions actions = factory.actions(); if (OF_12.compareTo(factory.getVersion()) == 0) { return actions.buildSetField().setField(oxms.buildVlanVid() .setValue(OFVlanVidMatch.ofRawVid((short) newVlan)) .build()).build(); } else { return actions.buildSetField().setField(oxms.buildVlanVid() .setValue(OFVlanVidMatch.ofVlan(newVlan)) .build()).build(); } }
private OFMatchV3 buildOFMatchV3() { OFFactory of13Factory = OFFactories.getFactory(OFVersion.OF_13); OFOxms oxms = of13Factory.oxms(); OFOxmEthType ofOxmEthType = oxms.buildEthType().setValue(EthType.IPv4).build(); OFOxmIpv4Src ofOxmIpv4Src = oxms.buildIpv4Src().setValue(IPv4Address.of(multicastGroup.sourceIP)).build(); OFOxmIpProto ofOxmIpProto = oxms.buildIpProto().setValue(IpProtocol.UDP).build(); OFOxmIpv4Dst ofOxmIpv4Dst = oxms.buildIpv4Dst().setValue(IPv4Address.of(multicastGroup.groupIP)).build(); OFOxmList oxmList = OFOxmList.of(ofOxmEthType, ofOxmIpv4Src, ofOxmIpv4Dst, ofOxmIpProto); OFMatchV3 of13Match = of13Factory.buildMatchV3().setOxmList(oxmList).build(); return of13Match; }
/** * Create an action to set the DstMac of a packet * * @param sw switch object * @param macAddress MacAddress to set * @return {@link OFAction} */ private OFAction actionSetDstMac(final IOFSwitch sw, final MacAddress macAddress) { OFOxms oxms = sw.getOFFactory().oxms(); OFActions actions = sw.getOFFactory().actions(); return actions.buildSetField() .setField(oxms.buildEthDst().setValue(macAddress).build()).build(); }