'(re)initialize the tunnel bridge.
Creates tunnel bridge, and links it to the integration bridge
using a patch port.
:param tun_br_name: the name of the tunnel bridge.'

def setup_tunnel_br(self, tun_br_name=None):

    if (not self.tun_br):
        self.tun_br = self.br_tun_cls(tun_br_name)
    self.tun_br.create(secure_mode=True)
    self.tun_br.setup_controllers(self.conf)
    if ((not self.int_br.port_exists(self.conf.OVS.int_peer_patch_port)) or (self.patch_tun_ofport == ovs_lib.INVALID_OFPORT)):
        self.patch_tun_ofport = self.int_br.add_patch_port(self.conf.OVS.int_peer_patch_port, self.conf.OVS.tun_peer_patch_port)
    if ((not self.tun_br.port_exists(self.conf.OVS.tun_peer_patch_port)) or (self.patch_int_ofport == ovs_lib.INVALID_OFPORT)):
        self.patch_int_ofport = self.tun_br.add_patch_port(self.conf.OVS.tun_peer_patch_port, self.conf.OVS.int_peer_patch_port)
    if (ovs_lib.INVALID_OFPORT in (self.patch_tun_ofport, self.patch_int_ofport)):
        LOG.error(_LE('Failed    to    create    OVS    patch    port.    Cannot    have    tunneling    enabled    on    this    agent,    since    this    version    of    OVS    does    not    support    tunnels    or    patch    ports.    Agent    terminated!'))
        sys.exit(1)
    if self.conf.AGENT.drop_flows_on_start:
        self.tun_br.uninstall_flows(cookie=ovs_lib.COOKIE_ANY)
