diff --git a/lib/libnet/network_interfaces.cpp b/lib/libnet/network_interfaces.cpp index 341b39628..3b87a0ee3 100644 --- a/lib/libnet/network_interfaces.cpp +++ b/lib/libnet/network_interfaces.cpp @@ -349,13 +349,18 @@ bool addLoopbackDevice(const std::string name, const bool automatic_start) return write_interface("/etc/network/interfaces", name, automatic_start, "inet", "loopback", attribute); } -bool setStaticAttributes(const std::string name, const bool automatic_start, const std::string address, const std::string netmask, const std::string broadcast, const std::string gateway) +bool setStaticAttributes(const std::string name, const bool automatic_start, const std::string address, const std::string netmask, const std::string broadcast, const std::string gateway, bool wireless) { std::map attribute; attribute["address"] = address; attribute["netmask"] = netmask; + if(wireless) { + attribute["pre-up"] = "/etc/network/pre-" + name + ".sh"; + attribute["post-down"] = "/etc/network/post-" + name + ".sh"; + } + if (!broadcast.empty()) attribute["broadcast"] = broadcast; @@ -365,12 +370,17 @@ bool setStaticAttributes(const std::string name, const bool automatic_start, con return write_interface("/etc/network/interfaces", name, automatic_start, "inet", "static", attribute); } -bool setDhcpAttributes(const std::string name, const bool automatic_start) +bool setDhcpAttributes(const std::string name, const bool automatic_start, bool wireless) { std::map attribute; char hostname[100]; if(gethostname(hostname, sizeof(hostname)) == 0) attribute["hostname"] = hostname; + if(wireless) { + attribute["pre-up"] = "/etc/network/pre-" + name + ".sh"; + attribute["post-down"] = "/etc/network/post-" + name + ".sh"; + } + return write_interface("/etc/network/interfaces", name, automatic_start, "inet", "dhcp", attribute); } diff --git a/lib/libnet/network_interfaces.h b/lib/libnet/network_interfaces.h index 56bbe43a3..a9e526159 100644 --- a/lib/libnet/network_interfaces.h +++ b/lib/libnet/network_interfaces.h @@ -28,8 +28,8 @@ bool getInetAttributes(const std::string name, bool &automatic_start, std::strin bool addLoopbackDevice(const std::string name, const bool automatic_start); -bool setStaticAttributes(const std::string name, const bool automatic_start, const std::string address, const std::string netmask, const std::string broadcast, const std::string gateway); +bool setStaticAttributes(const std::string name, const bool automatic_start, const std::string address, const std::string netmask, const std::string broadcast, const std::string gateway, bool wireless = false); -bool setDhcpAttributes(const std::string name, const bool automatic_start); +bool setDhcpAttributes(const std::string name, const bool automatic_start, bool wireless = false); #endif /* __network_interfaces_h__ */