X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fsal%2Fapi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Faction%2FPushVlan.java;fp=opendaylight%2Fsal%2Fapi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Faction%2FPushVlan.java;h=0000000000000000000000000000000000000000;hp=a1b50edd5116fcc8a451d86ae2dff61d5f2b643e;hb=42c32160bfd41de57189bb246fec5ffb48ed8e9e;hpb=edf5bfcee83c750853253ccfd991ba7000f5f65b diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/PushVlan.java b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/PushVlan.java deleted file mode 100644 index a1b50edd51..0000000000 --- a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/PushVlan.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright (c) 2013-2014 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.controller.sal.action; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -import org.opendaylight.controller.sal.utils.EtherTypes; - -/** - * Insert a 802.1q (outermost) header action Execute it multiple times to - * achieve QinQ - * - * 802.1q = [TPID(16) + TCI(16)] TCI = [PCP(3) + CFI(1) + VID(12)] - */ -@XmlRootElement -@XmlAccessorType(XmlAccessType.NONE) -public class PushVlan extends Action { - private static final long serialVersionUID = 1L; - private int tag; // TPID - 16 bits - private int pcp; // PCP - 3 bits - private int cfi; // CFI - 1 bit (drop eligible) - private int vlanId; // VID - 12 bits - private transient int tci; // TCI = [PCP + CFI + VID] - 16 bits - private transient int header; // full 802.1q header [TPID + TCI] - 32 bits - - /* Dummy constructor for JAXB */ - @SuppressWarnings("unused") - private PushVlan() { - } - - public PushVlan(int tag, int pcp, int cfi, int vlanId) { - type = ActionType.PUSH_VLAN; - this.tag = tag; - this.cfi = cfi; - this.pcp = pcp; - this.vlanId = vlanId; - this.tci = createTci(); - this.header = createHeader(); - runChecks(); - } - - public PushVlan(EtherTypes tag, int pcp, int cfi, int vlanId) { - type = ActionType.PUSH_VLAN; - this.tag = tag.intValue(); - this.cfi = cfi; - this.pcp = pcp; - this.vlanId = vlanId; - this.tci = createTci(); - this.header = createHeader(); - runChecks(); - } - - /** - * Construct a new action instance which represents OF 1.3 PUSH_VLAN. - * - * @param tag An {@link EtherTypes} instance. - */ - public PushVlan(EtherTypes tag) { - this(tag.intValue()); - } - - /** - * Construct a new action instance which represents OF 1.3 PUSH_VLAN. - * - * @param tag An ethernet type of a new VLAN tag. - */ - public PushVlan(int tag) { - type = ActionType.PUSH_VLAN; - this.tag = tag; - - if (tag != EtherTypes.VLANTAGGED.intValue() && - tag != EtherTypes.QINQ.intValue()) { - // pass a value which will tell fail and tell something about the - // original wrong value - checkValue(ActionType.SET_DL_TYPE, 0xBAD << 16 | tag); - } - } - - private int createTci() { - return (pcp & 0x7) << 13 | (cfi & 0x1) << 12 | (vlanId & 0xfff); - } - - private int createHeader() { - return (tag & 0xffff) << 16 | (pcp & 0x7) << 13 | (cfi & 0x1) << 12 | (vlanId & 0xfff); - } - - private void runChecks() { - checkValue(ActionType.SET_DL_TYPE, tag); - checkValue(ActionType.SET_VLAN_PCP, pcp); - checkValue(ActionType.SET_VLAN_CFI, cfi); - checkValue(ActionType.SET_VLAN_ID, vlanId); - checkValue(tci); - - // Run action specific check which cannot be run by parent - if (tag != EtherTypes.VLANTAGGED.intValue() && tag != EtherTypes.QINQ.intValue() - && tag != EtherTypes.OLDQINQ.intValue() && tag != EtherTypes.CISCOQINQ.intValue()) { - // pass a value which will tell fail and tell something about the - // original wrong value - checkValue(ActionType.SET_DL_TYPE, 0xBAD << 16 | tag); - } - } - - /** - * Returns the VID portion of the 802.1q header this action will insert VID - * - (12 bits) - * - * @return byte[] - */ - public int getVlanId() { - return vlanId; - } - - /** - * Returns the CFI portion of the 802.1q header this action will insert CFI - * - (1 bit) - * - * @return - */ - public int getCfi() { - return cfi; - } - - /** - * Returns the vlan PCP portion of the 802.1q header this action will insert - * PCP - (3 bits) - * - * @return byte[] - */ - public int getPcp() { - return pcp; - } - - /** - * Returns the TPID portion of the 802.1q header this action will insert - * TPID - (16 bits) - */ - public int getTag() { - return tag; - } - - /** - * Returns the TCI portion of the 802.1q header this action will insert TCI - * = [PCP + CFI + VID] - (16 bits) - * - * @return - */ - public int getTci() { - return tci; - } - - /** - * Returns the full 802.1q header this action will insert header = [TPID + - * TIC] (32 bits) - * - * @return int - */ - @XmlElement(name = "VlanHeader") - public int getHeader() { - return header; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!super.equals(obj)) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - PushVlan other = (PushVlan) obj; - if (cfi != other.cfi) { - return false; - } - if (pcp != other.pcp) { - return false; - } - if (tag != other.tag) { - return false; - } - if (vlanId != other.vlanId) { - return false; - } - return true; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + cfi; - result = prime * result + pcp; - result = prime * result + tag; - result = prime * result + vlanId; - return result; - } - - @Override - public String toString() { - return type + "[tag = " + tag + ", pcp = " + pcp + ", cfi = " + cfi + ", vlanId = " + vlanId + "]"; - } - -}