diff options
Diffstat (limited to 'sys/netinet/ip_var.h')
-rw-r--r-- | sys/netinet/ip_var.h | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/sys/netinet/ip_var.h b/sys/netinet/ip_var.h index 23d1d00..4bd600d 100644 --- a/sys/netinet/ip_var.h +++ b/sys/netinet/ip_var.h @@ -65,6 +65,8 @@ struct ipq { struct mbuf *ipq_frags; /* to ip headers of fragments */ struct in_addr ipq_src,ipq_dst; u_char ipq_nfrags; /* # frags in this packet */ + u_int32_t ipq_div_info; /* ipfw divert port & flags */ + u_int16_t ipq_div_cookie; /* ipfw divert cookie */ struct label *ipq_label; /* MAC label */ }; #endif /* _KERNEL */ @@ -195,23 +197,14 @@ extern int (*ip_rsvp_vif)(struct socket *, struct sockopt *); extern void (*ip_rsvp_force_done)(struct socket *); extern void (*rsvp_input_p)(struct mbuf *m, int off); -#define M_FASTFWD_OURS M_PROTO1 /* sent by ip_fastforward to ip_input */ -/* - * Return the next hop address associated with the mbuf; if any. - * If a tag is present it is also removed. - */ -static __inline struct sockaddr_in * -ip_claim_next_hop(struct mbuf *m) -{ - struct m_tag *mtag = m_tag_find(m, PACKET_TAG_IPFORWARD, NULL); - if (mtag) { - struct sockaddr_in *sin = *(struct sockaddr_in **)(mtag+1); - m_tag_delete(m, mtag); - return sin; - } else - return NULL; -} +#ifdef IPDIVERT +void div_init(void); +void div_input(struct mbuf *, int); +void div_ctlinput(int, struct sockaddr *, void *); +void divert_packet(struct mbuf *m, int incoming, int port, int rule); +extern struct pr_usrreqs div_usrreqs; +#endif #ifdef PFIL_HOOKS extern struct pfil_head inet_pfil_hook; |