2 * Copyright (c) 2014 Cisco Systems, Inc. and others. 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.lispflowmapping.northbound;
11 import java.util.ArrayList;
12 import java.util.List;
14 import javax.xml.bind.DatatypeConverter;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.EidToLocatorRecord.Action;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispAFIAddress;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.MapRegister;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.MapRequest;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.eidrecords.EidRecordBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.eidtolocatorrecords.EidToLocatorRecord;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.eidtolocatorrecords.EidToLocatorRecordBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lcaflistaddress.Addresses;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lcafsourcedestaddress.DstAddress;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lcafsourcedestaddress.DstAddressBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lcafsourcedestaddress.SrcAddress;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lcafsourcedestaddress.SrcAddressBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lcaftrafficengineeringaddress.Hops;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lcaftrafficengineeringaddress.HopsBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.LispAddressContainer;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer.address.as.ASBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer.address.distinguishedname.DistinguishedNameBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer.address.ipv4.Ipv4AddressBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer.address.ipv6.Ipv6AddressBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer.address.lcafapplicationdata.LcafApplicationDataAddrBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer.address.lcaflist.LcafListAddrBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer.address.lcafsegment.LcafSegmentAddrBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer.address.lcafsourcedest.LcafSourceDestAddrBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer.address.lcaftrafficengineering.LcafTrafficEngineeringAddrBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer.address.mac.MacAddressBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer.address.no.NoAddressBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispsimpleaddress.PrimitiveAddress;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.locatorrecords.LocatorRecord;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.locatorrecords.LocatorRecordBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.mapregisternotification.MapRegisterBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.maprequest.ItrRloc;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.maprequest.ItrRlocBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.maprequest.SourceEidBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.maprequestnotification.MapRequestBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.reencaphop.HopBuilder;
51 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
52 import org.opendaylight.lispflowmapping.implementation.util.LispAFIConvertor;
53 import org.opendaylight.lispflowmapping.type.AddressFamilyNumberEnum;
54 import org.opendaylight.lispflowmapping.type.LispCanonicalAddressFormatEnum;
55 import org.opendaylight.lispflowmapping.type.lisp.EidRecord;
56 import org.opendaylight.lispflowmapping.type.lisp.MapReplyAction;
57 import org.opendaylight.lispflowmapping.type.lisp.address.LispASAddress;
58 import org.opendaylight.lispflowmapping.type.lisp.address.LispAddress;
59 import org.opendaylight.lispflowmapping.type.lisp.address.LispApplicationDataLCAFAddress;
60 import org.opendaylight.lispflowmapping.type.lisp.address.LispDistinguishedNameAddress;
61 import org.opendaylight.lispflowmapping.type.lisp.address.LispIpv4Address;
62 import org.opendaylight.lispflowmapping.type.lisp.address.LispIpv6Address;
63 import org.opendaylight.lispflowmapping.type.lisp.address.LispLCAFAddress;
64 import org.opendaylight.lispflowmapping.type.lisp.address.LispListLCAFAddress;
65 import org.opendaylight.lispflowmapping.type.lisp.address.LispMACAddress;
66 import org.opendaylight.lispflowmapping.type.lisp.address.LispNoAddress;
67 import org.opendaylight.lispflowmapping.type.lisp.address.LispSegmentLCAFAddress;
68 import org.opendaylight.lispflowmapping.type.lisp.address.LispSourceDestLCAFAddress;
69 import org.opendaylight.lispflowmapping.type.lisp.address.LispTrafficEngineeringLCAFAddress;
70 import org.opendaylight.lispflowmapping.type.lisp.address.ReencapHop;
72 public class YangTransformerNB {
74 public static LispAFIAddress toAFI(LispAddressContainer container) {
75 return LispAFIConvertor.toAFI(container);
78 public static PrimitiveAddress toPrimitive(LispAFIAddress address) {
79 return LispAFIConvertor.toPrimitive(address);
82 public static LispAFIAddress toAFIfromPrimitive(PrimitiveAddress primitive) {
83 return LispAFIConvertor.toAFIfromPrimitive(primitive);
86 public static LispAddressContainer transformLispAddress(LispAddress lispAddress) {
88 if (lispAddress == null) {
92 LispAFIAddress lispAFIAddress = null;
93 short ianaCode = lispAddress.getAfi().getIanaCode();
95 switch (lispAddress.getAfi()) {
98 LispIpv4Address lispIpv4Address = (LispIpv4Address) lispAddress;
99 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address ipv4Address =
100 new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address(
101 lispIpv4Address.getAddress().getHostAddress());
102 lispAFIAddress = new Ipv4AddressBuilder().setIpv4Address(ipv4Address).setAfi(ianaCode).build();
105 lispAFIAddress = new NoAddressBuilder().setAfi(ianaCode).build();
107 LispASAddress lispASAddress = (LispASAddress) lispAddress;
108 lispAFIAddress = new ASBuilder().setAS(lispASAddress.getAS()).setAfi(ianaCode).build();
110 case DISTINGUISHED_NAME:
111 LispDistinguishedNameAddress lispDNAddress = (LispDistinguishedNameAddress) lispAddress;
112 lispAFIAddress = new DistinguishedNameBuilder().setDistinguishedName(lispDNAddress.getDistinguishedName()).setAfi(ianaCode).build();
115 LispIpv6Address lispIpv6Address = (LispIpv6Address) lispAddress;
116 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address ipv6Address =
117 new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address(
118 lispIpv6Address.getAddress().getHostAddress());
119 lispAFIAddress = new Ipv6AddressBuilder().setIpv6Address(ipv6Address).setAfi(ianaCode).build();
123 lispAFIAddress = transformLispMACAddress(lispAddress);
128 LispLCAFAddress lispLcafAddress = (LispLCAFAddress) lispAddress;
129 LispCanonicalAddressFormatEnum lcafEnum = lispLcafAddress.getType();
132 case APPLICATION_DATA:
133 lispAFIAddress = transformLispApplicationDataLCAFAddress(lispLcafAddress);
136 lispAFIAddress = transformLispListLCAFAddress(lispLcafAddress);
139 lispAFIAddress = transformLispSegmentLCAFAddress(lispLcafAddress);
142 lispAFIAddress = transformLispSourceDestLCAFAddress(lispLcafAddress);
144 case TRAFFIC_ENGINEERING:
145 lispAFIAddress = transformLispTrafficEngineeringLCAFAddress(lispLcafAddress);
149 throw new IllegalArgumentException("LCAF type " + lcafEnum + " not supported by this transoformer");
155 throw new IllegalArgumentException("AFI " + lispAddress.getAfi() + " not supported by this transformer");
158 return LispAFIConvertor.toContainer(lispAFIAddress);
162 public static LispAFIAddress transformLispMACAddress(LispAddress lispAddress) {
163 LispMACAddress lispMacAddress = (LispMACAddress) lispAddress;
164 StringBuilder sb = new StringBuilder(17);
165 for (byte b : lispMacAddress.getMAC()) {
168 sb.append(String.format("%02x", b));
171 return new MacAddressBuilder().setAfi(lispMacAddress.getAfi().getIanaCode()).setMacAddress(
172 new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress(sb.toString())).build();
175 public static LispAFIAddress transformLispApplicationDataLCAFAddress(LispLCAFAddress lispLcafAddress) {
176 LispApplicationDataLCAFAddress lispApplicationDataLCAFAddress = (LispApplicationDataLCAFAddress) lispLcafAddress;
177 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lcafapplicationdataaddress.Address address;
178 address = new org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lcafapplicationdataaddress.AddressBuilder().setPrimitiveAddress(
179 toPrimitive(toAFI(transformLispAddress(lispApplicationDataLCAFAddress.getAddress())))).build();
180 return new LcafApplicationDataAddrBuilder().setAfi(lispLcafAddress.getAfi().getIanaCode())
181 .setLcafType((short) lispLcafAddress.getType().getLispCode()).setIpTos(lispApplicationDataLCAFAddress.getIPTos())
182 .setLocalPort(new PortNumber((int) lispApplicationDataLCAFAddress.getLocalPort()))
183 .setRemotePort(new PortNumber((int) lispApplicationDataLCAFAddress.getRemotePort())).setAddress(address).build();
186 public static LispAFIAddress transformLispListLCAFAddress(LispLCAFAddress lispLcafAddress) {
188 LispListLCAFAddress lispListLCAFAddress = (LispListLCAFAddress) lispLcafAddress;
190 List<Addresses> listAddresses = new ArrayList<Addresses>();
192 for (int i = 0; i < lispListLCAFAddress.getAddresses().size(); i++) {
193 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lcaflistaddress.Addresses addresses;
194 addresses = new org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lcaflistaddress.AddressesBuilder().setPrimitiveAddress(
195 toPrimitive(toAFI(transformLispAddress(lispListLCAFAddress.getAddresses().get(i))))).build();
196 listAddresses.add(addresses);
199 return new LcafListAddrBuilder().setAfi(lispLcafAddress.getAfi().getIanaCode()).setLcafType((short) lispLcafAddress.getType().getLispCode())
200 .setAddresses(listAddresses).build();
203 public static LispAFIAddress transformLispSegmentLCAFAddress(LispLCAFAddress lispLcafAddress) {
204 LispSegmentLCAFAddress lispSegmentLCAFAddress = (LispSegmentLCAFAddress) lispLcafAddress;
205 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lcafsegmentaddress.Address address;
206 address = new org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lcafsegmentaddress.AddressBuilder().setPrimitiveAddress(
207 toPrimitive(toAFI(transformLispAddress(lispSegmentLCAFAddress.getAddress())))).build();
209 return new LcafSegmentAddrBuilder().setAfi(lispLcafAddress.getAfi().getIanaCode()).setLcafType((short) lispLcafAddress.getType().getLispCode())
210 .setInstanceId((long) lispSegmentLCAFAddress.getInstanceId()).setAddress(address).build();
214 public static LispAFIAddress transformLispSourceDestLCAFAddress(LispLCAFAddress lispLcafAddress) {
215 LispSourceDestLCAFAddress lispSourceDestLCAFAddress = (LispSourceDestLCAFAddress) lispLcafAddress;
217 SrcAddress srcAddress = new SrcAddressBuilder().setPrimitiveAddress(
218 toPrimitive(toAFI(transformLispAddress(lispSourceDestLCAFAddress.getSrcAddress())))).build();
220 DstAddress dstAddress = new DstAddressBuilder().setPrimitiveAddress(
221 toPrimitive(toAFI(transformLispAddress(lispSourceDestLCAFAddress.getDstAddress())))).build();
223 return new LcafSourceDestAddrBuilder().setAfi(lispLcafAddress.getAfi().getIanaCode())
224 .setLcafType((short) lispLcafAddress.getType().getLispCode()).setSrcMaskLength((short) lispSourceDestLCAFAddress.getSrcMaskLength())
225 .setDstMaskLength((short) lispSourceDestLCAFAddress.getDstMaskLength()).setSrcAddress(srcAddress).setDstAddress(dstAddress).build();
228 public static LispAFIAddress transformLispTrafficEngineeringLCAFAddress(LispLCAFAddress lispLcafAddress) {
229 LispTrafficEngineeringLCAFAddress lispTrafficEngineeringLCAFAddress = (LispTrafficEngineeringLCAFAddress) lispLcafAddress;
231 List<Hops> listHops = new ArrayList<Hops>();
233 for (int i = 0; i < lispTrafficEngineeringLCAFAddress.getHops().size(); i++) {
234 ReencapHop reencapHop = lispTrafficEngineeringLCAFAddress.getHops().get(i);
236 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.reencaphop.Hop hop;
237 hop = new HopBuilder().setPrimitiveAddress(toPrimitive(toAFI(transformLispAddress(reencapHop.getHop())))).build();
239 Hops hops = new HopsBuilder().setLookup(reencapHop.isLookup()).setRLOCProbe(reencapHop.isRLOCProbe()).setStrict(reencapHop.isStrict())
240 .setHop(hop).build();
246 return new LcafTrafficEngineeringAddrBuilder().setAfi(lispLcafAddress.getAfi().getIanaCode())
247 .setLcafType((short) lispLcafAddress.getType().getLispCode()).setHops(listHops).build();
250 public static LispAddress transformToLispAddress(LispAddressContainer lispAddress) {
252 LispAddress legacyAddress = null;
253 LispAFIAddress address = LispAFIConvertor.toAFI(lispAddress);
254 AddressFamilyNumberEnum afi = AddressFamilyNumberEnum.valueOf(address.getAfi());
259 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispIpv4Address lispIpv4Address;
260 lispIpv4Address = (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispIpv4Address) address;
261 legacyAddress = new LispIpv4Address(lispIpv4Address.getIpv4Address().getValue());
264 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispIpv6Address lispIpv6Address;
265 lispIpv6Address = (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispIpv6Address) address;
266 legacyAddress = new LispIpv6Address(lispIpv6Address.getIpv6Address().getValue());
269 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispASAddress lispASAddress;
270 lispASAddress = (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispASAddress) address;
271 legacyAddress = new LispASAddress(lispASAddress.getAS());
273 case DISTINGUISHED_NAME:
274 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispDistinguishedNameAddress lispDistinguishedNameAddress;
275 lispDistinguishedNameAddress = (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispDistinguishedNameAddress) address;
276 legacyAddress = new LispDistinguishedNameAddress(lispDistinguishedNameAddress.getDistinguishedName());
279 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispMacAddress lispMacAddress;
280 lispMacAddress = (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispMacAddress) address;
281 String macString = lispMacAddress.getMacAddress().getValue();
282 macString = macString.replaceAll(":", "");
283 legacyAddress = new LispMACAddress(DatatypeConverter.parseHexBinary(macString));
286 legacyAddress = new LispNoAddress();
289 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispLcafAddress lispLcafAddress;
290 lispLcafAddress = (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispLcafAddress) address;
292 LispCanonicalAddressFormatEnum lcafEnum = LispCanonicalAddressFormatEnum.valueOf(lispLcafAddress.getLcafType());
295 case APPLICATION_DATA:
296 legacyAddress = transformToLispApplicationDataLCAFAddress(lispLcafAddress);
299 legacyAddress = transformToLispListLCAFAddress(lispLcafAddress);
302 legacyAddress = transformToLispSegmentLCAFAddress(lispLcafAddress);
305 legacyAddress = transformToLispSourceDestLCAFAddress(lispLcafAddress);
307 case TRAFFIC_ENGINEERING:
308 legacyAddress = transformToLispTrafficEngineeringLCAFAddress(lispLcafAddress);
312 throw new IllegalArgumentException("LCAF type " + lcafEnum + " not supported by this transoformer");
317 throw new IllegalArgumentException("AFI " + afi + " not supported by this transformer");
320 return legacyAddress;
323 public static LispAddress transformToLispApplicationDataLCAFAddress(
324 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispLcafAddress lispLcafAddress) {
325 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LcafApplicationDataAddress lcafApplicationDataAddress;
326 lcafApplicationDataAddress = (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LcafApplicationDataAddress) lispLcafAddress;
328 return new LispApplicationDataLCAFAddress((byte) 0, lcafApplicationDataAddress.getProtocol().byteValue(), lcafApplicationDataAddress
329 .getIpTos().intValue(), lcafApplicationDataAddress.getLocalPort().getValue().shortValue(), lcafApplicationDataAddress.getRemotePort()
330 .getValue().shortValue(), transformToLispAddress(LispAFIConvertor.toContainer(toAFIfromPrimitive(lcafApplicationDataAddress.getAddress()
331 .getPrimitiveAddress()))));
334 public static LispAddress transformToLispListLCAFAddress(org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispLcafAddress lispLcafAddress) {
335 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LcafListAddress lcafListAddress;
336 lcafListAddress = (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LcafListAddress) lispLcafAddress;
338 List<LispAddress> listLegacyAddress = new ArrayList<LispAddress>();
340 for (int i = 0; i < lcafListAddress.getAddresses().size(); i++) {
342 .add(transformToLispAddress(LispAFIConvertor.toContainer(toAFIfromPrimitive(lcafListAddress.getAddresses().get(i).getPrimitiveAddress()))));
344 return new LispListLCAFAddress((byte) 0, listLegacyAddress);
347 public static LispAddress transformToLispSegmentLCAFAddress(org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispLcafAddress lispLcafAddress) {
348 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LcafSegmentAddress lcafSegmentAddress;
349 lcafSegmentAddress = (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LcafSegmentAddress) lispLcafAddress;
353 return new LispSegmentLCAFAddress(iidMaskLen, lcafSegmentAddress.getInstanceId().intValue(),
354 transformToLispAddress(LispAFIConvertor.toContainer(toAFIfromPrimitive(lcafSegmentAddress.getAddress().getPrimitiveAddress()))));
358 public static LispAddress transformToLispSourceDestLCAFAddress(
359 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispLcafAddress lispLcafAddress) {
360 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LcafSourceDestAddress lcafSourceDestAddress;
361 lcafSourceDestAddress = (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LcafSourceDestAddress) lispLcafAddress;
363 return new LispSourceDestLCAFAddress((byte) 0, (short) 0, lcafSourceDestAddress.getSrcMaskLength().byteValue(), lcafSourceDestAddress
364 .getDstMaskLength().byteValue(), transformToLispAddress(LispAFIConvertor.toContainer(toAFIfromPrimitive(lcafSourceDestAddress.getSrcAddress()
365 .getPrimitiveAddress()))), transformToLispAddress(LispAFIConvertor.toContainer(toAFIfromPrimitive(lcafSourceDestAddress.getDstAddress()
366 .getPrimitiveAddress()))));
370 public static LispAddress transformToLispTrafficEngineeringLCAFAddress(
371 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LispLcafAddress lispLcafAddress) {
372 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LcafTrafficEngineeringAddress lcafTrafficEngineeringAddress;
373 lcafTrafficEngineeringAddress = (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.LcafTrafficEngineeringAddress) lispLcafAddress;
375 List<ReencapHop> listLegacyHops = new ArrayList<ReencapHop>();
377 ReencapHop legacyHop;
378 org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.ReencapHop hop;
380 // for (Addresses addresses : lcafListAddress.getAddresses()){
381 for (int i = 0; i < lcafTrafficEngineeringAddress.getHops().size(); i++) {
382 hop = (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.ReencapHop) lcafTrafficEngineeringAddress.getHops().get(i);
384 legacyHop = new ReencapHop(transformToLispAddress(LispAFIConvertor.toContainer(toAFIfromPrimitive(hop.getHop().getPrimitiveAddress()))), (short) 0,
385 hop.isLookup(), hop.isRLOCProbe(), hop.isStrict());
387 listLegacyHops.add(legacyHop);
389 return new LispTrafficEngineeringLCAFAddress((byte) 0, listLegacyHops);
392 public static MapRegister transformMapRegister(org.opendaylight.lispflowmapping.type.lisp.MapRegister legacyMapRegister) {
394 List<EidToLocatorRecord> listEidToLocatorRecord = new ArrayList<EidToLocatorRecord>();
396 // for (EidToLocatorRecord legacyRecord:
397 // legacyMapRegister.getEidToLocatorRecords()){
398 for (int i = 0; i < legacyMapRegister.getEidToLocatorRecords().size(); i++) {
400 listEidToLocatorRecord.add(transformEidToLocatorRecord(legacyMapRegister.getEidToLocatorRecords().get(i)));
404 MapRegisterBuilder builder = new MapRegisterBuilder();
406 MapRegister yangMapRegister = builder.setKeyId(legacyMapRegister.getKeyId()).setProxyMapReply(legacyMapRegister.isProxyMapReply())
407 .setEidToLocatorRecord(listEidToLocatorRecord).setWantMapNotify(true).build();
409 return yangMapRegister;
413 public static EidToLocatorRecord transformEidToLocatorRecord(
414 org.opendaylight.lispflowmapping.type.lisp.EidToLocatorRecord legacyEidToLocatorRecord) {
416 List<LocatorRecord> listLocatorRecord = new ArrayList<LocatorRecord>();
418 for (int j = 0; j < legacyEidToLocatorRecord.getLocators().size(); j++) {
420 org.opendaylight.lispflowmapping.type.lisp.LocatorRecord legacyLocatorRecord = legacyEidToLocatorRecord.getLocators().get(j);
422 LispAddressContainer rloc = transformLispAddress(legacyLocatorRecord.getLocator());
424 LocatorRecordBuilder locatorRecordBuilder = new LocatorRecordBuilder();
426 LocatorRecord locatorRecord = locatorRecordBuilder.setLispAddressContainer((LispAddressContainer) rloc)
427 .setLocalLocator(legacyLocatorRecord.isLocalLocator()).setPriority((short) legacyLocatorRecord.getPriority())
428 .setWeight((short) legacyLocatorRecord.getWeight()).setMulticastPriority((short) legacyLocatorRecord.getMulticastPriority())
429 .setMulticastWeight((short) legacyLocatorRecord.getMulticastWeight()).setRlocProbed(legacyLocatorRecord.isRlocProbed())
430 .setRouted(legacyLocatorRecord.isRouted()).build();
432 listLocatorRecord.add(locatorRecord);
435 LispAddressContainer eid = transformLispAddress(legacyEidToLocatorRecord.getPrefix());
436 EidToLocatorRecordBuilder eidToLocatorRecordBuilder = new EidToLocatorRecordBuilder();
437 EidToLocatorRecord eidToLocatorRecord = eidToLocatorRecordBuilder.setLispAddressContainer((LispAddressContainer) eid)
438 .setAction(Action.forValue(legacyEidToLocatorRecord.getAction().getCode()))
439 .setAuthoritative(legacyEidToLocatorRecord.isAuthoritative()).setMaskLength((short) legacyEidToLocatorRecord.getMaskLength())
440 .setRecordTtl(legacyEidToLocatorRecord.getRecordTtl()).setLocatorRecord(listLocatorRecord).build();
441 return eidToLocatorRecord;
444 public static org.opendaylight.lispflowmapping.type.lisp.EidToLocatorRecord reTransformEidToLocatorRecord(EidToLocatorRecord eidToLocatorRecord) {
446 org.opendaylight.lispflowmapping.type.lisp.EidToLocatorRecord legacyRecord = new org.opendaylight.lispflowmapping.type.lisp.EidToLocatorRecord();
448 for (int j = 0; j < eidToLocatorRecord.getLocatorRecord().size(); j++) {
450 LocatorRecord locatorRecord = (LocatorRecord) eidToLocatorRecord.getLocatorRecord().get(j);
452 org.opendaylight.lispflowmapping.type.lisp.LocatorRecord legacyLocatorRecord = new org.opendaylight.lispflowmapping.type.lisp.LocatorRecord();
454 LispAddressContainer rloc = locatorRecord.getLispAddressContainer();
456 legacyLocatorRecord.setLocator(YangTransformerNB.transformToLispAddress(rloc));
458 legacyLocatorRecord.setLocalLocator(locatorRecord.isLocalLocator()).setPriority(locatorRecord.getPriority())
459 .setWeight(locatorRecord.getWeight()).setMulticastPriority(locatorRecord.getMulticastPriority())
460 .setMulticastWeight(locatorRecord.getMulticastWeight()).setRlocProbed(locatorRecord.isRlocProbed())
461 .setRouted(locatorRecord.isRouted());
463 legacyRecord.addLocator(legacyLocatorRecord);
466 LispAddress eid = transformToLispAddress(eidToLocatorRecord.getLispAddressContainer());
467 legacyRecord.setPrefix(eid).setAction(MapReplyAction.valueOf(eidToLocatorRecord.getAction().getIntValue()))
468 .setAuthoritative(eidToLocatorRecord.isAuthoritative()).setMaskLength((short) eidToLocatorRecord.getMaskLength())
469 .setRecordTtl(eidToLocatorRecord.getRecordTtl());
473 public static MapRequest transformMapRequest(org.opendaylight.lispflowmapping.type.lisp.MapRequest legacyMapRequest) {
475 MapRequestBuilder builder = new MapRequestBuilder();
476 builder.setAuthoritative(legacyMapRequest.isAuthoritative());
477 builder.setMapDataPresent(legacyMapRequest.isMapDataPresent());
478 builder.setPitr(legacyMapRequest.isPitr());
479 builder.setProbe(legacyMapRequest.isProbe());
480 builder.setSmr(legacyMapRequest.isSmr());
481 builder.setSmrInvoked(legacyMapRequest.isSmrInvoked());
483 builder.setEidRecord(new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.eidrecords.EidRecord>());
484 for (EidRecord record : legacyMapRequest.getEids()) {
485 LispAddressContainer container = transformLispAddress(record.getPrefix());
486 builder.getEidRecord().add(
488 new EidRecordBuilder().setMask((short) record.getMaskLength()).setLispAddressContainer(container).build());
491 builder.setItrRloc(new ArrayList<ItrRloc>());
492 for (LispAddress itr : legacyMapRequest.getItrRlocs()) {
493 builder.getItrRloc().add(new ItrRlocBuilder().setLispAddressContainer(transformLispAddress(itr)).build());
496 builder.setMapReply(null);
497 builder.setNonce(legacyMapRequest.getNonce());
498 if (legacyMapRequest.getSourceEid() != null) {
499 builder.setSourceEid(new SourceEidBuilder().setLispAddressContainer(transformLispAddress(legacyMapRequest.getSourceEid())).build());
501 return builder.build();