From a8087a7c1b83ae7770f2b1c278d0eb5318b7e33e Mon Sep 17 00:00:00 2001 From: Niklas Date: Wed, 28 Sep 2011 17:44:42 +0200 Subject: added a select field to the manual conf gui. also fixed some bugs in the ip4_manualConf function --- LogReceiver/networkmanager.cpp | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'LogReceiver/networkmanager.cpp') diff --git a/LogReceiver/networkmanager.cpp b/LogReceiver/networkmanager.cpp index 1de0591..80aa8a1 100644 --- a/LogReceiver/networkmanager.cpp +++ b/LogReceiver/networkmanager.cpp @@ -147,6 +147,7 @@ int NetworkManager::bringInterfaceUpDown(QString ifname, bool up) { int NetworkManager::ip4_setManualConfiguration(QString ifname, QString ipAddress, QString netmask, QString broadcast, QString gateway, int metric, int af, bool up, QString pathToResolvConf, QList nameServer) { + //bring the interface up bringInterfaceUpDown(ifname, up); //set configuration @@ -155,7 +156,7 @@ int NetworkManager::ip4_setManualConfiguration(QString ifname, QString ipAddress replaceDefaultRoute(ifname, gateway, metric, af); //write resolv.conf writeResolvConf(pathToResolvConf, ifname, nameServer); - + return 0; } int NetworkManager::ip4_configureInterface(QString ifname, QString ipAddress, @@ -166,15 +167,15 @@ int NetworkManager::ip4_configureInterface(QString ifname, QString ipAddress, struct nl_addr * local; struct rtnl_addr * addr = NULL; int retval = 0; - int iface_idx, err; + int iface_idx, err, prefixLength; - QByteArray ba_ifn = ifname.toAscii(); + QByteArray ba_ifn = ifname.trimmed().toAscii(); char * ifn = ba_ifn.data(); - QByteArray ba_ip = ipAddress.toAscii(); + QByteArray ba_ip = ipAddress.trimmed().toAscii(); char * ipaddr = ba_ip.data(); - QByteArray ba_bc = broadcast.toAscii(); + QByteArray ba_bc = broadcast.trimmed().toAscii(); char * bcaddr = ba_bc.data(); rtsock = nl_handle_alloc(); @@ -199,7 +200,9 @@ int NetworkManager::ip4_configureInterface(QString ifname, QString ipAddress, qDebug() << "error with set local addr"; } - rtnl_addr_set_prefixlen(addr, ip4_netmaskToPrefix(netmask)); + prefixLength = ip4_netmaskToPrefix(ipAddress,netmask); + qDebug() << "prefix length:" << prefixLength; + rtnl_addr_set_prefixlen(addr, prefixLength); local = nl_addr_parse(bcaddr, af); err = rtnl_addr_set_broadcast(addr, local); @@ -210,7 +213,8 @@ int NetworkManager::ip4_configureInterface(QString ifname, QString ipAddress, rtnl_addr_set_ifindex(addr, iface_idx); - retval = sync_address(ifn, iface_idx, af, addr, 1); + + retval = sync_address(ifn, iface_idx, af, addr); if(retval < 0) { qDebug() << "error in sync_address"; } @@ -219,7 +223,7 @@ int NetworkManager::ip4_configureInterface(QString ifname, QString ipAddress, return retval; } -int NetworkManager::ip4_netmaskToPrefix(QString netmask) { +int NetworkManager::ip4_netmaskToPrefix(QString ipAddr, QString netmask) { int retval = -1; QNetworkAddressEntry nae; @@ -227,8 +231,8 @@ int NetworkManager::ip4_netmaskToPrefix(QString netmask) { qDebug() << "error: netmask is empty"; return retval; } - - nae.setNetmask(QHostAddress(netmask)); + nae.setIp(QHostAddress(ipAddr)); + nae.setNetmask(QHostAddress(netmask.trimmed())); retval = nae.prefixLength(); return retval; @@ -241,7 +245,7 @@ int NetworkManager::ip4_netmaskToPrefix(QString netmask) { * -1 if something went wrong. else 0 */ int NetworkManager::sync_address(const char *iface, int ifindex, int family, - struct rtnl_addr *addr, int num_addrs) { + struct rtnl_addr *addr) { struct nl_handle *nlh; struct nl_cache *addr_cache; @@ -352,6 +356,7 @@ int NetworkManager::sync_address(const char *iface, int ifindex, int family, if (buf_valid == 0) { //nm_log_dbg (log_domain, "(%s): adding address '%s/%d'", //iface, buf, nl_addr_get_prefixlen (nladdr)); + qDebug() << "buf valid adding addr"; } err = rtnl_addr_add(nlh, addr, 0); @@ -359,7 +364,7 @@ int NetworkManager::sync_address(const char *iface, int ifindex, int family, //nm_log_err (log_domain, // "(%s): error %d returned from rtnl_addr_add():\n%s", // iface, err, nl_geterror ()); - qDebug() << "error with add addr"; + qDebug() << "error with add addr"<< strerror(-err); } rtnl_addr_put(addr); -- cgit v1.2.3-55-g7522