Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/ip_divert.c
Show First 20 Lines • Show All 63 Lines • ▼ Show 20 Lines | |||||
#include <netinet/in_systm.h> | #include <netinet/in_systm.h> | ||||
#include <netinet/in_var.h> | #include <netinet/in_var.h> | ||||
#include <netinet/ip.h> | #include <netinet/ip.h> | ||||
#include <netinet/ip_var.h> | #include <netinet/ip_var.h> | ||||
#ifdef INET6 | #ifdef INET6 | ||||
#include <netinet/ip6.h> | #include <netinet/ip6.h> | ||||
#include <netinet6/ip6_var.h> | #include <netinet6/ip6_var.h> | ||||
#endif | #endif | ||||
#ifdef SCTP | #if defined(SCTP) || defined(SCTP_SUPPORT) | ||||
#include <netinet/sctp_crc32.h> | #include <netinet/sctp_crc32.h> | ||||
#endif | #endif | ||||
#include <security/mac/mac_framework.h> | #include <security/mac/mac_framework.h> | ||||
/* | /* | ||||
* Divert sockets | * Divert sockets | ||||
*/ | */ | ||||
▲ Show 20 Lines • Show All 124 Lines • ▼ Show 20 Lines | if (m->m_len < sizeof(struct ip) && | ||||
return; | return; | ||||
ip = mtod(m, struct ip *); | ip = mtod(m, struct ip *); | ||||
/* Delayed checksums are currently not compatible with divert. */ | /* Delayed checksums are currently not compatible with divert. */ | ||||
if (m->m_pkthdr.csum_flags & CSUM_DELAY_DATA) { | if (m->m_pkthdr.csum_flags & CSUM_DELAY_DATA) { | ||||
in_delayed_cksum(m); | in_delayed_cksum(m); | ||||
m->m_pkthdr.csum_flags &= ~CSUM_DELAY_DATA; | m->m_pkthdr.csum_flags &= ~CSUM_DELAY_DATA; | ||||
} | } | ||||
#ifdef SCTP | #if defined(SCTP) || defined(SCTP_SUPPORT) | ||||
if (m->m_pkthdr.csum_flags & CSUM_SCTP) { | if (m->m_pkthdr.csum_flags & CSUM_SCTP) { | ||||
sctp_delayed_cksum(m, (uint32_t)(ip->ip_hl << 2)); | sctp_delayed_cksum(m, (uint32_t)(ip->ip_hl << 2)); | ||||
m->m_pkthdr.csum_flags &= ~CSUM_SCTP; | m->m_pkthdr.csum_flags &= ~CSUM_SCTP; | ||||
} | } | ||||
#endif | #endif | ||||
bzero(&divsrc, sizeof(divsrc)); | bzero(&divsrc, sizeof(divsrc)); | ||||
divsrc.sin_len = sizeof(divsrc); | divsrc.sin_len = sizeof(divsrc); | ||||
divsrc.sin_family = AF_INET; | divsrc.sin_family = AF_INET; | ||||
▲ Show 20 Lines • Show All 613 Lines • Show Last 20 Lines |