/** Is a wrapper function to calc_broadcast that receives the IP address and netsmask as QString and returns the broadcast value also as a QString, or NULL if it couldn't be calculated. */ QString KAddressValidator::calculateBroadcast(QString addr, QString netmask){ struct in_addr _addr, _netmask, _network; int prefix = 0; QString s; if (addr.isNull() || netmask.isNull()) return NULL; //bad address if (!inet_pton(AF_INET,addr.latin1(),&_addr)) return NULL; //bad address else { if (!inet_pton(AF_INET,netmask.latin1(),&_netmask)) return NULL; //bad address else { prefix = mask2prefix(_netmask.s_addr); _network.s_addr = calc_broadcast(_addr.s_addr, prefix); char * char_network = new char[20]; if (!inet_ntop(AF_INET,&_network,char_network,20)) return NULL; else s = char_network; } } return s; }
static int ipv4_mask_to_int(const char *prefix) { int ret; struct in_addr in; ret = inet_pton(AF_INET, prefix, &in); if (ret == 0) return -1; return mask2prefix(in); }
tscript_value * tscript_ext_net_mask2prefix(tscript_value *arg) { return tscript_value_create_number(mask2prefix( tscript_value_as_string(tscript_value_convert_to_string(arg)))); }