carp_macmatch6() had two issues that affect IPv6 processing:
- it returns sc->sc_addr pointer that might become invalid after softc destroying.
- carp_output() expects carp vhid to be stored in the mtag, not the pointer to softc.
Fix these issues. Allocate enough space in mtag to keep both vhid and
mac address. Copy vhid first to fix issue with carp_output(), then
copy sc_addr and return pointer to this copy. mtag will be alive
until mbuf is used.
This fixes problem when IPv6 packets originated from CARP IPv6 address
use incorrect mac address due to mbuf_tag has invalid data.