2 * Copyright (c) 2017 Cisco Systems. All rights reserved.
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
9 package org.opendaylight.groupbasedpolicy.renderer.vpp.util;
11 import java.security.InvalidParameterException;
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;
34 public class LispUtil {
39 public static InstanceIdentifier<Node> hostnameToIid(String hostName) {
40 return VppIidFactory.getNetconfNodeIid(new NodeId(hostName));
43 public static Eid toEid(Address address, long vni, Class<? extends LispAddressFamily> addressType) {
44 EidDom eidDom = new EidDom();
45 eidDom.setAddress(address);
47 eidDom.setAddressFamily(addressType);
48 return eidDom.getSALObject();
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();
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();
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();
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");
80 if(strArray.length == 2) {
81 int mask = Integer.valueOf(strArray[1]);
83 throw new InvalidParameterException("Parameter " + ipStr + " is invalid for IPv4");
87 return new Ipv4Builder().setIpv4(new Ipv4Address(strArray[0])).build();
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();