Home | History | Annotate | Download | only in npf

Lines Matching refs:npc

250 npf_tcpsaw(const npf_cache_t *npc, tcp_seq *seq, tcp_seq *ack, uint32_t *win)
252 const struct tcphdr *th = npc->npc_l4.tcp;
255 KASSERT(npf_iscached(npc, NPC_TCP));
262 if (npf_iscached(npc, NPC_IP4)) {
263 const struct ip *ip = npc->npc_ip.v4;
264 return ntohs(ip->ip_len) - npc->npc_hlen - thlen;
265 } else if (npf_iscached(npc, NPC_IP6)) {
266 const struct ip6_hdr *ip6 = npc->npc_ip.v6;
268 (npc->npc_hlen - sizeof(*ip6)) - thlen;
277 npf_fetch_tcpopts(npf_cache_t *npc, uint16_t *mss, int *wscale)
279 nbuf_t *nbuf = npc->npc_nbuf;
280 const struct tcphdr *th = npc->npc_l4.tcp;
286 KASSERT(npf_iscached(npc, NPC_IP46));
287 KASSERT(npf_iscached(npc, NPC_TCP));
299 const int step = npc->npc_hlen + sizeof(struct tcphdr);
342 npf_recache(npc);
351 npf_set_mss(npf_cache_t *npc, uint16_t mss, uint16_t *old, uint16_t *new,
354 nbuf_t *nbuf = npc->npc_nbuf;
355 const struct tcphdr *th = npc->npc_l4.tcp;
360 KASSERT(npf_iscached(npc, NPC_IP46));
361 KASSERT(npf_iscached(npc, NPC_TCP));
373 const int step = npc->npc_hlen + sizeof(struct tcphdr);
418 npf_recache(npc);
424 npf_cache_ip(npf_cache_t *npc, nbuf_t *nbuf)
458 npc->npc_alen = sizeof(struct in_addr);
459 npc->npc_ips[NPF_SRC] = (npf_addr_t *)&ip->ip_src;
460 npc->npc_ips[NPF_DST] = (npf_addr_t *)&ip->ip_dst;
461 npc->npc_hlen = ip->ip_hl << 2;
462 npc->npc_proto = ip->ip_p;
464 npc->npc_ip.v4 = ip;
487 npc->npc_proto = ip6->ip6_nxt;
488 npc->npc_hlen = hlen;
500 switch (npc->npc_proto) {
532 npc->npc_proto = ip6e->ip6e_nxt;
533 npc->npc_hlen += hlen;
551 npc->npc_alen = sizeof(struct in6_addr);
552 npc->npc_ips[NPF_SRC] = (npf_addr_t *)&ip6->ip6_src;
553 npc->npc_ips[NPF_DST] = (npf_addr_t *)&ip6->ip6_dst;
555 npc->npc_ip.v6 = ip6;
566 npf_cache_tcp(npf_cache_t *npc, nbuf_t *nbuf, unsigned hlen)
577 npc->npc_l4.tcp = th;
582 npf_cache_ether(npf_cache_t *npc)
584 struct mbuf *m = npc->npc_nbuf->nb_mbuf0;
587 nbuf_unset_flag(npc->npc_nbuf, NBUF_DATAREF_RESET);
595 memcpy(&npc->ether, ether, sizeof(npc->ether));
597 KASSERT(nbuf_flag_p(npc->npc_nbuf, NBUF_DATAREF_RESET) == 0);
608 npf_cache_all(npf_cache_t *npc)
610 nbuf_t *nbuf = npc->npc_nbuf;
625 flags = npf_cache_ip(npc, nbuf);
630 hlen = npc->npc_hlen;
637 switch (npc->npc_proto) {
640 l4flags = npf_cache_tcp(npc, nbuf, hlen);
644 npc->npc_l4.udp = nbuf_advance(nbuf, hlen,
650 npc->npc_l4.icmp = nbuf_advance(nbuf, hlen,
656 npc->npc_l4.icmp6 = nbuf_advance(nbuf, hlen,
668 if (__predict_false(l4flags && !npc->npc_l4.hdr)) {
677 npc->npc_info |= flags;
684 npc->npc_info |= flags;
689 npf_recache(npf_cache_t *npc)
691 nbuf_t *nbuf = npc->npc_nbuf;
692 const int mflags __diagused = npc->npc_info & (NPC_IP46 | NPC_LAYER4);
696 npc->npc_info = 0;
697 flags = npf_cache_all(npc);
707 npc, u_int which, const npf_addr_t *addr)
709 KASSERT(npf_iscached(npc, NPC_IP46));
712 memcpy(npc->npc_ips[which], addr, npc->npc_alen);
720 npf_rwrport(const npf_cache_t *npc, u_int which, const in_port_t port)
722 const int proto = npc->npc_proto;
725 KASSERT(npf_iscached(npc, NPC_TCP) || npf_iscached(npc, NPC_UDP));
731 struct tcphdr *th = npc->npc_l4.tcp;
734 struct udphdr *uh = npc->npc_l4.udp;
745 npf_rwrcksum(const npf_cache_t *npc, u_int which,
748 const npf_addr_t *oaddr = npc->npc_ips[which];
749 const int proto = npc->npc_proto;
750 const int alen = npc->npc_alen;
756 KASSERT(npf_iscached(npc, NPC_LAYER4));
759 if (npf_iscached(npc, NPC_IP4)) {
760 struct ip *ip = npc->npc_ip.v4;
767 KASSERT(npf_iscached(npc, NPC_IP6));
778 KASSERT(npf_iscached(npc, NPC_TCP));
779 th = npc->npc_l4.tcp;
784 KASSERT(npf_iscached(npc, NPC_UDP));
785 uh = npc->npc_l4.udp;
815 npf_napt_rwr(const npf_cache_t *npc, u_int which,
818 const unsigned proto = npc->npc_proto;
825 if (!npf_rwrcksum(npc, which, addr, port)) {
828 if (!npf_rwrip(npc, which, addr)) {
840 if (!npf_rwrport(npc, which, port)) {
846 KASSERT(npf_iscached(npc, NPC_ICMP));
859 npf_npt66_rwr(const npf_cache_t *npc, u_int which, const npf_addr_t *pref,
862 npf_addr_t *addr = npc->npc_ips[which];
868 if (!npf_iscached(npc, NPC_IP6)) {