Thanks for response. Looking at some other options as well. Can we change outbound network interface dynamically for specific process ?
looked at use IO::Interface qw(:flags);getIng permission denied when trying to change. Is this require root permission. can we do without root, want to implement in user space.
my $s = IO::Socket::INET->new(Proto => 'udp');
my @interfaces = $s->if_list;
for my $if (@interfaces) {
print "interface = $if\n";
my $flags = $s->if_flags($if);
print "addr = ",$s->if_addr($if),"\n",
"broadcast = ",$s->if_broadcast($if),"\n",
"netmask = ",$s->if_netmask($if),"\n",
"dstaddr = ",$s->if_dstaddr($if),"\n",
print "is running\n" if $flags & IFF_RUNNING;
print "is broadcast\n" if $flags & IFF_BROADCAST;
print "is loopback\n" if $flags & IFF_LOOPBACK;
print "is promiscuous\n" if $flags & IFF_PROMISC;
print "is multicast\n" if $flags & IFF_MULTICAST;
print "is notrailers\n" if $flags & IFF_NOTRAILERS;
print "is noarp\n" if $flags & IFF_NOARP;
}
my $interface = $s->addr_to_interface('127.0.0.1');
# my $oldaddr = $s->if_addr('eth0');
$s->if_addr('lo','X.X.X.X') || die "couldn't set address: $!";