static int ProtoAliasIn(struct libalias *la, struct in_addr ip_src, struct in_addr *ip_dst, u_char ip_p, u_short *ip_sum) { /* Handle incoming IP packets. The only thing which is done in this case is to alias the dest IP address of the packet to our inside machine. */ struct alias_link *lnk; LIBALIAS_LOCK_ASSERT(la); /* Return if proxy-only mode is enabled */ if (la->packetAliasMode & PKT_ALIAS_PROXY_ONLY) return (PKT_ALIAS_OK); lnk = FindProtoIn(la, ip_src, *ip_dst, ip_p); if (lnk != NULL) { struct in_addr original_address; original_address = GetOriginalAddress(lnk); /* Restore original IP address */ DifferentialChecksum(ip_sum, &original_address, ip_dst, 2); *ip_dst = original_address; return (PKT_ALIAS_OK); } return (PKT_ALIAS_IGNORED); }
static int ProtoAliasIn(struct ip *pip) { /* Handle incoming IP packets. The only thing which is done in this case is to alias the dest IP address of the packet to our inside machine. */ struct alias_link *link; /* Return if proxy-only mode is enabled */ if (packetAliasMode & PKT_ALIAS_PROXY_ONLY) return PKT_ALIAS_OK; link = FindProtoIn(pip->ip_src, pip->ip_dst, pip->ip_p); if (link != NULL) { struct in_addr original_address; original_address = GetOriginalAddress(link); /* Restore original IP address */ DifferentialChecksum(&pip->ip_sum, (u_short *) &original_address, (u_short *) &pip->ip_dst, 2); pip->ip_dst = original_address; return(PKT_ALIAS_OK); } return(PKT_ALIAS_IGNORED); }