Changeset View
Changeset View
Standalone View
Standalone View
sys/net/if_disc.c
Show First 20 Lines • Show All 179 Lines • ▼ Show 20 Lines | discoutput(struct ifnet *ifp, struct mbuf *m, const struct sockaddr *dst, | ||||
u_int32_t af; | u_int32_t af; | ||||
M_ASSERTPKTHDR(m); | M_ASSERTPKTHDR(m); | ||||
/* BPF writes need to be handled specially. */ | /* BPF writes need to be handled specially. */ | ||||
if (dst->sa_family == AF_UNSPEC) | if (dst->sa_family == AF_UNSPEC) | ||||
bcopy(dst->sa_data, &af, sizeof(af)); | bcopy(dst->sa_data, &af, sizeof(af)); | ||||
else | else | ||||
af = dst->sa_family; | af = RO_GET_FAMILY(ro, dst); | ||||
if (bpf_peers_present(ifp->if_bpf)) | if (bpf_peers_present(ifp->if_bpf)) | ||||
bpf_mtap2(ifp->if_bpf, &af, sizeof(af), m); | bpf_mtap2(ifp->if_bpf, &af, sizeof(af), m); | ||||
m->m_pkthdr.rcvif = ifp; | m->m_pkthdr.rcvif = ifp; | ||||
if_inc_counter(ifp, IFCOUNTER_OPACKETS, 1); | if_inc_counter(ifp, IFCOUNTER_OPACKETS, 1); | ||||
if_inc_counter(ifp, IFCOUNTER_OBYTES, m->m_pkthdr.len); | if_inc_counter(ifp, IFCOUNTER_OBYTES, m->m_pkthdr.len); | ||||
▲ Show 20 Lines • Show All 50 Lines • Show Last 20 Lines |