static int ProtoAliasOut(struct libalias *la, struct in_addr *ip_src, struct in_addr ip_dst, u_char ip_p, u_short *ip_sum, int create) { /* Handle outgoing IP packets. The only thing which is done in this case is to alias the source IP address of the packet. */ struct alias_link *lnk; LIBALIAS_LOCK_ASSERT(la); (void)create; /* Return if proxy-only mode is enabled */ if (la->packetAliasMode & PKT_ALIAS_PROXY_ONLY) return (PKT_ALIAS_OK); lnk = FindProtoOut(la, *ip_src, ip_dst, ip_p); if (lnk != NULL) { struct in_addr alias_address; alias_address = GetAliasAddress(lnk); /* Change source address */ DifferentialChecksum(ip_sum, &alias_address, ip_src, 2); *ip_src = alias_address; return (PKT_ALIAS_OK); } return (PKT_ALIAS_IGNORED); }
static int ProtoAliasOut(struct ip *pip) { /* Handle outgoing IP packets. The only thing which is done in this case is to alias the source IP address of the packet. */ struct alias_link *link; /* Return if proxy-only mode is enabled */ if (packetAliasMode & PKT_ALIAS_PROXY_ONLY) return PKT_ALIAS_OK; link = FindProtoOut(pip->ip_src, pip->ip_dst, pip->ip_p); if (link != NULL) { struct in_addr alias_address; alias_address = GetAliasAddress(link); /* Change source address */ DifferentialChecksum(&pip->ip_sum, (u_short *) &alias_address, (u_short *) &pip->ip_src, 2); pip->ip_src = alias_address; return(PKT_ALIAS_OK); } return(PKT_ALIAS_IGNORED); }