Register the services pertaining to port forwarding.
# File lib/net/ssh/service/forward/services.rb, line 23 23: def register_services( container ) 24: 25: # All port forwarding services go in the :forward namespace. 26: container.namespace_define :forward do |ns| 27: 28: # The :driver service manages all port forwarding. It is declared 29: # as deferred so that it is not actually instantiated until it is 30: # used--otherwise, it would be instantiated as soon as it was added 31: # to the list of available services, whether it was ever used or 32: # not. 33: ns.driver :model => :singleton_deferred do |c,p| 34: require 'net/ssh/service/forward/driver' 35: Driver.new( c[:connection][:driver], 36: c[:transport][:buffers], 37: c[:log_for, p], 38: :local => c[:local_network_handler], 39: :remote => c[:remote_network_handler] ) 40: end 41: 42: # A constant service, used to indicate the maximum block size to be 43: # passed over a forwarded connection. 44: ns.read_block_size { 64 * 1024 } 45: 46: # The :local_network_handler service returns a proc object that 47: # creates new LocalNetworkHandler instances for a given client 48: # connection. This is used for forwarding ports on the local host. 49: ns.local_network_handler :model => :singleton_deferred do |c,p| 50: require 'net/ssh/service/forward/local-network-handler' 51: log = c[:log_for, p] 52: block_size = c[:read_block_size] 53: lambda do |client| 54: LocalNetworkHandler.new( log, block_size, client ) 55: end 56: end 57: 58: # The :remote_network_handler service returns a proc object that 59: # creates new RemoteNetworkHandler instances for a given port and 60: # host. This is used for forwarding ports on a remote host. 61: ns.remote_network_handler :model => :singleton_deferred do |c,p| 62: require 'net/ssh/service/forward/remote-network-handler' 63: log = c[:log_for, p] 64: block_size = c[:read_block_size] 65: lambda do |port, host| 66: RemoteNetworkHandler.new( log, block_size, port, host ) 67: end 68: end 69: end 70: end