fin_flx
if (fin->fin_flx & FI_SHORT)
fin->fin_flx |= FI_BAD;
if (fin->fin_flx & FI_SHORT)
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_AH;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_SHORT;
fin->fin_flx |= FI_SHORT;
fin->fin_flx |= FI_ICMPQUERY;
fin->fin_flx |= FI_ICMPQUERY;
fin->fin_flx |= FI_ICMPQUERY;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_ICMPERR;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_TCPUDP;
if ((fin->fin_flx & FI_SHORT) != 0) {
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
if (fin->fin_flx & FI_BAD) {
fin->fin_flx |= FI_TCPUDP;
fin->fin_flx |= FI_SHORT;
fin->fin_flx |= FI_AH;
if (((fin->fin_flx & FI_SHORT) != 0) || (fin->fin_off != 0)) {
fin->fin_flx |= FI_MULTICAST|FI_MBCAST;
fin->fin_flx |= FI_SHORT; /* RFC 3128 */
fin->fin_flx |= FI_FRAGBODY;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
if ((fin->fin_flx & FI_TCPUDP) && (fin->fin_dlen > 3) && !off)
!(fin->fin_flx & FI_STATE)) {
if (fin->fin_flx & FI_FRAG) {
fin->fin_flx |= FI_MBCAST|FI_BROADCAST;
fin->fin_flx |= FI_MBCAST|FI_MULTICAST;
fin->fin_flx |= FI_MBCAST|FI_MULTICAST;
fin->fin_flx |= FI_MBCAST|FI_MULTICAST;
fin->fin_flx |= FI_MBCAST|FI_BROADCAST;
fin->fin_flx |= FI_MBCAST|FI_MULTICAST;
fin->fin_flx |= FI_MBCAST|FI_MULTICAST;
fin->fin_flx |= FI_MBCAST|FI_BROADCAST;
fin->fin_flx |= FI_BADSRC;
fin->fin_flx |= FI_LOWTTL;
fin->fin_flx |= FI_LOWTTL;
if (fin->fin_flx & FI_SHORT) {
if ((fin->fin_flx & FI_FRAG) != 0)
!(fin->fin_flx & FI_STATE)) {
if ((fr != NULL) && !(fin->fin_flx & FI_STATE)) {
fin->fin_flx &= ~FI_STATE;
!(fin->fin_flx & FI_SHORT)) {
if (((fin->fin_flx & FI_OOW) != 0) ||
if (FR_ISBLOCK(pass) && (fin->fin_flx & FI_NEWNAT))
if (fin->fin_m == NULL && fin->fin_flx & FI_BAD &&
FR_VERBOSE(("fin_flx %#x pass %#x ", fin->fin_flx, pass));
fin->fin_flx |= FI_SHORT;
fin->fin_flx |= FI_MULTICAST|FI_MBCAST;
while (go && !(fin->fin_flx & FI_SHORT)) {
fin->fin_flx |= ip6exthdr[i].ol_bit;
if ((go != 0) && (fin->fin_flx & FI_FRAG) && (fin->fin_off == 0)) {
fin->fin_flx |= FI_BAD;
if ((fin->fin_flx & FI_FRAG) != 0)
fin->fin_flx |= FI_V6EXTHDR;
fin->fin_flx |= FI_SHORT;
fin->fin_flx |= FI_BAD;
if ((fin->fin_flx & (FI_FRAG|FI_SHORT|FI_BAD)) != 0)
if (fin->fin_flx & FI_FRAG)
fin->fin_flx |= FI_BAD;
if ((fin->fin_flx & FI_COALESCE) != 0)
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_FRAG;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_FRAGBODY;
if ((fin->fin_flx & FI_COALESCE) == 0)
fin->fin_flx |= FI_BAD;
fino->fin_flx = fin->fin_flx;
fin->fin_flx |= FI_ICMPQUERY;
fin->fin_flx |= FI_ICMPERR;
fin->fin_flx |= FI_BAD;
if ((fin->fin_flx & (FI_SHORT|FI_BAD)) == 0) {
(fin->fin_flx & FI_FRAG))) {
fin->fin_flx |= fra->fra_flx;
fra->fra_flx = fra->fra_info.fin_flx & (FI_STATE|FI_NATED);
fra->fra_info.fin_flx &= ~(FI_STATE|FI_NATED);
if ((fin->fin_dlen < sizeof(u_short)) || (fin->fin_flx & FI_FRAG))
if ((fin->fin_flx & FI_NOCKSUM) != 0)
if ((fin->fin_flx & FI_SHORT) != 0)
fin->fin_flx |= FI_BAD;
if (fin->fin_p == IPPROTO_UDP && (fin->fin_flx &
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
if ((fin->fin_flx & FI_NOCKSUM) != 0) {
if ((fin->fin_flx & FI_SHORT) != 0) {
fin->fin_flx |= FI_BAD;
if ((fin->fin_flx & FI_COALESCE) != 0)
fin->fin_flx |= FI_COALESCE;
fnew.fin_flx = FI_NOCKSUM;
if ((fin->fin_p == IPPROTO_ICMP) && !(fin->fin_flx & FI_SHORT))
if ((fin->fin_flx & (FI_FRAG|FI_BAD)) != FI_FRAG) {
if (fin->fin_flx & FI_SHORT) {
if ((fin->fin_flx & FI_BAD) != 0) {
fin->fin_flx |= FI_BAD;
if (fin->fin_flx & FI_BAD) {
fin->fin_flx |= FI_STATE;
fin->fin_flx |= FI_DOCKSUM;
fin->fin_flx |= FI_DOCKSUM;
fin->fin_flx |= FI_DOCKSUM;
fi.fin_flx |= FI_IGNORE;
fi.fin_flx &= FI_LOWTTL|FI_FRAG|FI_TCPUDP|FI_OPTIONS|FI_IGNORE;
fi.fin_flx |= FI_IGNORE;
fi.fin_flx &= FI_LOWTTL|FI_FRAG|FI_TCPUDP|FI_OPTIONS|FI_IGNORE;
fin->fin_flx |= FI_DOCKSUM;
fi.fin_flx &= ~(FI_TCPUDP|FI_STATE|FI_FRAG);
fi.fin_flx |= FI_IGNORE;
fi.fin_flx &= ~(FI_TCPUDP|FI_STATE|FI_FRAG);
fi.fin_flx |= FI_IGNORE;
if ((fin->fin_dlen < sizeof(cookies)) || (fin->fin_flx & FI_FRAG))
fin->fin_flx |= FI_DOCKSUM;
ipfl.fl_lflags = fin->fin_flx;
if ((fin->fin_hlen != sizeof(ip_t)) || !(fin->fin_flx & FI_ICMPERR)) {
if ((fin->fin_flx & (FI_SHORT|FI_FRAGBODY))) {
if (softn->ipf_nat_stats.ns_wilds == 0 || (fin->fin_flx & FI_NOWILD)) {
if ((fin->fin_flx & FI_IGNORE) != 0)
if (softn->ipf_nat_stats.ns_wilds == 0 || (fin->fin_flx & FI_NOWILD)) {
if ((fin->fin_flx & FI_IGNORE) != 0)
if (!(fin->fin_flx & FI_TCPUDP) ||
(fin->fin_flx & (FI_SHORT|FI_FRAGBODY))) {
if (!(fin->fin_flx & FI_SHORT) && (fin->fin_off == 0)) {
if ((fin->fin_flx & FI_ICMPQUERY) != 0)
else if ((fin->fin_flx & FI_FRAG) && (nat = ipf_frag_natknown(fin)))
fin->fin_flx |= FI_BADNAT;
if ((natadd != 0) && (fin->fin_flx & FI_FRAG) && (np != NULL))
fin->fin_flx |= FI_NATED;
if (!(fin->fin_flx & FI_SHORT) && (fin->fin_off == 0)) {
fin->fin_flx |= FI_NATED;
if (!(fin->fin_flx & FI_SHORT) && (fin->fin_off == 0)) {
if ((fin->fin_flx & FI_ICMPQUERY) != 0) {
else if ((fin->fin_flx & FI_FRAG) && (nat = ipf_frag_natknown(fin)))
fin->fin_flx |= FI_BADNAT;
if ((natadd != 0) && (fin->fin_flx & FI_FRAG))
if ((fin->fin_flx & FI_ICMPERR) == 0) {
if ((fin->fin_flx & FI_ICMPERR) == 0) {
fin->fin_flx |= FI_NATED;
if (!(fin->fin_flx & FI_SHORT) && (fin->fin_off == 0)) {
fin->fin_flx |= FI_NATED;
frnat.fin_flx |= FI_TCPUDP;
frnat.fin_flx &= ~FI_TCPUDP;
if ((fin->fin_flx & FI_ICMPERR) != 0) {
if (!(fin->fin_flx & FI_ICMPERR)) {
if ((fin->fin_flx & (FI_SHORT|FI_FRAGBODY))) {
if (softn->ipf_nat_stats.ns_wilds == 0 || (fin->fin_flx & FI_NOWILD)) {
if ((fin->fin_flx & FI_IGNORE) != 0)
if (softn->ipf_nat_stats.ns_wilds == 0 || (fin->fin_flx & FI_NOWILD)) {
if ((fin->fin_flx & FI_IGNORE) != 0)
if (!(fin->fin_flx & FI_TCPUDP) ||
(fin->fin_flx & (FI_SHORT|FI_FRAGBODY))) {
if (!(fin->fin_flx & FI_SHORT) && (fin->fin_off == 0)) {
if ((fin->fin_flx & FI_ICMPQUERY) != 0)
else if ((fin->fin_flx & FI_FRAG) && (nat = ipf_frag_natknown(fin)))
fin->fin_flx |= FI_BADNAT;
if ((natadd != 0) && (fin->fin_flx & FI_FRAG) && (np != NULL))
fin->fin_flx |= FI_NATED;
if (!(fin->fin_flx & FI_SHORT) && (fin->fin_off == 0)) {
fin->fin_flx |= FI_NATED;
if (!(fin->fin_flx & FI_SHORT) && (fin->fin_off == 0)) {
if ((fin->fin_flx & FI_ICMPQUERY) != 0) {
else if ((fin->fin_flx & FI_FRAG) && (nat = ipf_frag_natknown(fin)))
fin->fin_flx |= FI_BADNAT;
if ((natadd != 0) && (fin->fin_flx & FI_FRAG))
if ((fin->fin_flx & FI_ICMPERR) == 0) {
if ((fin->fin_flx & FI_ICMPERR) == 0) {
fin->fin_flx |= FI_NATED;
if (!(fin->fin_flx & FI_SHORT) && (fin->fin_off == 0)) {
fin->fin_flx |= FI_NATED;
frnat.fin_flx |= FI_TCPUDP;
frnat.fin_flx &= ~FI_TCPUDP;
if ((fin->fin_flx & FI_ICMPERR) != 0) {
fi.fin_flx &= ~(FI_TCPUDP|FI_STATE|FI_FRAG);
fi.fin_flx |= FI_IGNORE;
if ((fin->fin_flx & (FI_SHORT|FI_BAD)) != 0) {
fin->fin_flx);
if (fin->fin_flx & FI_BAD) {
fin->fin_flx);
if ((fin->fin_dlen > 0) && !(fin->fin_flx & FI_COALESCE))
"coalesce failed", fin->fin_flx);
if (fin->fin_flx & FI_DOCKSUM)
fi.fin_flx |= FI_IGNORE;
fi.fin_flx |= FI_IGNORE;
fi.fin_flx &= FI_LOWTTL|FI_FRAG|FI_TCPUDP|FI_OPTIONS|FI_IGNORE;
fi.fin_flx |= FI_IGNORE;
fi.fin_flx &= ~FI_IGNORE;
fi.fin_flx |= FI_NATED;
fi.fin_flx &= ~FI_STATE;
if ((fin->fin_flx & (FI_FRAG|FI_SHORT)) != 0)
if ((fin->fin_flx & (FI_FRAG|FI_SHORT)) != 0)
if (fin->fin_flx & (FI_SHORT|FI_STATE|FI_FRAGBODY|FI_BAD)) {
if ((fin->fin_flx & FI_OOW) && !(fin->fin_tcpf & TH_SYN)) {
(fin->fin_flx & (FI_MULTICAST|FI_BROADCAST|FI_MBCAST))) {
if ((fin->fin_flx & FI_IGNORE) == 0) {
fin->fin_flx |= FI_BAD;
if ((fin->fin_flx & FI_IGNORE) == 0) {
is->is_flx[out][0] = fin->fin_flx & FI_CMP;
fin->fin_flx |= FI_STATE;
if (fin->fin_flx & FI_FRAG)
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_OOW;
fin->fin_flx |= FI_OOW;
if (!(fin->fin_flx & (FI_MULTICAST|FI_MBCAST))){
if (!(fin->fin_flx & (FI_MULTICAST|FI_MBCAST))){
flx = fin->fin_flx & cmask;
if ((fin->fin_flx & FI_IGNORE) != 0) {
!(fin->fin_flx & FI_ICMPERR)) {
ofin.fin_flx = FI_NOCKSUM;
ofin.fin_flx &= ~(FI_BAD|FI_SHORT);
if ((ofin.fin_flx & FI_ICMPERR) != 0) {
(fin->fin_flx & (FI_MULTICAST|FI_BROADCAST|FI_MBCAST))) {
((fin->fin_flx & FI_NOWILD) == 0) &&
fin->fin_flx &= ~FI_OOW;
oow |= fin->fin_flx & FI_OOW;
((fin->fin_flx & FI_NOWILD) == 0)) {
fin->fin_flx |= oow;
if (fin->fin_flx & (FI_SHORT|FI_FRAGBODY|FI_BAD)) {
if ((fin->fin_flx & FI_TCPUDP) ||
if (fin->fin_flx & FI_FRAG && FR_ISPASS(is->is_pass) &&
fin->fin_flx |= FI_STATE;
!(fin->fin_flx & FI_ICMPERR)) {
ofin.fin_flx = FI_NOCKSUM;
ofin.fin_flx &= ~(FI_BAD|FI_SHORT);
if (ofin.fin_flx & FI_ICMPERR) {
fin->fin_flx |= FI_NOWILD;
fin->fin_flx |= FI_NOWILD;
fi.fin_flx |= FI_IGNORE;
fi.fin_flx &= FI_LOWTTL|FI_FRAG|FI_TCPUDP|FI_OPTIONS|FI_IGNORE;