org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.mapreplymessage,
org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.maprequest,
org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.maprequestnotification,
+ org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.mapreplynotification,
org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.reencaphop,
org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.transportaddress,
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924,
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.lispsimpleaddress.PrimitiveAddress;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.mapregisternotification.MapRegister;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.mapregisternotification.MapRegisterBuilder;
+import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.mapreplynotification.MapReply;
+import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.mapreplynotification.MapReplyBuilder;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.maprequestnotification.MapRequest;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.maprequestnotification.MapRequestBuilder;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.transportaddress.TransportAddress;
.setSmrInvoked(mapRequest.isSmrInvoked()).setSourceEid(mapRequest.getSourceEid()).build();
}
+ public static MapReply convertMapReply(org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.MapReply mapReply) {
+ return new MapReplyBuilder().setEchoNonceEnabled(mapReply.isEchoNonceEnabled()).setEidToLocatorRecord(mapReply.getEidToLocatorRecord())
+ .setNonce(mapReply.getNonce()).setProbe(mapReply.isProbe()).setSecurityEnabled(mapReply.isSecurityEnabled()).build();
+ }
+
public static IpAddress getIpAddressFromInetAddress(InetAddress inetAddress) {
if (inetAddress == null) {
inetAddress = InetAddress.getLoopbackAddress();
org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.mapnotifymessage,
org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.mapreplymessage,
org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.maprequestmessage,
+ org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.mapreplynotification,
com.google.common.net,
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924,
org.opendaylight.controller.sal.core,
import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
import org.opendaylight.lispflowmapping.implementation.serializer.LispMessage;
import org.opendaylight.lispflowmapping.implementation.serializer.LispMessageEnum;
+import org.opendaylight.lispflowmapping.implementation.serializer.MapReplySerializer;
import org.opendaylight.lispflowmapping.implementation.serializer.MapRequestSerializer;
import org.opendaylight.lispflowmapping.implementation.util.ByteUtil;
import org.opendaylight.lispflowmapping.implementation.util.LispNotificationHelper;
import org.opendaylight.lispflowmapping.implementation.util.MapRequestUtil;
import org.opendaylight.lispflowmapping.southbound.lisp.exception.LispMalformedPacketException;
+import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.MapReply;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.MapRequest;
+import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.XtrReplyMappingBuilder;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.XtrRequestMappingBuilder;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.transportaddress.TransportAddressBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
if (lispType == LispMessageEnum.MapRequest) {
logger.trace("Received packet of type MapRequest for xTR");
handleMapRequest(inBuffer);
+ } else if (lispType == LispMessageEnum.MapReply){
+ logger.trace("Received packet of type MapReply for xTR");
+ handleMapReply(inBuffer);
} else {
logger.warn("Received unknown packet type");
}
throw new LispMalformedPacketException("Couldn't deserialize Map-Request (len=" + inBuffer.capacity() + ")", re);
}
}
+
+ private void handleMapReply(ByteBuffer buffer) {
+ try {
+ MapReply reply = MapReplySerializer.getInstance().deserialize(buffer);
+
+ XtrReplyMappingBuilder replyMappingBuilder = new XtrReplyMappingBuilder();
+ replyMappingBuilder.setMapReply(LispNotificationHelper.convertMapReply(reply));
+
+ if (notificationProvider != null) {
+ notificationProvider.publish(replyMappingBuilder.build());
+ logger.trace("MapReply was published!");
+ } else {
+ logger.warn("Notification Provider is null!");
+ }
+ } catch (RuntimeException re) {
+ throw new LispMalformedPacketException("Couldn't deserialize Map-Reply (len=" + buffer.capacity() + ")", re);
+ }
+
+ }
}
org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.locatorrecords,
org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.mapnotifymessage,
org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.mapregisternotification,
+ org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.mapreplynotification,
org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.mapreplymessage,
org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.maprequest,
org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.maprequestmessage,
}
+ grouping MapReplyNotification {
+ container MapReply {
+ uses MapReply;
+ }
+
+ }
+
+
rpc sendMapNotify {
input {
uses MapNotifyMessage;
uses MapRequestNotification;
}
+ notification xtrReplyMapping {
+ uses MapReplyNotification;
+ }
}