package org.opendaylight.netconf.api.messages;
import com.google.common.base.Preconditions;
+import com.google.common.net.InetAddresses;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
private final String transport;
private final String sessionIdentifier;
- public NetconfHelloMessageAdditionalHeader(String userName, String hostAddress, String port, String transport, String sessionIdentifier) {
+ public NetconfHelloMessageAdditionalHeader(String userName, String hostAddress, String port,
+ String transport, String sessionIdentifier) {
this.userName = userName;
this.hostAddress = hostAddress;
this.port = port;
}
/**
- * Format additional header into a string suitable as a prefix for netconf hello message
+ * Format additional header into a string suitable as a prefix for netconf hello message.
*/
public String toFormattedString() {
Preconditions.checkNotNull(userName);
@Override
public String toString() {
- final StringBuffer sb = new StringBuffer("NetconfHelloMessageAdditionalHeader{");
+ final StringBuilder sb = new StringBuilder("NetconfHelloMessageAdditionalHeader{");
sb.append("userName='").append(userName).append('\'');
sb.append(", hostAddress='").append(hostAddress).append('\'');
sb.append(", port='").append(port).append('\'');
return sb.toString();
}
- // TODO IPv6
private static final Pattern PATTERN = Pattern
- .compile("\\[(?<username>[^;]+);(?<address>[0-9\\.]+)[:/](?<port>[0-9]+);(?<transport>[a-z]+)[^\\]]+\\]");
+ .compile("\\[(?<username>[^;]+);(?<address>.+)[:/](?<port>[0-9]+);(?<transport>[a-z]+)[^\\]]+\\]");
private static final Pattern CUSTOM_HEADER_PATTERN = Pattern
- .compile("\\[(?<username>[^;]+);(?<address>[0-9\\.]+)[:/](?<port>[0-9]+);(?<transport>[a-z]+);(?<sessionIdentifier>[a-z]+)[^\\]]+\\]");
+ .compile("\\[(?<username>[^;]+);"
+ + "(?<address>.+)[:/](?<port>[0-9]+);(?<transport>[a-z]+);(?<sessionIdentifier>[a-z]+)[^\\]]+\\]");
/**
- * Parse additional header from a formatted string
+ * Parse additional header from a formatted string.
*/
public static NetconfHelloMessageAdditionalHeader fromString(String additionalHeader) {
String additionalHeaderTrimmed = additionalHeader.trim();
String username = matcher.group("username");
String address = matcher.group("address");
+ Preconditions.checkArgument(InetAddresses.isInetAddress(address));
String port = matcher.group("port");
String transport = matcher.group("transport");
String sessionIdentifier = "client";