From 658b9c44802ae9791e8ce06a38a9ff84647d9463 Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Thu, 9 Mar 2017 15:59:44 +0100 Subject: [PATCH] dnsreplay: Add `--source-ip` and `--source-port` options --- pdns/dnsreplay.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pdns/dnsreplay.cc b/pdns/dnsreplay.cc index f6b27d2693..4e6874ecb4 100644 --- a/pdns/dnsreplay.cc +++ b/pdns/dnsreplay.cc @@ -709,7 +709,9 @@ try ("speedup", po::value()->default_value(1), "replay at this speedup") ("timeout-msec", po::value()->default_value(500), "wait at least this many milliseconds for a reply") ("ecs-stamp", "Add original IP address to ECS in replay") - ("ecs-mask", po::value(), "Replace first octet of src IP address with this value in ECS"); + ("ecs-mask", po::value(), "Replace first octet of src IP address with this value in ECS") + ("source-ip", po::value()->default_value(""), "IP to send the replayed packet from") + ("source-port", po::value()->default_value(0), "Port to send the replayed packet from"); po::options_description alloptions; po::options_description hidden("hidden options"); @@ -759,6 +761,10 @@ try s_socket= new Socket(AF_INET, SOCK_DGRAM); s_socket->setNonBlocking(); + + if(g_vm.count("source-ip") && !g_vm["source-ip"].as().empty()) + s_socket->bind(ComboAddress(g_vm["source-ip"].as(), g_vm["source-port"].as())); + setSocketReceiveBuffer(s_socket->getHandle(), 2000000); setSocketSendBuffer(s_socket->getHandle(), 2000000); -- 2.47.2