def METHOD_NAME(self, dev, addr, log):
    """Upon start, a new interfaceX:Y will have to be assigned.
    Upon stop, the currently assigned interfaceX:Y will have to be
    found for ifconfig down
    """
    if ':' in addr:
        stacked_intf = self.has_param("ip6addr", addr)
    else:
        stacked_intf = self.has_param("ipaddr", addr)
    if stacked_intf is not None:
        if dev not in stacked_intf.name:
            base_intf = self.has_param("name", dev)
            if base_intf and hasattr(base_intf, "groupname"):
                alt_intfs = [ i for i in self.get_matching_interfaces("groupname", base_intf.groupname) if i.name != base_intf.name and stacked_intf.name.startswith(i.name+":")]
                if len(alt_intfs) == 1:
                    log.info("found %s plumbed on %s, in the same ipmp group than %s" % (addr, stacked_intf.name, dev))
                    return stacked_intf.name
            log.error("%s is plumbed but not on %s" % (addr, dev))
            return
        stacked_dev = stacked_intf.name
        log.debug("found matching stacked device %s" % stacked_dev)
    else:
        stacked_dev = self.next_stacked_dev(dev)
        log.debug("allocate new stacked device %s" % stacked_dev)
    return stacked_dev