support mask=0 TELSDN-369: #close
[lispflowmapping.git] / mappingservice / api / src / main / java / org / opendaylight / lispflowmapping / interfaces / dao / MappingServiceKeyUtil.java
1 package org.opendaylight.lispflowmapping.interfaces.dao;
2
3 import org.opendaylight.lispflowmapping.type.lisp.address.IMaskable;
4 import org.opendaylight.lispflowmapping.type.lisp.address.LispAddress;
5 import org.slf4j.Logger;
6 import org.slf4j.LoggerFactory;
7
8 public class MappingServiceKeyUtil {
9
10     protected static final Logger logger = LoggerFactory.getLogger(MappingServiceKeyUtil.class);
11
12     public static IMappingServiceKey generateMappingServiceKey(LispAddress prefix, int mask) {
13         if (shouldNormalize(prefix, mask)) {
14             ((IMaskable) prefix).normalize(mask);
15             return new MappingServiceKey(prefix, (byte) mask);
16         } else {
17             return new MappingServiceNoMaskKey(prefix);
18         }
19     }
20
21     private static boolean shouldNormalize(LispAddress prefix, int mask) {
22         if (!(prefix instanceof IMaskable)) {
23             return false;
24         }
25         IMaskable maskablePrefix = (IMaskable) prefix;
26         if (mask >= 0 && mask < maskablePrefix.getMaxMask()) {
27             return true;
28         } else {
29             return false;
30         }
31     }
32
33     public static IMappingServiceKey generateMappingServiceKey(LispAddress prefix) {
34         if (prefix instanceof IMaskable) {
35             return generateMappingServiceKey(prefix, ((IMaskable) prefix).getMaxMask());
36         } else
37             return generateMappingServiceKey(prefix, 0);
38     }
39 }