diff options
-rw-r--r-- | sys/netinet/ip_fw_nat.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/netinet/ip_fw_nat.c b/sys/netinet/ip_fw_nat.c index bac0d41..3a4f4a1 100644 --- a/sys/netinet/ip_fw_nat.c +++ b/sys/netinet/ip_fw_nat.c @@ -318,11 +318,12 @@ ipfw_nat(struct ip_fw_args *args, struct cfg_nat *t, struct mbuf *m) c = mtod(mcl, char *); if (args->oif == NULL) retval = LibAliasIn(t->lib, c, - MCLBYTES); + mcl->m_len + M_TRAILINGSPACE(mcl)); else retval = LibAliasOut(t->lib, c, - MCLBYTES); - if (retval != PKT_ALIAS_OK) { + mcl->m_len + M_TRAILINGSPACE(mcl)); + if (retval != PKT_ALIAS_OK && + retval != PKT_ALIAS_FOUND_HEADER_FRAGMENT) { /* XXX - should i add some logging? */ m_free(mcl); badnat: |