Mercurial > illumos > illumos-gate
changeset 3894:7c0146a89509
6483377 ipfilter option reply-to not working
author | jojemann |
---|---|
date | Mon, 26 Mar 2007 05:47:53 -0700 |
parents | 4115db3e65ea |
children | 811da2ad2260 |
files | usr/src/uts/common/inet/ipf/ip_fil_solaris.c usr/src/uts/common/inet/ipf/ip_nat.c usr/src/uts/common/inet/ipf/ip_state.c |
diffstat | 3 files changed, 8 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/inet/ipf/ip_fil_solaris.c Sun Mar 25 23:58:42 2007 -0700 +++ b/usr/src/uts/common/inet/ipf/ip_fil_solaris.c Mon Mar 26 05:47:53 2007 -0700 @@ -1754,20 +1754,14 @@ saveifp = fin->fin_ifp; fin->fin_ifp = (void *)inj_data.ni_physical; + fin->fin_flx &= ~FI_STATE; fin->fin_out = 1; (void) fr_acctpkt(fin, &pass); fin->fin_fr = NULL; if (!fr || !(fr->fr_flags & FR_RETMASK)) (void) fr_checkstate(fin, &pass); - switch (fr_checknatout(fin, NULL)) - { - /* FALLTHROUGH */ - case 0 : - case 1 : - break; - case -1 : + if (fr_checknatout(fin, NULL) == -1) goto bad_fastroute; - } fin->fin_out = 0; fin->fin_ifp = saveifp;
--- a/usr/src/uts/common/inet/ipf/ip_nat.c Sun Mar 25 23:58:42 2007 -0700 +++ b/usr/src/uts/common/inet/ipf/ip_nat.c Mon Mar 26 05:47:53 2007 -0700 @@ -1044,7 +1044,7 @@ (void) strncpy(n->in_ifnames[1], n->in_ifnames[0], LIFNAMSIZ); n->in_ifps[1] = n->in_ifps[0]; } else { - n->in_ifps[1] = fr_resolvenic(n->in_ifnames[0], 4, ifs); + n->in_ifps[1] = fr_resolvenic(n->in_ifnames[1], 4, ifs); } if (n->in_plabel[0] != '\0') { @@ -3208,16 +3208,9 @@ int nflags; void *ifp; u_int hv; - frentry_t *fr; ipf_stack_t *ifs = fin->fin_ifs; - fr = fin->fin_fr; - - if ((fr != NULL) && !(fr->fr_flags & FR_DUP) && - fr->fr_tif.fd_ifp && fr->fr_tif.fd_ifp != (void *)-1) - ifp = fr->fr_tif.fd_ifp; - else - ifp = fin->fin_ifp; + ifp = fin->fin_ifp; srcip = src.s_addr; sflags = flags & IPN_TCPUDPICMP; @@ -3569,8 +3562,9 @@ fr = fin->fin_fr; sifp = fin->fin_ifp; if ((fr != NULL) && !(fr->fr_flags & FR_DUP) && - fr->fr_tif.fd_ifp && fr->fr_tif.fd_ifp != (void *)-1) - fin->fin_ifp = fr->fr_tif.fd_ifp; + fr->fr_tifs[fin->fin_rev].fd_ifp && + fr->fr_tifs[fin->fin_rev].fd_ifp != (void *)-1) + fin->fin_ifp = fr->fr_tifs[fin->fin_rev].fd_ifp; ifp = fin->fin_ifp; if (!(fin->fin_flx & FI_SHORT) && (fin->fin_off == 0)) {
--- a/usr/src/uts/common/inet/ipf/ip_state.c Sun Mar 25 23:58:42 2007 -0700 +++ b/usr/src/uts/common/inet/ipf/ip_state.c Mon Mar 26 05:47:53 2007 -0700 @@ -703,6 +703,7 @@ fr_resolvedest(&fr->fr_tif, fr->fr_v, ifs); fr_resolvedest(&fr->fr_dif, fr->fr_v, ifs); + fr_resolvedest(&fr->fr_rif, fr->fr_v, ifs); /* * send a copy back to userland of what we ended up