[ONOS-5710] Process Map-Request msg when proxy bit is set to false
Change-Id: I0ceef00c67ab266b01dec121fe6a4fe1f3dca3e5
diff --git a/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/impl/LispMapServer.java b/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/impl/LispMapServer.java
index 58792a2..faac48d 100644
--- a/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/impl/LispMapServer.java
+++ b/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/impl/LispMapServer.java
@@ -44,6 +44,7 @@
import java.net.UnknownHostException;
import java.util.Arrays;
+import static org.onlab.packet.IpAddress.valueOf;
import static org.onosproject.lisp.msg.authentication.LispAuthenticationKeyEnum.valueOf;
/**
@@ -52,10 +53,16 @@
*/
public final class LispMapServer {
+ private static final Logger log = LoggerFactory.getLogger(LispMapServer.class);
+
private static final int MAP_NOTIFY_PORT = 4342;
private static final int INFO_REPLY_PORT = 4342;
- private static final Logger log = LoggerFactory.getLogger(LispMapServer.class);
+ private static final String INVALID_AUTHENTICATION_DATA_MSG =
+ "Unmatched authentication data of {}.";
+ private static final String FAILED_TO_FORMULATE_NAT_MSG =
+ "Fails during formulate NAT address.";
+
private LispMappingDatabase mapDb = LispMappingDatabase.getInstance();
private LispAuthenticationConfig authConfig = LispAuthenticationConfig.getInstance();
@@ -64,7 +71,7 @@
private LispMapServer() {
}
- public static LispMapServer getInstance() {
+ static LispMapServer getInstance() {
return SingletonHelper.INSTANCE;
}
@@ -74,21 +81,21 @@
* @param message map-register message
* @return map-notify message
*/
- public LispMapNotify processMapRegister(LispMessage message) {
+ LispMapNotify processMapRegister(LispMessage message) {
LispMapRegister register = (LispMapRegister) message;
if (!checkMapRegisterAuthData(register)) {
- log.warn("Unmatched authentication data of Map-Register");
+ log.warn(INVALID_AUTHENTICATION_DATA_MSG, "Map-Register");
return null;
}
register.getMapRecords().forEach(mapRecord -> {
LispEidRecord eidRecord =
- new LispEidRecord(mapRecord.getMaskLength(),
- mapRecord.getEidPrefixAfi());
+ new LispEidRecord(mapRecord.getMaskLength(),
+ mapRecord.getEidPrefixAfi());
- mapDb.putMapRecord(eidRecord, mapRecord);
+ mapDb.putMapRecord(eidRecord, mapRecord, register.isProxyMapReply());
});
// we only acknowledge back to ETR when want-map-notify bit is set to true
@@ -119,23 +126,23 @@
* @param message info-request message
* @return info-reply message
*/
- public LispInfoReply processInfoRequest(LispMessage message) {
+ LispInfoReply processInfoRequest(LispMessage message) {
LispInfoRequest request = (LispInfoRequest) message;
if (!checkInfoRequestAuthData(request)) {
- log.warn("Unmatched authentication data of Info-Request");
+ log.warn(INVALID_AUTHENTICATION_DATA_MSG, "Info-Request");
return null;
}
NatAddressBuilder natBuilder = new NatAddressBuilder();
try {
LispAfiAddress msAddress =
- new LispIpv4Address(IpAddress.valueOf(InetAddress.getLocalHost()));
+ new LispIpv4Address(valueOf(InetAddress.getLocalHost()));
natBuilder.withMsRlocAddress(msAddress);
natBuilder.withMsUdpPortNumber((short) INFO_REPLY_PORT);
// try to extract global ETR RLOC address from info-request
- IpAddress globalRlocIp = IpAddress.valueOf(request.getSender().getAddress());
+ IpAddress globalRlocIp = valueOf(request.getSender().getAddress());
LispAfiAddress globalRlocAddress;
if (globalRlocIp.isIp4()) {
globalRlocAddress = new LispIpv4Address(globalRlocIp);
@@ -149,7 +156,7 @@
// TODO: need to specify RTR addresses
} catch (UnknownHostException e) {
- log.warn("Fails during formulate NAT address", e);
+ log.warn(FAILED_TO_FORMULATE_NAT_MSG, e);
}
InfoReplyBuilder replyBuilder = new DefaultInfoReplyBuilder();