rem: int raw_input(struct mbuf *m0, struct sockproto *proto, struct sockaddr *src,
add: static int raw_input(struct mbuf *m0, struct sockproto *proto, struct sockaddr *src,
context: int raw_input(struct mbuf *m0, struct sockproto *proto, struct sockaddr *src,              struct sockaddr *dst){	struct rawcb *rp;	struct mbuf *m = m0;	int sockets = 0;	struct socket *last;		last = NULL;	for (rp = rawcb.rcb_next; rp != &rawcb; rp = rp->rcb_next) {		if (rp->rcb_proto.sp_family != proto->sp_family)			continue;		if (rp->rcb_proto.sp_protocol &&		    rp->rcb_proto.sp_protocol != proto->sp_protocol)			continue;#define equal(a1, a2) (memcmp((caddr_t)a1, (caddr_t)a2, a1->sa_len) == 0)		if (rp->rcb_laddr && !equal(rp->rcb_laddr, dst))			continue;		if (rp->rcb_faddr && !equal(rp->rcb_faddr, src))			continue;		if (last) {			struct mbuf *n;			if ((n = m_copym(m, 0, M_COPYALL))) {				if (sockbuf_appendaddr(&last->so_rcv, src, n, NULL) == 0)					m_freem(n);				else {					sorwakeup(last);					sockets++;				}			}		}		last = rp->rcb_socket;	}	if (last) {		if (sockbuf_appendaddr(&last->so_rcv, src, m, NULL) == 0)			m_freem(m);		else {			sorwakeup(last);			sockets++;		}	} else 		m_freem(m);	return 0;}