fin_flx
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_ICMPERR;
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_TCPUDP;
fin->fin_flx |= FI_SHORT;
fin->fin_flx |= FI_FRAGBODY;
if (fin->fin_flx & FI_SHORT)
fin->fin_flx |= FI_DONTCACHE;
fin->fin_flx |= FI_DONTCACHE;
if ((fin->fin_flx & FI_TCPUDP) && (fin->fin_dlen > 3) && !off)
if ((passt & FR_KEEPSTATE) && (fin->fin_flx & FI_OOW))
if (fin->fin_flx & FI_DONTCACHE)
!(fin->fin_flx & FI_STATE)) {
fin->fin_flx |= FI_DONTCACHE;
((fin->fin_flx & FI_DONTCACHE) == 0)) {
if (fin->fin_flx & FI_FRAG) {
if ((pass & FR_KEEPSTATE) && !(fin->fin_flx & FI_STATE)) {
fin->fin_flx = qpi->qpi_flags & (FI_NOCKSUM|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_BADSRC;
fin->fin_flx |= FI_LOWTTL;
fin->fin_flx |= FI_BADSRC;
fin->fin_flx |= FI_LOWTTL;
if (fin->fin_flx & FI_SHORT) {
if ((fin->fin_flx & (FI_FRAG|FI_BAD)) == FI_FRAG)
fin->fin_flx &= ~FI_STATE;
if ((pass & (FR_RETRST|FR_RETICMP)) && ((fin->fin_flx & FI_OOW) == 0)) {
!(fin->fin_flx & FI_SHORT)) {
if (FR_ISBLOCK(pass) && (fin->fin_flx & FI_NEWNAT))
FR_VERBOSE(("fin_flx %#x pass %#x ", fin->fin_flx, pass));
fin->fin_flx |= FI_SHORT;
while (go && !(fin->fin_flx & (FI_BAD|FI_SHORT))) {
fin->fin_flx |= FI_BAD;
fin->fin_flx |= ip6exthdr[i].ol_bit;
fin->fin_flx |= FI_V6EXTHDR;
fin->fin_flx |= FI_SHORT;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
if (fin->fin_off == 0 && (fin->fin_flx & FI_FRAG) != 0)
fin->fin_flx |= FI_BAD;
if ((fin->fin_flx & FI_NOCKSUM) != 0)
if ((fin->fin_flx & (FI_FRAG|FI_SHORT|FI_BAD)) != 0)
if ((fin->fin_flx & FI_COALESCE) != 0)
fin->fin_flx |= FI_FRAG;
fin->fin_flx |= FI_MOREFRAG;
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_FRAGBODY;
fin->fin_flx |= FI_ICMPQUERY;
fin->fin_flx |= FI_ICMPERR;
fin->fin_flx |= FI_SHORT;
fin->fin_flx |= FI_SHORT;
fin->fin_flx |= FI_BAD;
(fin->fin_flx & FI_FRAG))) {
fnew.fin_flx = FI_NOCKSUM | FI_GENERATED;
!(fin->fin_flx & FI_SHORT))
fin->fin_flx |= FI_BAD;
fin->fin_flx |= FI_BAD;
if ((fin->fin_flx & FI_COALESCE) != 0)
fin->fin_flx |= FI_COALESCE;
if (!(fin->fin_flx & FI_GENERATED) &&
if (!(fin->fin_flx & FI_GENERATED) &&
fin->fin_flx &= ~FI_STATE;
if ((fin->fin_flx & (FI_FRAG|FI_BAD)) != FI_FRAG)
if ((fin->fin_flx & (FI_FRAG|FI_BAD)) != FI_FRAG)
if (fin->fin_flx & FI_SHORT) {
if (!(fin->fin_flx & FI_MOREFRAG))
oflx = fin->fin_flx;
if (!(oflx & FI_BAD) && (fin->fin_flx & FI_BAD)) {
ipfl.fl_lflags = fin->fin_flx;
fin->fin_flx |= FI_NEWNAT;
if ((fin->fin_hlen != sizeof(ip_t)) || !(fin->fin_flx & FI_ICMPERR))
if ((fin->fin_flx & (FI_SHORT|FI_FRAGBODY)))
if ((fin->fin_flx & FI_IGNORE) != 0)
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)) {
else if ((fin->fin_flx & FI_FRAG) && (nat = fr_nat_knownfrag(fin)))
if ((fin->fin_off != 0) && (fin->fin_flx & FI_TCPUDP))
fin->fin_flx |= FI_BADNAT;
if ((natadd != 0) && (fin->fin_flx & FI_FRAG))
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)) {
else if ((fin->fin_flx & FI_FRAG) && (nat = fr_nat_knownfrag(fin)))
if ((fin->fin_off != 0) && (fin->fin_flx & FI_TCPUDP))
fin->fin_flx |= FI_BADNAT;
if ((natadd != 0) && (fin->fin_flx & FI_FRAG))
if (!(fin->fin_flx & FI_SHORT) && (fin->fin_off == 0)) {
fin->fin_flx |= FI_NATED;
if (!(fin->fin_flx & FI_ICMPERR))
if ((fin->fin_flx & (FI_SHORT|FI_FRAGBODY)))
if ((fin->fin_flx & FI_IGNORE) != 0)
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 = fr_nat_knownfrag(fin)))
fin->fin_flx |= FI_BADNAT;
if ((natadd != 0) && (fin->fin_flx & FI_FRAG))
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 = fr_nat_knownfrag(fin)))
fin->fin_flx |= FI_BADNAT;
if ((natadd != 0) && (fin->fin_flx & FI_FRAG))
if (!(fin->fin_flx & FI_SHORT) && (fin->fin_off == 0)) {
fin->fin_flx |= FI_NATED;
if ((fin->fin_flx & (FI_SHORT|FI_BAD)) != 0) {
fin->fin_flx);
if (fin->fin_flx & FI_BAD) {
printf("appr_check: flx 0x%x (BAD)\n", fin->fin_flx);
if ((fin->fin_dlen > 0) && !(fin->fin_flx & FI_COALESCE))
printf("appr_check: fr_coalesce failed %x\n", fin->fin_flx);
(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_OOW;
fin->fin_flx |= FI_OOW;
fin->fin_flx |= FI_NEG_OOW;
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_OOW;
oow |= fin->fin_flx & FI_OOW;
fin->fin_flx |= oow;
if ((fin->fin_flx & FI_FRAG) && FR_ISPASS(pass))
(fin->fin_flx & (FI_SHORT|FI_STATE|FI_FRAGBODY|FI_BAD)))
if ((fin->fin_flx & FI_TCPUDP) ||
fin->fin_flx |= FI_STATE;
!(fin->fin_flx & FI_ICMPERR))
ofin.fin_flx = FI_NOCKSUM;
ofin.fin_flx &= ~(FI_BAD|FI_SHORT);
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;
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))
fi.fin_flx &= ~(FI_TCPUDP|FI_STATE|FI_FRAG);
fi.fin_flx |= FI_IGNORE;
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)