'Start OpenFlow reference user datapath.
Log to /tmp/sN-{ofd,ofp}.log.
controllers: list of controller objects'

def start(self, controllers):

    clist = ','.join([('tcp:%s:%d' % (c.IP(), c.port)) for c in controllers])
    ofdlog = (('/tmp/' + self.name) + '-ofd.log')
    ofplog = (('/tmp/' + self.name) + '-ofp.log')
    intfs = [str(i) for i in self.intfList() if (not i.IP())]
    self.cmd((((((((((('ofdatapath    -i    ' + ','.join(intfs)) + '    punix:/tmp/') + self.name) + ('    -d    %s    ' % self.dpid)) + self.dpopts) + '    1>    ') + ofdlog) + '    2>    ') + ofdlog) + '    &'))
    self.cmd((((((((((('ofprotocol    unix:/tmp/' + self.name) + '    ') + clist) + '    --fail=closed    ') + self.opts) + '    1>    ') + ofplog) + '    2>') + ofplog) + '    &'))
    if ('no-slicing' not in self.dpopts):
        sleep(1)
        for intf in self.intfList():
            if (not intf.IP()):
                self.TCReapply(intf)
