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 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;
29 import java.security.InvalidParameterException;
32 * Created by Shakib Ahmed on 3/21/17.
34 public class LispUtil {
39 public static Eid toEid(Address address, long vni, Class<? extends LispAddressFamily> addressType) {
40 EidDom eidDom = new EidDom();
41 eidDom.setAddress(address);
43 eidDom.setAddressFamily(addressType);
44 return eidDom.getSALObject();
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();
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();
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();
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");
76 if(strArray.length == 2) {
77 int mask = Integer.valueOf(strArray[1]);
79 throw new InvalidParameterException("Parameter " + ipStr + " is invalid for IPv4");
83 return new Ipv4Builder().setIpv4(new Ipv4Address(strArray[0])).build();
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();