summaryrefslogtreecommitdiffstats
path: root/LogReceiver/networkmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'LogReceiver/networkmanager.cpp')
-rw-r--r--LogReceiver/networkmanager.cpp29
1 files changed, 17 insertions, 12 deletions
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<QString> 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);