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