From 6df954674289b22c894b16c0969ddca535ef8216 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Thu, 4 Sep 2014 13:36:25 -0400 Subject: Fix for missing broadcast address on Linux Ethernet taps. --- osnet/LinuxEthernetTap.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'osnet/LinuxEthernetTap.cpp') diff --git a/osnet/LinuxEthernetTap.cpp b/osnet/LinuxEthernetTap.cpp index 7e20b75f..1bd066c3 100644 --- a/osnet/LinuxEthernetTap.cpp +++ b/osnet/LinuxEthernetTap.cpp @@ -224,8 +224,13 @@ bool LinuxEthernetTap::addIP(const InetAddress &ip) long cpid = (long)vfork(); if (cpid == 0) { Utils::redirectUnixOutputs("/dev/null",(const char *)0); - ::execl("/sbin/ip","/sbin/ip","addr","add",ip.toString().c_str(),"dev",_dev.c_str(),(const char *)0); - ::execl("/usr/sbin/ip","/usr/sbin/ip","addr","add",ip.toString().c_str(),"dev",_dev.c_str(),(const char *)0); + if (ip.isV4()) { + ::execl("/sbin/ip","/sbin/ip","addr","add",ip.toString().c_str(),"broadcast",ip.broadcast().toIpString().c_str(),"dev",_dev.c_str(),(const char *)0); + ::execl("/usr/sbin/ip","/usr/sbin/ip","addr","add",ip.toString().c_str(),"broadcast",ip.broadcast().toIpString().c_str(),"dev",_dev.c_str(),(const char *)0); + } else { + ::execl("/sbin/ip","/sbin/ip","addr","add",ip.toString().c_str(),"dev",_dev.c_str(),(const char *)0); + ::execl("/usr/sbin/ip","/usr/sbin/ip","addr","add",ip.toString().c_str(),"dev",_dev.c_str(),(const char *)0); + } ::_exit(-1); } else if (cpid > 0) { int exitcode = -1; -- cgit v1.2.3