VALUE set_if_hash(VALUE rb_if_hash, struct ifaddrs *ifa, int family){ char *if_host, *if_netmask, *if_name; if_name = get_if_name(ifa); if_host = malloc(sizeof(char) * NI_MAXHOST); if (! get_if_host(ifa, if_host)) rb_raise(rb_eSystemCallError, "Can't get IP from %s", if_name); if_netmask = malloc(sizeof(char) * NI_MAXHOST); if (! get_if_netmask(ifa, if_netmask)) rb_raise(rb_eSystemCallError, "Can't get IP from %s", if_name); char *str_inet_name = "inet_addr_v4"; char *str_inet_name6 = "inet_addr_v6"; char *str_netmask_name = "netmask_v4"; char *str_netmask_name6 = "netmask_v6"; VALUE rb_if_data_hash = rb_hash_aref(rb_if_hash, rb_str_intern(rb_str_new2(if_name))); if (rb_if_data_hash == Qnil) { rb_if_data_hash = rb_hash_new(); rb_hash_aset(rb_if_hash, rb_str_intern(rb_str_new2(if_name)), rb_if_data_hash); } rb_hash_aset(rb_if_data_hash, rb_str_intern(rb_str_new2((family == AF_INET) ? str_inet_name : str_inet_name6)), rb_str_new2(if_host)); rb_hash_aset(rb_if_data_hash, rb_str_intern(rb_str_new2((family == AF_INET) ? str_netmask_name : str_netmask_name6)), rb_str_new2(if_netmask)); return rb_if_data_hash; }
NetworkInterface* Ntop::getHistoricalInterface() { return (getInterface(get_if_name(historical_interface_id))); };