Index: sys/netinet/libalias/alias.c =================================================================== --- sys/netinet/libalias/alias.c +++ sys/netinet/libalias/alias.c @@ -1233,7 +1233,7 @@ struct ip *pip; LIBALIAS_LOCK(la); - pip = (struct ip *)ptr; + pip = (struct ip *)(void *)ptr; lnk = AddFragmentPtrLink(la, pip->ip_src, pip->ip_id); iresult = PKT_ALIAS_ERROR; if (lnk != NULL) { @@ -1252,7 +1252,7 @@ struct ip *pip; LIBALIAS_LOCK(la); - pip = (struct ip *)ptr; + pip = (struct ip *)(void *)ptr; lnk = FindFragmentPtr(la, pip->ip_src, pip->ip_id); if (lnk != NULL) { GetFragmentPtr(lnk, &fptr); @@ -1278,8 +1278,8 @@ LIBALIAS_LOCK(la); (void)la; - pip = (struct ip *)ptr; - fpip = (struct ip *)ptr_fragment; + pip = (struct ip *)(void *)ptr; + fpip = (struct ip *)(void *)ptr_fragment; DifferentialChecksum(&fpip->ip_sum, &pip->ip_dst, &fpip->ip_dst, 2); @@ -1312,7 +1312,8 @@ struct in_addr alias_addr; struct ip *pip; int iresult; - + struct in_addr dst; + if (la->packetAliasMode & PKT_ALIAS_REVERSE) { la->packetAliasMode &= ~PKT_ALIAS_REVERSE; iresult = LibAliasOutLocked(la, ptr, maxpacketsize, 1); @@ -1321,7 +1322,7 @@ } HouseKeeping(la); ClearCheckNewLink(la); - pip = (struct ip *)ptr; + pip = (struct ip *)(void *)ptr; alias_addr = pip->ip_dst; /* Defense against mangled packets */ @@ -1365,13 +1366,19 @@ if (error == 0) iresult = PKT_ALIAS_OK; else + { iresult = ProtoAliasIn(la, pip->ip_src, - &pip->ip_dst, pip->ip_p, &pip->ip_sum); + &dst, pip->ip_p, &pip->ip_sum); + pip->ip_dst = dst; + } } break; default: - iresult = ProtoAliasIn(la, pip->ip_src, &pip->ip_dst, + { + iresult = ProtoAliasIn(la, pip->ip_src, &dst, pip->ip_p, &pip->ip_sum); + pip->ip_dst = dst; + } break; } @@ -1387,8 +1394,9 @@ } } } else { - iresult = FragmentIn(la, pip->ip_src, &pip->ip_dst, pip->ip_id, + iresult = FragmentIn(la, pip->ip_src, &dst, pip->ip_id, &pip->ip_sum); + pip->ip_dst = dst; } getout: @@ -1443,7 +1451,7 @@ int iresult; struct in_addr addr_save; struct ip *pip; - + struct in_addr src; if (la->packetAliasMode & PKT_ALIAS_REVERSE) { la->packetAliasMode &= ~PKT_ALIAS_REVERSE; iresult = LibAliasInLocked(la, ptr, maxpacketsize); @@ -1452,7 +1460,7 @@ } HouseKeeping(la); ClearCheckNewLink(la); - pip = (struct ip *)ptr; + pip = (struct ip *)(void *)ptr; /* Defense against mangled packets */ if (ntohs(pip->ip_len) > maxpacketsize @@ -1514,17 +1522,24 @@ if (error == 0) iresult = PKT_ALIAS_OK; else - iresult = ProtoAliasOut(la, &pip->ip_src, + { + iresult = ProtoAliasOut(la, &src, pip->ip_dst, pip->ip_p, &pip->ip_sum, create); + pip->ip_src = src; + } } break; default: - iresult = ProtoAliasOut(la, &pip->ip_src, + { + iresult = ProtoAliasOut(la, &src, pip->ip_dst, pip->ip_p, &pip->ip_sum, create); + pip->ip_src = src; + } break; } } else { - iresult = FragmentOut(la, &pip->ip_src, &pip->ip_sum); + iresult = FragmentOut(la, &src, &pip->ip_sum); + pip->ip_src = src; } SetDefaultAliasAddress(la, addr_save); @@ -1545,7 +1560,7 @@ int iresult = PKT_ALIAS_IGNORED; LIBALIAS_LOCK(la); - pip = (struct ip *)ptr; + pip = (struct ip *)(void *)ptr; /* Defense against mangled packets */ if (ntohs(pip->ip_len) > maxpacketsize Index: sys/netinet/libalias/alias_db.c =================================================================== --- sys/netinet/libalias/alias_db.c +++ sys/netinet/libalias/alias_db.c @@ -2663,7 +2663,7 @@ static ipfw_insn * fill_ip(ipfw_insn * cmd1, enum ipfw_opcodes opcode, u_int32_t addr) { - ipfw_insn_ip *cmd = (ipfw_insn_ip *) cmd1; + ipfw_insn_ip *cmd = (ipfw_insn_ip *)(void *) cmd1; cmd->addr.s_addr = addr; return fill_cmd(cmd1, opcode, F_INSN_SIZE(ipfw_insn_u32), 0, 0); @@ -2672,7 +2672,7 @@ static ipfw_insn * fill_one_port(ipfw_insn * cmd1, enum ipfw_opcodes opcode, u_int16_t port) { - ipfw_insn_u16 *cmd = (ipfw_insn_u16 *) cmd1; + ipfw_insn_u16 *cmd = (ipfw_insn_u16 *)(void *) cmd1; cmd->ports[0] = cmd->ports[1] = port; return fill_cmd(cmd1, opcode, F_INSN_SIZE(ipfw_insn_u16), 0, 0); @@ -2695,10 +2695,10 @@ cmd = fill_ip(cmd, O_IP_DST, da.s_addr); cmd = fill_one_port(cmd, O_IP_DSTPORT, dp); - rule->act_ofs = (u_int32_t *) cmd - (u_int32_t *) rule->cmd; + rule->act_ofs = (u_int32_t *)(void *) cmd - (u_int32_t *)(void *) rule->cmd; cmd = fill_cmd(cmd, action, F_INSN_SIZE(ipfw_insn), 0, 0); - rule->cmd_len = (u_int32_t *) cmd - (u_int32_t *) rule->cmd; + rule->cmd_len = (u_int32_t *)(void *) cmd - (u_int32_t *)(void *) rule->cmd; return ((char *)cmd - (char *)buf); } Index: sys/netinet/libalias/alias_mod.c =================================================================== --- sys/netinet/libalias/alias_mod.c +++ sys/netinet/libalias/alias_mod.c @@ -127,7 +127,7 @@ #ifndef _KERNEL /* Dll manipulation code - this code is not thread safe... */ -SLIST_HEAD(dll_chain, dll) dll_chain = SLIST_HEAD_INITIALIZER(dll_chain); +static SLIST_HEAD(dll_chain, dll) dll_chain = SLIST_HEAD_INITIALIZER(dll_chain); int attach_dll(struct dll *p) { Index: sys/netinet/libalias/alias_proxy.c =================================================================== --- sys/netinet/libalias/alias_proxy.c +++ sys/netinet/libalias/alias_proxy.c @@ -425,7 +425,7 @@ int accumulate; u_short *sptr; - sptr = (u_short *) option; + sptr = (u_short *)(void *) option; accumulate = 0; for (i = 0; i < OPTION_LEN_INT16; i++) accumulate -= *(sptr++);