874376d16c49c50d5a9f18589b69f42d9acc4d23
[groupbasedpolicy.git] / renderers / vpp / src / main / java / org / opendaylight / groupbasedpolicy / renderer / vpp / util / LispUtil.java
1 /*
2  * Copyright (c) 2017 Cisco Systems. 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.groupbasedpolicy.renderer.vpp.util;
10
11 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.EidDom;
12 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.HmacKeyDom;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.InstanceIdType;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.LispAddressFamily;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.Address;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4Builder;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4Prefix;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4PrefixBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170518.gpe.entry.table.grouping.gpe.entry.table.gpe.entry.LocalEid;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170518.gpe.entry.table.grouping.gpe.entry.table.gpe.entry.LocalEidBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170518.gpe.entry.table.grouping.gpe.entry.table.gpe.entry.RemoteEid;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170518.gpe.entry.table.grouping.gpe.entry.table.gpe.entry.RemoteEidBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.HmacKeyType;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.local.mapping.Eid;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.hmac.key.grouping.HmacKey;
28
29 import java.security.InvalidParameterException;
30
31 /**
32  * Created by Shakib Ahmed on 3/21/17.
33  */
34 public class LispUtil {
35     private LispUtil() {
36
37     }
38
39     public static Eid toEid(Address address, long vni, Class<? extends LispAddressFamily> addressType) {
40         EidDom eidDom = new EidDom();
41         eidDom.setAddress(address);
42         eidDom.setVni(vni);
43         eidDom.setAddressFamily(addressType);
44         return eidDom.getSALObject();
45     }
46
47     public static RemoteEid toRemoteEid(Address address, long vni, Class<? extends LispAddressFamily> addressType) {
48         RemoteEidBuilder remoteEidBuilder = new RemoteEidBuilder();
49         remoteEidBuilder.setAddress(address);
50         remoteEidBuilder.setVirtualNetworkId(new InstanceIdType(vni));
51         remoteEidBuilder.setAddressType(addressType);
52         return remoteEidBuilder.build();
53     }
54
55     public static LocalEid toLocalEid(Address address, long vni, Class<? extends LispAddressFamily> addressType) {
56         LocalEidBuilder localEidBuilder = new LocalEidBuilder();
57         localEidBuilder.setAddress(address);
58         localEidBuilder.setVirtualNetworkId(new InstanceIdType(vni));
59         localEidBuilder.setAddressType(addressType);
60         return localEidBuilder.build();
61     }
62
63     public static HmacKey toHmacKey(HmacKeyType keyType, String key) {
64         HmacKeyDom hmacKeyDom = new HmacKeyDom();
65         hmacKeyDom.setKey(key);
66         hmacKeyDom.setKeyType(keyType);
67         return hmacKeyDom.getSALObject();
68     }
69
70     public static Ipv4 toIpv4(String ipStr) throws InvalidParameterException {
71         String[] strArray = ipStr.split("/");
72         if (strArray.length == 0 || strArray.length > 2) {
73             throw new InvalidParameterException("Parameter " + ipStr + " is invalid for IPv4");
74         }
75
76         if(strArray.length == 2) {
77             int mask = Integer.valueOf(strArray[1]);
78             if(mask != 32) {
79                 throw new InvalidParameterException("Parameter " + ipStr + " is invalid for IPv4");
80             }
81         }
82
83         return new Ipv4Builder().setIpv4(new Ipv4Address(strArray[0])).build();
84     }
85
86     public static Ipv4Prefix toLispIpv4Prefix(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
87                                                   .inet.types.rev130715.Ipv4Prefix ipv4Prefix) {
88         return new Ipv4PrefixBuilder().setIpv4Prefix(ipv4Prefix).build();
89     }
90 }