Move adsal into its own subdirectory.
[controller.git] / opendaylight / sal / api / src / main / java / org / opendaylight / controller / sal / utils / IPProtocols.java
diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IPProtocols.java b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IPProtocols.java
deleted file mode 100644 (file)
index d3d3142..0000000
+++ /dev/null
@@ -1,303 +0,0 @@
-
-/*
- * Copyright (c) 2013 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.utils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Enum represents the most common IP protocols numbers It provides the binding
- * between IP protocol names and numbers and provides APIs to read and parse
- * them in either of the two forms
- *
- * NOTE: Openflow 1.0 supports the IP Proto match only for ICMP, TCP and UDP
- *
- * references:
- * http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml
- */
-public enum IPProtocols {
-     ANY("any", -1),
-     HOPOPT("HOPOPT",0),
-     ICMP("ICMP", 1),
-     IGMP("IGMP",2),
-     GGP("GGP",3),
-     IPV4("IPv4",4),
-     ST("ST",5),
-     TCP("TCP", 6),
-     CBT("CBT",7),
-     EGP("EGP",8),
-     IGP("IGP",9),
-     BBNRCCMON("BBN-RCC-MON",10),
-     NVPII("NVP-II",11),
-     PUP("PUP",12),
-     ARGUS("ARGUS",13),
-     EMCON("EMCON",14),
-     XNET("XNET",15),
-     CHAOS("CHAOS",16),
-     UDP("UDP", 17),
-     MUX("MUX",18),
-     DCNMEAS("DCN-MEAS",19),
-     HMP("HMP",20),
-     PRM("PRM",21),
-     XNSIDP("XNS-IDP",22),
-     TRUNK1("TRUNK-1",23),
-     TRUNK2("TRUNK-2",24),
-     LEAF1("LEAF-1",25),
-     LEAF2("LEAF-2",26),
-     RDP("RDP",27),
-     IRTP("IRTP",28),
-     ISOTP4("ISO-TP4",29),
-     NETBLT("NETBLT",30),
-     MFENSP("MFE-NSP",31),
-     MERITINP("MERIT-INP",32),
-     DCCP("DCCP",33),
-     THREEPC("3PC",34),
-     IDPR("IDPR",35),
-     XTP("XTP",36),
-     DDP("DDP",37),
-     IDPRCMTP("IDPR-CMTP",38),
-     TPPLUSPLUS("TP++",39),
-     IL("IL",40),
-     IPV6("IPv6",41),
-     SDRP("SDRP",42),
-     IPV6Route("IPv6-Route",43),
-     IPV6Frag("IPv6-Frag",44),
-     IDRP("IDRP",45),
-     RSVP("RSVP",46),
-     GRE("GRE",47),
-     DSR("DSR",48),
-     BNA("BNA",49),
-     ESP("ESP",50),
-     AH("AH",51),
-     INLSP("I-NLSP",52),
-     SWIPE("SWIPE",53),
-     NARP("NARP",54),
-     MOBILE("MOBILE",55),
-     TLSP("TLSP",56),
-     SKIP("SKIP",57),
-     IPV6ICMP("IPv6-ICMP", 58),
-     IPV6NoNxt("IPv6-NoNxt",59),
-     IPV6Opts("IPv6-Opts",60),
-     ANYHOST("ANY-HOST",61),
-     CFTP("CFTP",62),
-     ANYNETWORK("ANY-NETWORK",63),
-     SATEXPAK("SAT-EXPAK",64),
-     KRYPTOLAN("KRYPTOLAN",65),
-     RVD("RVD",66),
-     IPPC("IPPC",67),
-     ANYDISTFS("ANY-DIST-FS",68),
-     SATMON("SAT-MON",69),
-     VISA("VISA",70),
-     IPCV("IPCV",71),
-     CPNX("CPNX",72),
-     CPHB("CPHB",73),
-     WSN("WSN",74),
-     PVP("PVP",75),
-     BRSATMON("BR-SAT-MON",76),
-     SUNND("SUN-ND",77),
-     WBMON("WB-MON",78),
-     WBEXPAK("WB-EXPAK",79),
-     ISOIP("ISO-IP",80),
-     VMTP("VMTP",81),
-     SECUREVMTP("SECURE-VMTP",82),
-     VINES("VINES",83),
-     TTP("TTP",84),
-     IPTM("IPTM",84),
-     NSFNETIGP("NSFNET-IGP",85),
-     DGP("DGP",86),
-     TCF("TCF",87),
-     EIGRP("EIGRP",88),
-     OSPFIGP("OSPFIGP",89),
-     SPRITERPC("Sprite-RPC",90),
-     LARP("LARP",91),
-     MTP("MTP",92),
-     AX25("AX.25",93),
-     IPIP("IPIP",94),
-     MICP("MICP",95),
-     SCCSP("SCC-SP",96),
-     ETHERIP("ETHERIP",97),
-     ENCAP("ENCAP",98),
-     ANYENC("ANY-ENC",99),
-     GMTP("GMTP",100),
-     IFMP("IFMP",101),
-     PNNI("PNNI",102),
-     PIM("PIM",103),
-     ARIS("ARIS",104),
-     SCPS("SCPS",105),
-     QNX("QNX",106),
-     AN("A/N",107),
-     IPComp("IPComp",108),
-     SNP("SNP",109),
-     COMPAQPEER("Compaq-Peer",110),
-     IPXINIP("IPX-in-IP",111),
-     VRRP("VRRP",112),
-     PGM("PGM",113),
-     ANY0HOP("ANY-0-HOP",114),
-     L2TP("L2TP",115),
-     DDX("DDX",116),
-     IATP("IATP",117),
-     STP("STP",118),
-     SRP("SRP",119),
-     UTI("UTI",120),
-     SMP("SMP",121),
-     SM("SM",122),
-     PTP("PTP",123),
-     ISIS("ISIS",124),
-     FIRE("FIRE",125),
-     CRTP("CRTP",126),
-     CRUDP("CRUDP",127),
-     SSCOPMCE("SSCOPMCE",128),
-     IPLT("IPLT",129),
-     SPS("SPS",130),
-     PIPE("PIPE",131),
-     SCTP("SCTP",132),
-     FC("FC",133),
-     RSVPE2EIGNORE("RSVP-E2E-IGNORE",134),
-     MOBILITYHEADER("Mobility Header",135),
-     UDPLITE("UDPLite",136),
-     MPLSINIP("MPLS-in-IP",137),
-     MANET("MANET",138),
-     HIP("HIP",139),
-     SHIM6("Shim6",140),
-     WESP("WESP",141),
-     ROHC("ROHC",142),
-     /*143-252 Unassigned by IANA*/
-
-     //Experimebtal protocol numbers (http://tools.ietf.org/html/rfc3692)
-     EXP1("Experimental1", 253),
-     EXP2("Experimental2", 254),
-
-     RESERVED("RESERVED",255);
-
-    private String protocolName;
-    private int protocolNumber;
-
-    private IPProtocols(String name, int number) {
-        protocolName = name;
-        protocolNumber = number;
-    }
-
-    public int intValue() {
-        return protocolNumber;
-    }
-
-    public short shortValue() {
-        return ((Integer) protocolNumber).shortValue();
-    }
-
-    public byte byteValue() {
-        return ((Integer) protocolNumber).byteValue();
-    }
-
-    @Override
-    public String toString() {
-        return protocolName;
-    }
-
-    public static String getProtocolName(int number) {
-        return getProtocolNameInternal(number);
-    }
-
-    public static String getProtocolName(short number) {
-        return getProtocolNameInternal(number & 0xffff);
-    }
-
-    public static String getProtocolName(byte number) {
-        return getProtocolNameInternal(number & 0xff);
-    }
-
-    private static String getProtocolNameInternal(int number) {
-        for (IPProtocols proto : IPProtocols.values()) {
-            if (proto.protocolNumber == number) {
-                return proto.toString();
-            }
-        }
-        //TODO: this is for backwards compatibility
-        return "0x" + Integer.toHexString(number);
-    }
-
-    public static short getProtocolNumberShort(String name) {
-        IPProtocols p = fromString(name);
-        if (p != null) {
-            return p.shortValue();
-        }
-        //This method should be called after validation only
-        throw new IllegalArgumentException("Illegal IP protocol value: " + name);
-    }
-
-    public static int getProtocolNumberInt(String name) {
-        IPProtocols p = fromString(name);
-        if (p != null) {
-            return p.intValue();
-        }
-        //This method should be called after validation only
-        throw new IllegalArgumentException("Illegal IP protocol value: " + name);
-    }
-
-    public static byte getProtocolNumberByte(String name) {
-        IPProtocols p = fromString(name);
-        if (p != null) {
-            return p.byteValue();
-        }
-        //This method should be called after validation only
-        throw new IllegalArgumentException("Illegal IP protocol value: " + name);
-    }
-
-    public static List<String> getProtocolNameList() {
-        List<String> protoList = new ArrayList<String>();
-        for (IPProtocols proto : IPProtocols.values()) {
-            protoList.add(proto.toString());
-        }
-        return protoList;
-    }
-
-    /**
-     * Method to parse an IPProtocol from a numeric string
-     * (see: {@link Java.Lang.Integer.decode(java.lang.String)} for parsable strings),
-     * or this enum's name string.
-     *
-     * @param s
-     *            The IP protocol string to be parsed
-     * @return The IP protocol Enum, or null if invalid protocol string is passed
-     */
-    public static IPProtocols fromString(String s) {
-        // null/empty/any/* evaluates to ANY
-        if (s == null || s.isEmpty() || s.equalsIgnoreCase("any") || s.equals("*")) {
-            return IPProtocols.ANY;
-        }
-
-        // Try parsing numeric and find the related ENUM
-        try {
-            int protoNum = Integer.decode(s);
-            for (IPProtocols protoEnum : IPProtocols.values()) {
-                if (protoEnum.protocolNumber == protoNum) {
-                    return protoEnum;
-                }
-            }
-            // At this point it's an invalid number (i.e. out of range or not a valid proto num)
-            return null;
-        } catch (NumberFormatException nfe) {
-            // numeric failed try by NAME
-            try {
-                return valueOf(s);
-            } catch(IllegalArgumentException e) {
-                // Neither numeric nor enum NAME, attempt human readable name
-                for (IPProtocols protoEnum : IPProtocols.values()) {
-                    if (protoEnum.toString().equalsIgnoreCase(s)) {
-                        return protoEnum;
-                    }
-                }
-                //couldn't parse, signifies an invalid proto field!
-                return null;
-            }
-
-        }
-    }
-}