diff --git a/mininet/node.py b/mininet/node.py
index edb46de04cb952206f203e11a77f52fd77c7e3ea..0b67a008c5fda9a9770f8c0161739e3c8f2f73a9 100644
--- a/mininet/node.py
+++ b/mininet/node.py
@@ -1055,6 +1055,8 @@ def start( self, controllers ):
                 args.extend( ['-i', intf.name] )
         for c in controllers:
             args.extend( ['-c', '%s:%d' % (c.IP(), c.port)] )
+        if self.listenPort:
+            args.extend( ['--listen', '127.0.0.1:%i' % self.listenPort] )
 
         with open( '/tmp/ivs.%s.log' % self.name, 'w' ) as logfile:
             with open( '/dev/null', 'w' ) as nullfile:
@@ -1080,7 +1082,10 @@ def detach( self, intf ):
 
     def dpctl( self, *args ):
         "Run dpctl command"
-        return "dpctl not supported\n" or args or self # satisfy pylint
+        if not self.listenPort:
+            return "can't run dpctl without passive listening port"
+        return self.cmd( 'dpctl ' + ' '.join( args ) +
+                         ' tcp:127.0.0.1:%i' % self.listenPort )
 
 
 class Controller( Node ):