diff --git a/gtests/net/packetdrill/run_packet.c b/gtests/net/packetdrill/run_packet.c index fa4033bef4b955eaa9ce54068e82db8a117472bb..5a1af9a190b941a1c99be5b0af93b706100b36a7 100644 --- a/gtests/net/packetdrill/run_packet.c +++ b/gtests/net/packetdrill/run_packet.c @@ -3274,24 +3274,17 @@ static int do_inbound_script_packet( packet_payload_len(live_packet); } - if (live_packet->ipv4 != NULL) { - if (live_packet->ipv4->src_ip.s_addr == 0) { - DEBUGP("live_packet->ipv4->src_ip.s_addr == 0\n"); - state->socket_under_test = setup_new_child_socket(state, packet); + if ((state->socket_under_test == NULL) && + (((live_packet->ipv4 != NULL) && + (live_packet->ipv4->src_ip.s_addr == htonl(INADDR_ANY))) || + ((live_packet->ipv6 != NULL) && + (IN6_IS_ADDR_UNSPECIFIED(&live_packet->ipv6->src_ip))))) { struct tuple live_inbound; - socket_get_inbound(&state->socket_under_test->live, &live_inbound); - set_packet_tuple(live_packet, &live_inbound); - } - } - if (live_packet->ipv6 != NULL) { - if (IN6_IS_ADDR_UNSPECIFIED(&live_packet->ipv6->src_ip)) { - DEBUGP("live_packet->ipv6->src_ip.s_addr == 0\n"); + DEBUGP("live_packet has wildcard source address\n"); state->socket_under_test = setup_new_child_socket(state, packet); - struct tuple live_inbound; socket_get_inbound(&state->socket_under_test->live, &live_inbound); set_packet_tuple(live_packet, &live_inbound); - } } /* Inject live packet into kernel. */