Update DAO API
[lispflowmapping.git] / mappingservice / lisp-proto / src / main / java / org / opendaylight / lispflowmapping / lisp / util / LcafSourceDestHelper.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc.  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.lisp.util;
10
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.LcafSourceDestAddress;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.LispAFIAddress;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.lcafsourcedestaddress.DstAddress;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.lcafsourcedestaddress.SrcAddress;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.lispaddress.LispAddressContainer;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev150820.lispaddress.lispaddresscontainer.address.LcafSourceDest;
17 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory;
19
20 /**
21  * @author Florin Coras
22  *
23  */
24
25 public class LcafSourceDestHelper {
26     private final static Logger LOG = LoggerFactory.getLogger(LcafSourceDestHelper.class);
27     public static LispAFIAddress getSrcAfi(LispAddressContainer addr) {
28         if (!isSrcDst(addr)) {
29             return LispAFIConvertor.toAFI(addr);
30         }
31         return LispAFIConvertor.toAFIfromPrimitive(((LcafSourceDest) addr.getAddress()).getLcafSourceDestAddr()
32                 .getSrcAddress().getPrimitiveAddress());
33     }
34
35     public static LispAFIAddress getSrcAfi(LispAFIAddress addr) {
36         if (!isSrcDst(addr)) {
37             return addr;
38         }
39         return LispAFIConvertor.toAFIfromPrimitive(((LcafSourceDestAddress) addr)
40                 .getSrcAddress().getPrimitiveAddress());
41     }
42
43     public static LispAFIAddress getDstAfi(LispAddressContainer addr) {
44         if (!isSrcDst(addr)) {
45             return LispAFIConvertor.toAFI(addr);
46         }
47         return LispAFIConvertor.toAFIfromPrimitive(((LcafSourceDest) addr.getAddress()).getLcafSourceDestAddr()
48                 .getDstAddress().getPrimitiveAddress());
49     }
50
51     public static LispAFIAddress getDstAfi(LispAFIAddress addr) {
52         if (!isSrcDst(addr)) {
53             return addr;
54         }
55         return LispAFIConvertor.toAFIfromPrimitive(((LcafSourceDestAddress) addr)
56                 .getDstAddress().getPrimitiveAddress());
57     }
58
59     public static LispAddressContainer getSrc(LispAddressContainer addr) {
60         if (!isSrcDst(addr)) {
61             return addr;
62         }
63         return LispAFIConvertor.toContainer(LispAFIConvertor.toAFIfromPrimitive(((LcafSourceDest) addr
64                 .getAddress()).getLcafSourceDestAddr().getSrcAddress().getPrimitiveAddress()));    }
65
66     public static LispAddressContainer getDst(LispAddressContainer addr) {
67         if (!isSrcDst(addr)) {
68             return addr;
69         }
70         return LispAFIConvertor.toContainer(LispAFIConvertor.toAFIfromPrimitive(((LcafSourceDest) addr
71                 .getAddress()).getLcafSourceDestAddr().getDstAddress().getPrimitiveAddress()));
72     }
73
74     public static short getSrcMask(LispAddressContainer addr) {
75         if (!isSrcDst(addr)) {
76             return 0;
77         }
78         return ((LcafSourceDest) addr.getAddress()).getLcafSourceDestAddr().getSrcMaskLength();
79     }
80
81     public static short getDstMask(LispAddressContainer addr) {
82         if (!isSrcDst(addr)) {
83             return 0;
84         }
85         return ((LcafSourceDest) addr.getAddress()).getLcafSourceDestAddr().getDstMaskLength();
86     }
87
88     public static short getSrcMask(LispAFIAddress addr) {
89         if (!isSrcDst(addr)) {
90             return 0;
91         }
92         return ((LcafSourceDestAddress) addr).getSrcMaskLength();
93     }
94
95     public static short getDstMask(LispAFIAddress addr) {
96         if (!isSrcDst(addr)) {
97             return 0;
98         }
99         return ((LcafSourceDestAddress) addr).getDstMaskLength();
100     }
101
102     public static DstAddress getDstAddress(LispAFIAddress addr) {
103         if (!isSrcDst(addr)) {
104             return null;
105         }
106         return ((LcafSourceDestAddress)addr).getDstAddress();
107     }
108
109     public static SrcAddress getSrcAddress(LispAFIAddress addr) {
110         if (!isSrcDst(addr)) {
111             return null;
112         }
113         return ((LcafSourceDestAddress)addr).getSrcAddress();
114     }
115
116     public static DstAddress getDstAddress(LispAddressContainer addr) {
117         if (!isSrcDst(addr)) {
118             return null;
119         }
120         return ((LcafSourceDest)addr.getAddress()).getLcafSourceDestAddr().getDstAddress();
121     }
122
123     public static SrcAddress getSrcAddress(LispAddressContainer addr) {
124         if (!isSrcDst(addr)) {
125             return null;
126         }
127         return ((LcafSourceDest)addr.getAddress()).getLcafSourceDestAddr().getSrcAddress();
128     }
129
130
131     private static boolean isSrcDst(LispAFIAddress addr) {
132         if (!(addr instanceof LcafSourceDestAddress)) {
133             LOG.warn("Address {} is not a valid SourceDest LCAF", addr);
134             return false;
135         }
136         return true;
137     }
138
139     private static boolean isSrcDst(LispAddressContainer addr) {
140         if (!(addr.getAddress() instanceof LcafSourceDest)) {
141             LOG.warn("Address {} is not a valid SourceDest LCAF", addr);
142             return false;
143         }
144         return true;
145     }
146 }