code: func (d *destination) update(dest *destination) {
  	if d.destinationKey != dest.destinationKey {
  		log.Fatalf("%v: can't update destination %v using %v: destinationKey mismatch: %v != %v",
  			d.service.vserver, d, dest, d.destinationKey, dest.destinationKey)
  	}
  	log.Infof("%v: %v updating destination %v", d.service.vserver, d.service, d)
  
  	updateIPVS := d.active && !d.ipvsEqual(dest)
  
  	dest.active = d.active
  	dest.healthy = d.healthy
  	dest.stats = d.stats
  	*d = *dest
  
  	if !d.healthy {
  		return
  	}
  
  	if !d.backend.Enabled {
  		log.Infof("%v: %v disabling destination %v", d.service.vserver, d.service, d)
  		d.healthy = false
  		d.service.updateState()
  		return
  	}
  
  	if !updateIPVS {
  		return
  	}
  
  	log.Infof("%v: %v updating IPVS destination %v", d.service.vserver, d.service, d)
  	ncc := d.service.vserver.ncc
  	if err := ncc.Dial(); err != nil {
  		log.Fatalf("%v: failed to connect to NCC: %v", d.service.vserver, err)
  	}
  	defer ncc.Close()
  
  	if err := ncc.IPVSUpdateDestination(d.service.ipvsSvc, d.ipvsDst); err != nil {
  		log.Fatalf("%v: failed to update destination %v: %v", d.service.vserver, d, err)
  	}
  }
docs: // update updates a destination while preserving its running state.