summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorAlexandr Nedvedicky <Alexandr.Nedvedicky@Sun.COM>2009-10-22 10:04:06 +0200
committerAlexandr Nedvedicky <Alexandr.Nedvedicky@Sun.COM>2009-10-22 10:04:06 +0200
commit201a9dc86311d2f37869851fa1f76578d8ccb71b (patch)
treeace2616fa2bbdd20ee3b8a50ec320b1b22c5293f /usr/src
parent2b55f462b750ad10f073cfce2b410dfcc021f38b (diff)
downloadillumos-gate-201a9dc86311d2f37869851fa1f76578d8ccb71b.tar.gz
6859479 IPF dup-to prevents packets to be forwarded to destination
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/inet/ipf/fil.c3
-rw-r--r--usr/src/uts/common/inet/ipf/netinet/ip_compat.h2
2 files changed, 4 insertions, 1 deletions
diff --git a/usr/src/uts/common/inet/ipf/fil.c b/usr/src/uts/common/inet/ipf/fil.c
index 9cb19345b6..a426a43591 100644
--- a/usr/src/uts/common/inet/ipf/fil.c
+++ b/usr/src/uts/common/inet/ipf/fil.c
@@ -2616,6 +2616,9 @@ ipf_stack_t *ifs;
*/
if ((fr != NULL) && (pass & FR_DUP)) {
mc = M_DUPLICATE(fin->fin_m);
+#ifdef _KERNEL
+ mc->b_rptr += fin->fin_ipoff;
+#endif
}
if (pass & (FR_RETRST|FR_RETICMP)) {
diff --git a/usr/src/uts/common/inet/ipf/netinet/ip_compat.h b/usr/src/uts/common/inet/ipf/netinet/ip_compat.h
index c14065166b..18c4fad4e9 100644
--- a/usr/src/uts/common/inet/ipf/netinet/ip_compat.h
+++ b/usr/src/uts/common/inet/ipf/netinet/ip_compat.h
@@ -301,7 +301,7 @@ typedef unsigned int u_32_t;
# define GETKTIME(x) uniqtime((struct timeval *)x)
# define MSGDSIZE(x) msgdsize(x)
# define M_LEN(x) ((x)->b_wptr - (x)->b_rptr)
-# define M_DUPLICATE(x) dupmsg((x))
+# define M_DUPLICATE(x) copymsg((x))
# define MTOD(m,t) ((t)((m)->b_rptr))
# define MTYPE(m) ((m)->b_datap->db_type)
# define FREE_MB_T(m) freemsg(m)