gboolean address_seems_public (GInetAddress *addr) { return (g_inet_address_get_is_loopback (addr) == FALSE && g_inet_address_get_is_site_local (addr) == FALSE && g_inet_address_get_is_multicast (addr) == FALSE && g_inet_address_get_is_mc_link_local (addr) == FALSE && g_inet_address_get_is_mc_node_local (addr) == FALSE && g_inet_address_get_is_mc_site_local (addr) == FALSE && g_inet_address_get_is_mc_org_local (addr) == FALSE && g_inet_address_get_is_mc_global (addr) == FALSE); }
/** * g_network_monitor_base_add_network: * @monitor: the #GNetworkMonitorBase * @network: a #GInetAddressMask * * Adds @network to @monitor's list of available networks. * * Since: 2.32 */ void g_network_monitor_base_add_network (GNetworkMonitorBase *monitor, GInetAddressMask *network) { int i; for (i = 0; i < monitor->priv->networks->len; i++) { if (g_inet_address_mask_equal (monitor->priv->networks->pdata[i], network)) return; } g_ptr_array_add (monitor->priv->networks, g_object_ref (network)); if (g_inet_address_mask_get_length (network) == 0) { switch (g_inet_address_mask_get_family (network)) { case G_SOCKET_FAMILY_IPV4: monitor->priv->have_ipv4_default_route = TRUE; break; case G_SOCKET_FAMILY_IPV6: monitor->priv->have_ipv6_default_route = TRUE; break; default: break; } } /* Don't emit network-changed when multicast-link-local routing * changes. This rather arbitrary decision is mostly because it * seems to change quite often... */ if (g_inet_address_get_is_mc_link_local (g_inet_address_mask_get_address (network))) return; queue_network_changed (monitor); }