printf("packetfilter: dropping first fragment");
printf("packetfilter: dropping short packet");
pull_hdr(struct ifnet *ifp, struct mbuf **m, struct ip *h, int off, int *action,    u_int8_t len){	u_int16_t fragoff = (h->ip_off & IP_OFFMASK) << 3;	struct mbuf *n;	int newoff;	if (fragoff) {		if (fragoff >= len)			*action = PF_PASS;		else {			*action = PF_DROP;			printf("packetfilter: dropping following fragment");			print_ip(ifp, h);		}		return NULL;	}	if ((h->ip_len - off) < len) {		*action = PF_DROP;		printf("packetfilter: dropping first fragment");		print_ip(ifp, h);		return NULL;	}	/*	 * XXX should use m_copydata, but NAT portion tries to touch mbuf	 * directly	 */	n = m_pulldown((*m), off, len, &newoff);	if (!n) {		printf("packetfilter: pullup proto header failed\n");		*action = PF_DROP;		*m = NULL;		return NULL;	}	return mtod(n, char *) + newoff;}