refactoring of listmappingservice into Northbound (future REST) and Southbound (LISP...
[lispflowmapping.git] / mappingservice / api / src / main / java / org / opendaylight / lispflowmapping / type / AddressFamilyNumberEnum.java
1 /*
2  * Copyright (c) 2013 Contextream, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.lispflowmapping.type;
10
11 import org.opendaylight.lispflowmapping.type.lisp.address.LispASAddress;
12 import org.opendaylight.lispflowmapping.type.lisp.address.LispAddress;
13 import org.opendaylight.lispflowmapping.type.lisp.address.LispIpv4Address;
14 import org.opendaylight.lispflowmapping.type.lisp.address.LispIpv6Address;
15 import org.opendaylight.lispflowmapping.type.lisp.address.LispLCAFAddress;
16 import org.opendaylight.lispflowmapping.type.lisp.address.LispMACAddress;
17 import org.opendaylight.lispflowmapping.type.lisp.address.LispNoAddress;
18
19 public enum AddressFamilyNumberEnum {
20     RESERVED(0, LispNoAddress.class), //
21     IP(1, LispIpv4Address.class), //
22     IP6(2, LispIpv6Address.class), //
23     AS(18, LispASAddress.class), //
24     LCAF(16387, LispLCAFAddress.class), //
25     MAC(16389, LispMACAddress.class), //
26     UNKNOWN(-1, null);
27
28     private short ianaCode;
29     private Class<? extends LispAddress> lispAddressClass;
30
31     private AddressFamilyNumberEnum(int ianaCode, Class<? extends LispAddress> lispAddressClass) {
32         this.ianaCode = (short) ianaCode;
33         this.lispAddressClass = lispAddressClass;
34     }
35
36     public Class<? extends LispAddress> getLispAddressClass() {
37         return lispAddressClass;
38     }
39
40     public short getIanaCode() {
41         return ianaCode;
42     }
43
44     public static AddressFamilyNumberEnum valueOf(short ianaCode) {
45         for (AddressFamilyNumberEnum val : values()) {
46             if (val.getIanaCode() == ianaCode) {
47                 return val;
48             }
49         }
50         return UNKNOWN;
51     }
52 }