static void add_network (GNetworkMonitorNetlink *nl, GSocketFamily family, gint dest_len, guint8 *dest, guint8 *gateway) { GInetAddress *dest_addr; GInetAddressMask *network; if (dest) dest_addr = g_inet_address_new_from_bytes (dest, family); else dest_addr = g_inet_address_new_any (family); network = g_inet_address_mask_new (dest_addr, dest_len, NULL); g_object_unref (dest_addr); g_return_if_fail (network != NULL); if (nl->priv->dump_networks) g_ptr_array_add (nl->priv->dump_networks, network); else { g_network_monitor_base_add_network (G_NETWORK_MONITOR_BASE (nl), network); g_object_unref (network); } }
static ArvDevice * arv_gv_interface_open_device (ArvInterface *interface, const char *device_id) { ArvGvInterface *gv_interface; ArvDevice *device = NULL; ArvGvInterfaceDeviceInfos *device_infos; GInetAddress *device_address; gv_interface = ARV_GV_INTERFACE (interface); if (device_id == NULL) { GList *device_list; device_list = g_hash_table_get_values (gv_interface->priv->devices); device_infos = device_list != NULL ? device_list->data : NULL; g_list_free (device_list); } else { device_infos = g_hash_table_lookup (gv_interface->priv->devices, device_id); if (device_infos == NULL) device_infos = g_hash_table_lookup (gv_interface->priv->devices_by_mac, device_id); } if (device_infos == NULL) return NULL; device_address = g_inet_address_new_from_bytes (&device_infos->discovery_data[ARV_GVBS_CURRENT_IP_ADDRESS_OFFSET], G_SOCKET_FAMILY_IPV4); device = arv_gv_device_new (device_infos->interface_address, device_address); g_object_unref (device_address); return device; }
/* TODO: Should this take an array instead? */ static VALUE rg_s_new_from_bytes(int argc, VALUE *argv, G_GNUC_UNUSED VALUE self) { VALUE rbbytes, rbfamily; guint8 *bytes; GSocketFamily family; rb_scan_args(argc, argv, "11", &rbbytes, &rbfamily); bytes = (guint8 *)RVAL2CSTR(rbbytes); family = RVAL2GSOCKETFAMILY(rbfamily); /* TODO: Should check encoding. */ /* TODO: We can't pass bytes as such, as it will be NULL-terminated. */ /* TODO: Do we need to deal with G_SOCKET_FAMILY_UNIX? */ switch (family) { case G_SOCKET_FAMILY_IPV4: if (RSTRING_LEN(rbbytes) != 4) rb_raise(rb_eArgError, "string containing 4 bytes expected"); break; case G_SOCKET_FAMILY_IPV6: if (RSTRING_LEN(rbbytes) != 16) rb_raise(rb_eArgError, "string containing 16 bytes expected"); break; case G_SOCKET_FAMILY_INVALID: case G_SOCKET_FAMILY_UNIX: rb_raise(rb_eArgError, "invalid family: %d", family); default: rb_raise(rb_eArgError, "unknown family: %d", family); break; } return GOBJ2RVAL_UNREF(g_inet_address_new_from_bytes(bytes, family)); }
static GInetAddress * _device_infos_to_ginetaddress (ArvGvInterfaceDeviceInfos *device_infos) { GInetAddress *device_address; device_address = g_inet_address_new_from_bytes (&device_infos->discovery_data[ARV_GVBS_CURRENT_IP_ADDRESS_OFFSET], G_SOCKET_FAMILY_IPV4); return device_address; }
static gchar * get_address_string (Addr * addr) { gchar *res; GInetAddress *inet; inet = g_inet_address_new_from_bytes (addr->bytes, addr->size == 4 ? G_SOCKET_FAMILY_IPV4 : G_SOCKET_FAMILY_IPV6); res = g_inet_address_to_string (inet); g_object_unref (inet); return res; }
GSocketAddress * arv_fake_camera_get_stream_address (ArvFakeCamera *camera) { GSocketAddress *stream_socket_address; GInetAddress *inet_address; guint32 value; g_return_val_if_fail (ARV_IS_FAKE_CAMERA (camera), NULL); value = GUINT32_FROM_BE (_get_register (camera, ARV_GVBS_STREAM_CHANNEL_0_IP_ADDRESS_OFFSET)); inet_address = g_inet_address_new_from_bytes ((guint8 *) &value, G_SOCKET_FAMILY_IPV4); stream_socket_address = g_inet_socket_address_new (inet_address, _get_register (camera, ARV_GVBS_STREAM_CHANNEL_0_PORT_OFFSET)); g_object_unref (inet_address); return stream_socket_address; }
static void remove_network (GNetworkMonitorNetlink *nl, GSocketFamily family, gint dest_len, guint8 *dest, guint8 *gateway) { GInetAddress *dest_addr; GInetAddressMask *network; if (dest) dest_addr = g_inet_address_new_from_bytes (dest, family); else dest_addr = g_inet_address_new_any (family); network = g_inet_address_mask_new (dest_addr, dest_len, NULL); g_object_unref (dest_addr); g_return_if_fail (network != NULL); if (nl->priv->dump_networks) { GInetAddressMask **dump_networks = (GInetAddressMask **)nl->priv->dump_networks->pdata; int i; for (i = 0; i < nl->priv->dump_networks->len; i++) { if (g_inet_address_mask_equal (network, dump_networks[i])) g_ptr_array_remove_index_fast (nl->priv->dump_networks, i--); } g_object_unref (network); } else { g_network_monitor_base_remove_network (G_NETWORK_MONITOR_BASE (nl), network); g_object_unref (network); } }