import java.net.InetSocketAddress;
import org.opendaylight.netconf.api.messages.NetconfHelloMessageAdditionalHeader;
import org.opendaylight.netconf.client.NetconfClientSessionListener;
+import org.opendaylight.netconf.client.SslHandlerFactory;
import org.opendaylight.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler;
import org.opendaylight.protocol.framework.ReconnectStrategy;
import org.slf4j.Logger;
private final ReconnectStrategy reconnectStrategy;
private final AuthenticationHandler authHandler;
+ private final SslHandlerFactory sslHandlerFactory;
NetconfClientConfiguration(final NetconfClientProtocol protocol, final InetSocketAddress address,
final Long connectionTimeoutMillis,
final NetconfHelloMessageAdditionalHeader additionalHeader,
final NetconfClientSessionListener sessionListener,
- final ReconnectStrategy reconnectStrategy, final AuthenticationHandler authHandler) {
+ final ReconnectStrategy reconnectStrategy, final AuthenticationHandler authHandler,
+ final SslHandlerFactory sslHandlerFactory) {
this.address = address;
this.connectionTimeoutMillis = connectionTimeoutMillis;
this.additionalHeader = additionalHeader;
this.clientProtocol = protocol;
this.reconnectStrategy = reconnectStrategy;
this.authHandler = authHandler;
+ this.sslHandlerFactory = sslHandlerFactory;
validateConfiguration();
}
return clientProtocol;
}
- @SuppressWarnings("checkstyle:FallThrough")
+ public SslHandlerFactory getSslHandlerFactory() {
+ return sslHandlerFactory;
+ }
+
private void validateConfiguration() {
Preconditions.checkNotNull(clientProtocol, " ");
switch (clientProtocol) {
+ case TLS:
+ validateTlsConfiguration();
+ validateTcpConfiguration();
+ break;
case SSH:
validateSshConfiguration();
- // Fall through intentional (ssh validation is a superset of tcp validation)
+ validateTcpConfiguration();
+ break;
case TCP:
validateTcpConfiguration();
break;
}
}
+ protected void validateTlsConfiguration() {
+ Preconditions.checkNotNull(sslHandlerFactory, "sslHandlerFactory");
+ }
+
protected void validateSshConfiguration() {
Preconditions.checkNotNull(authHandler, "authHandler");
}
.add("sessionListener", sessionListener)
.add("reconnectStrategy", reconnectStrategy)
.add("clientProtocol", clientProtocol)
- .add("authHandler", authHandler);
+ .add("authHandler", authHandler)
+ .add("sslHandlerFactory", sslHandlerFactory);
}
public enum NetconfClientProtocol {
- TCP, SSH
+ TCP, SSH, TLS
}
-}
\ No newline at end of file
+}