+#pragma unused(ifp, protocol)
+ struct ether_header *eh = (struct ether_header *)header;
+
+ if (eh->ether_type == htons(ETHERTYPE_IPV6)) {
+ struct ifnet *mifp;
+ /*
+ * Trust the ifp in the mbuf, rather than ifproto's
+ * since the packet could have been injected via
+ * a dlil_input_packet_list() using an ifp that is
+ * different than the one where the packet really
+ * came from.
+ */
+ mifp = mbuf_pkthdr_rcvif(packet);
+
+ /* Update L2 reachability record, if present (and not bcast) */
+ if (bcmp(eh->ether_shost, etherbroadcastaddr,
+ ETHER_ADDR_LEN) != 0) {
+ nd6_llreach_set_reachable(mifp, eh->ether_shost,
+ ETHER_ADDR_LEN);
+ }